ExcelVBAでスピンボタンを使って日付を増減させる
スピンボタンをポチポチして日付が進んだり戻ったりするのを作ってみたら意外と便利だったのでご紹介ですー。
UserForm上で
日付を入れるためのテキストボックスと、その横にスピンボタンを配置します。
Sub start() With UserForm1 .TextBox1 = Date .Show End With End Sub
そしたら、どこか標準モジュールにフォームを開くコードを書いておきます。使うときはこのプロシージャを実行します。
で、さっきの UserForm のコード画面で、
スピンボタンに対するイベント、スピンダウンとスピンアップを使ってこのように。日付の計算は同じなので、引数持たせて共通プロシージャを Call する形にしてみました。
Private Sub SpinButton1_SpinDown() '戻る Call changeDate(-1) End Sub Private Sub SpinButton1_SpinUp() '進む Call changeDate(1) End Sub Private Sub changeDate(i As Integer) If IsDate(Me.TextBox1) = False Then MsgBox "日付が入っていません" Exit Sub End If Me.TextBox1 = DateAdd("d", i, Me.TextBox1) End Sub
コピペ用コードはこちら。
シート上で
これだけだと寂しいので、UserForm 使わないで直接シート上のセルの値を使う方法も。
A1セルに日付があるとして、ActiveX コントロールのスピンボタンを挿入します。
デザインモードにすると、コントロール名が確認できます。このコントロール名をコードで使います。
スポンボタンを設置したシートモジュールを開くと、スピンボタンが選択肢に現れてるはずなので、ここから同じようにイベントプロシージャを書くことができます。
Private Sub SpinButton1_SpinDown() '戻る Call changeDate(-1) End Sub Private Sub SpinButton1_SpinUp() '進む Call changeDate(1) End Sub Private Sub changeDate(i As Integer) If IsDate(Range("A1")) = False Then MsgBox "日付が入っていません" Exit Sub End If Range("A1") = DateAdd("d", i, Range("A1")) End Sub
コピペ用コードはこちら。
以上です! かんたんなわりに使い勝手は良さそうでいいですね。
ExcelVBAに興味をお持ちの方は、こちらの記事もどうぞ!
- これからExcelのマクロを始めたいという方に!簡単な練習問題作りました。
- 私がExcelVBAでよく使う便利なコード・スニペットまとめ
- プログラム初心者さんへ贈る、エラーが起きたら試してみて欲しいこと
- ExcelVBAのクラスモジュールって何?という人向けの使い方まとめ
書籍を執筆しています。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。