Excel VBA質問箱 IV

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

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


48236 / 76737 ←次へ | 前へ→

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

引用なし
パスワード
   おはようございます。

>それぞれ年と月の増減をさせようと考え以下のように
>コードを書いたのですが、どうも力業のような感じで
コードを少しでも少なくしたいと言うことでしたら
使用可能なプロパティを活用する方法もあります。

新規ブックのユーザ―フォーム(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
       Cancel = False
       End If
     End If
    End With
End Sub
'=================================================================
Private Sub SpinButton2_Change()
  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
       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
    .ControlSource = "=sheet1!a1"
    End With
  TextBox1.ControlSource = "=sheet1!a1"
  TextBox2.ControlSource = "=sheet1!a2"
  With SpinButton2
    .Max = 12
    .Min = 1
    .ControlSource = "=sheet1!a2"
    End With
End Sub

これでUserform1を表示させて試してみて下さい。


尚、UserForm_Initializeイベントで記述しているコードは、
事前にプロパティ設定が可能です。
が、結構スピンボタンのControlSourceの指定に苦慮しました。
ControlSourceに指定するセルの値が
Min、Maxプロパティの範囲を逸脱した値が入っていたりすると
ControlSourceが指定できないので注意して下さい。

コツとしては、UserForm_Initializeで
コードで設定している順序でプロパティを設定することです。

試してみて下さい。

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 お礼

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