日付入力フォーム

ラボ

西暦・和暦変換可能な日付入力フォーム

 生年月日や入社日などの入力では、西暦・和暦の両方が表示されると便利です。あなたのプログラムに導入できるような日付入力フォームを作ってみました。

 この日付入力用フォームは、西暦、和暦(昭和・平成・令和)のオプションボタンを選択して年・月・日をそれぞれ入力するとプレビューボタンで、西暦・和暦が確認できるようになっています。

 また、和暦から西暦、西暦から和暦への変換もオプションボタンを選択するだけで自動で変換されます。

元号を変更したい場合は、クリアボタンを押すことで、変更可能となります。
 (年・月・日のテキストボックスを変更した場合もクリアされます。)

もし、間違った日付(2月30日など、)を登録しようとした場合は、メッセージボックスで知らせてくれます。

導入の仕方

 VBEを開き、my日付入力フォーム.xlsmの「フォーム」にある「日付入力UserForm」を組み込みたいプロジェクト側へドラッグしてください。

フォームをコピー

 my日付入力フォーム.xlsmと組み込みたいxlsmファイルを2つ開きます。

フォームの呼び出し

 ボタンやセルのダブルクリックイベントなどのタイミングで、

日付入力UserForm.Show

 として呼び出してください。サンプルでは現在選択されているセルの値を読み込んで、日付データであればそれを表示し、日付データではないようなら空白が表示されるようになっています。

値のセット

 値のセットは、

 入力Button_Click()

 という関数内で、myDate(日付型の変数)に値が入りますので、この値をセルにセットしてください。サンプルでは、Selection.Value(現在選択されているセル)に値が入るようになっています。

他のユーザーフォームから呼び出す方法

 他のユーザーフォームから呼び出すときは、日付入力UserFormの

 UserForm_Initialize()

 上記の関数内で、myDateに値をセットすることで初期値となります。初期値が不要な場合はセットしなくても構いません。

 尚、myDate=0 を設定なしとして扱っています。

 値のセットは、入力Button_Click()関数内で、myDateの値を目的の変数、コントロールなどにセットしてください。

最後に

 シート上のセルに値を入れるだけでなく、他のユーザーフォームから呼び出して使うような用途にも対応できます。筆者自身は、社員データベース用の和暦と西暦に対応できる入力フォームとして開発しました。
 日付の入力フォームなどは、ツールごとに欲しい機能が変わりますので、その場その場での設計が必要になるかと思います。本プログラムの内容が参考になれば幸いです。

 プログラムの不具合などは、コメントにいただければと思います。

コメント

タイトルとURLをコピーしました