Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


48225 / 76732 ←次へ | 前へ→

【33443】Re:スピンボタンでの年と月の増減
発言  ichinose  - 06/1/12(木) 10:13 -

引用なし
パスワード
   ▼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

これで試してみてください。
でもこれだとそんなに元のコードと変わりませんか?
0 hits

【33430】スピンボタンでの年と月の増減 mickeypapa 06/1/11(水) 22:53 質問
【33433】Re:スピンボタンでの年と月の増減 かみちゃん 06/1/11(水) 23:17 発言
【33439】Re:スピンボタンでの年と月の増減 mickeypapa 06/1/12(木) 9:03 お礼
【33437】Re:スピンボタンでの年と月の増減 ichinose 06/1/12(木) 7:17 発言
【33441】Re:スピンボタンでの年と月の増減 mickeypapa 06/1/12(木) 9:13 お礼
【33443】Re:スピンボタンでの年と月の増減 ichinose 06/1/12(木) 10:13 発言
【33484】Re:スピンボタンでの年と月の増減 mickeypapa 06/1/12(木) 17:38 お礼

48225 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free