VBAのユーザーフォームでスピンボタンの使い方
前回の記事ではExcelVBAを使用したフレームの使い方を紹介しましたが、今回はユーザーフォームでのスピンボタンについてお伝えします。
スピンボタンは日付を修正するときなどにとても便利なので、この記事を読んで是非仕事に活用しましょう。
ユーザーフォームでスピンボタンの配置
まずはVBAの入力画面を呼び出すため、Alt+11でユーザーフォームを挿入しましょう。
次に、ツールから必要なボタンを配置します。
今回は実用的に使うことを考え、日付を入力するためのオプションボタンやボタンも配置しました。
オプションボタンの今日または3か月後をクリックするとテキストボタンに日付が入力され、スピンボタンを押したら日付の修正、登録ボタンを押したらシートに入力されるフォームを作成します。
スピンボタンで日付を入力
まずは準備として、オプションボタンの今日をクリックしたら本日の日付をテキストボックス1に入力されるコードを紹介します。
以下のコードをユーザーフォームに入力しましょう。
1 2 3 4 5 |
Private Sub OptionButton1_Click() If OptionButton1.Value = True Then TextBox1 = Date End If End Sub |
「Date」が今日の日付を表しますので、「もしオプションボタン1が選択されたらテキストボックス1に今日の日付を入力します」という言いになります。
3か月後の日付が表示出るようにしたい場合は以下のコードを入力します。
1 2 3 4 5 6 |
Private Sub OptionButton2_Click() If OptionButton2.Value = True Then TextBox1 = DateAdd("m", 3, Date) End If End Sub |
画面上は以下のようになります。
3か月後などの入力を行う場合はDateAddを使用すると便利。
DateAdd(“m”, 3, Date)のmはmonthで「月」を表し、3で3か月後という意味になる。
ここまでで以下の画像のようにユーザーフォームに入力されます。
スピンボタンのコード
次に、スピンボタンのコードを入力します。
以下のコードをコピペしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub SpinButton1_SpinDown() Dim 日付 As Date '日付を正しく入力されているかをチェック If IsDate(TextBox1) = False Then MsgBox "日付を正しく入力してください。" Else 日付 = TextBox1 '日付を1日戻る TextBox1 = DateAdd("d", -1, 日付) End If End Sub |
上記のコードで▼をクリックしたら日付が1日ずつ戻ります。
ただ、エラーを避けるために正しく日付が入っているかチェックするコードも入れました。
ひこIsDate(TextBox1)はテキストボックス1に日付が正しく入力されているかチェックします。
また▲をクリックしたら日付が進むよう、以下のコードもコピペしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub SpinButton1_SpinUp() Dim 日付 As Date '日付を正しく入力されているかをチェック If IsDate(TextBox1) = False Then MsgBox "日付を正しく入力してください。" Else 日付 = TextBox1 '日付を1日戻る TextBox1 = DateAdd("d", 1, 日付) End If End Sub |
最後に、登録ボタンをクリックしたらセルに入力されるよう、以下のコードを入力しましょう。
1 2 3 |
Private Sub CommandButton1_Click() Range("A1").Value = TextBox1.Value End Sub |
実際に動作を確認してみると以下のようにユーザーフォームの日付がそのままセルに入力されます。
まとめ
今回はスピンボタンの使い方について紹介しました。
スピンボタンを使用すると日付の変更をするときにマウスだけで簡単に変更できます。
また、個人的にはオプションボタンなどを活用しながら今日の日付、3か月後の日付をワンクリックで表示し、その後スピンボタンで調整するのが効率良いと考えているため、今回紹介しました。
Excelの機能を使いこなすと、仕事の効率化から大きな時間短縮に繋がります。
仕事術のスキルが増えるとプライベートの時間を時間を増やすことができますので、当サイトで得た知識を是非活用していきましょう。
以下のExcel記事もおすすめです。