非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

ExcelVBA: VBAで使えるカレンダーを作った

      2018/04/30

ExcelでVBAを組んでいると、プログラミング用パーツとして時々カレンダーがほしくなったりします。探しても個人的にドンピシャなものがないので、自分で作ってみました。

こちらからダウンロードできます。


[ad#top-1]

 

これが完成したカレンダーです。日付をクリックすると年月日が戻ってきます。こういう単純な部品ってあんまり転がっていないんですよね。

_a

フォームの「Run」ボタンを押すとカレンダーが現れ、日付をクリックすると右フォームのテキストボックスに日付が入ります。

コマンドボタンを押したときのイベント処理として以下の3行だけ書けばOK。これで使えます。

3行目のCalendarForm.setCallBackControlは、どこに値を戻していいか指定するためのものです。今回はUserFormのTextBoxですが、これがLabelでもOKです。

Private Sub CommandButton1_Click()
  Call CalendarForm.setDate(TextBox1.Text)
  Call CalendarForm.setCallBackControl(TextBox1)
  CalendarForm.Show
End Sub
 

 

で、このカレンダーフォームのポイントとして、戻り値(日付)をシートのセルにすることも可能なんです。

以下が例です。カレンダーのB2セルに値を戻しています。

_b

 

このパターンを使う場合は以下のようなコードを書きます。

3行目のCalendarForm.setCallBackCellが、シートのセルに戻すことを明示し、且つB2セルに戻すことを指定しているわけです。

Sub sample_cell()
  Call CalendarForm.setDate(Range("B2"))
  Call CalendarForm.setCallBackCell("B2")
  CalendarForm.Show
End Sub
 

 

ご自由にお使いください。

 

[ad#ad-1]

スポンサーリンク

 - Excel, VBA