MS Access Tips/Sample and VBA and Blog customize etc...

カレンダーコントロールを利用した日付入力汎用関数

Access付属のカレンダーコントロールを使って日付入力、すでにあちこちで紹介されているので、いまさらとお思いでしょう。もし、ご存じでなかったらWEBで「Access カレンダーコントロール」で検索してください。いろいろ見つかると思います。

それらと同じようなものでは取り上げる意味がないので、汎用関数にしてみます。具体的には日付を入力したいテキストボックスのダブルクリック時イベントで、
=CallCalendar()
と設定するだけで、ダブルクリックするとカレンダーダイアログが表示されて日付を選択するとテキストボックスにその日付が入力されるというものです。


あるいは、テキストボックス(日付1)の隣にコマンドボタンを配置して、クリック時イベントに、
=CallCalendar([日付1])
と設定するだけで、コマンドボタンをクリックすると 日付1 テキストボックスに日付が入力されるというものです。

難易度:

フォームを新規作成して、[挿入]-[ActiveX コントロール] よりカレンダーコントロールを選択してOKを押します。フォーム上にカレンダーコントロールが配置されます。
フォームプロパティを下記のように設定します。

プロパティ設定値
レコードセレクタ  いいえ 
サイズ自動調整    はい 
移動ボタン  いいえ 
自動中央寄せ  はい 

フォームモジュールのコード

フォームの名前は F_Calendar として保存します。

標準モジュールに下記の関数を作成します。

2010/12/09: 上記コードにAC2007での不具合対策を追加しました。

VBAはわからないという方は、サンプルをダウンロードしてそのMDBファイルからフォーム(F_Calendar)と標準モジュール(Module1)をインポートすれば、プロパティに関数を設定するだけで使えます。

サンプルファイルが下記からダウンロードできます。
CalendarDlg_07.zip (Access 2007-2010 形式 - 45kb)
CalendarDlg.zip (Access 2002-2003 形式 - 43kb)
CalendarDlg_2k.zip (Access 2000 形式 - 43kb)


拍手する

2 Comments

  says...""

大変便利に使わせていただいてます。
フォームモジュールのコードですが、
Private Sub Calendar0_AfterUpdate()
ですと当日の日付が入らないので
Private Sub Calendar0_Click()
にすると良いと思います

2013.03.22 17:19 | URL | #- [edit]
hatena says..."Calendar0_Click()"

そうですね。
サンプルファイルの方は
Calendar0_Click()
になってますね。
記事の方も修正しておきます。

2013.03.23 00:28 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/33-cee77649
該当の記事は見つかりませんでした。