|
▼mickeypapa さん:
>月の増減は循環しながら
>月が12→1の時に年が増加
>月が1→12の時に年が減少
>と言うような動作を考えておりました。
↑これを見過ごしていました。
新規ブックのユーザ―フォーム(Userform1)に
Textbox1---年入力表示用(西暦)
SpinButton1---Textbox1の値の上下の変更用
Textbox2---月入力表示用(1〜12)
SpinButton2---Textbox2の値の上下の変更用
を配置してください。
コントロールのプロパティは既定値のままで変更しないで下さい。
他には、Sheet1というシート名を持つシートのセルA1とA2を使用します。
上記のUserform1のモジュールに
とここまでは前回と同じで・・・・、
'================================================================
Private Sub SpinButton1_Change()
TextBox1.Value = SpinButton1.Value
End Sub
'=================================================================
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
Cancel = True
If IsNumeric(.Text) Then
If Val(.Text) >= 1900 And Val(.Text) <= 9999 Then
SpinButton1.Value = TextBox1.Text
Cancel = False
End If
End If
End With
End Sub
'=================================================================
Private Sub SpinButton2_Change()
If SpinButton2.Value = 13 Then
SpinButton2.Value = 1
With Worksheets("sheet1").Range("a1")
.Value = .Value + 1
TextBox1.Text = .Value
End With
ElseIf SpinButton2.Value = 0 Then
SpinButton2.Value = 12
With Worksheets("sheet1").Range("a1")
.Value = .Value - 1
TextBox1.Text = .Value
End With
End If
TextBox2.Value = SpinButton2.Value
End Sub
'=================================================================
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox2
Cancel = True
If IsNumeric(.Text) Then
If Val(.Text) >= 1 And Val(.Text) <= 12 Then
SpinButton2.Value = TextBox2.Text
Cancel = False
End If
End If
End With
End Sub
'=================================================================
Private Sub UserForm_Initialize()
With Worksheets("sheet1")
.Range("a1").Value = Year(Date)
.Range("a2").Value = Month(Date)
End With
With SpinButton1
.Max = 9999
.Min = 1900
.Value = Year(Date)
End With
With TextBox1
.ControlSource = "=sheet1!a1"
.Text = Year(Date)
End With
With TextBox2
.ControlSource = "=sheet1!a2"
.Text = Month(Date)
End With
With SpinButton2
.Max = 13
.Min = 0
.Value = Month(Date)
End With
End Sub
これで試してみてください。
でもこれだとそんなに元のコードと変わりませんか?
|
|