ExcelVBAでスピンボタンを使って日付を増減させる

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

コピペ用コードはこちら。

以上です! かんたんなわりに使い勝手は良さそうでいいですね。

公開日:2017/09/27
更新日:2017/10/03

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)