#551 | 年・月・日を別々に入力してひとつの日付型データにまとめる方法 | フォーム、VBA | |
フォーム上に「年」・「月」・「日」それぞれ単独のテキストボックスがあり、それらに入力された値をひとつにまとめて、日付型のフィールドと連結されたテキストボックスに代入する方法です。 例として次のようなデザインのフォームを用意します。 上段の3つのテキストボックスは、「年」・「月」・「日」を入力するための、フィールドとは非連結のテキストボックス(名前はそれぞれtxt年・txt月・txt日)です。下段のテキストボックスは、上記3つの値をまとめて日付型として表示するためのテキストボックス(名前は売上日付)です。こちらはテーブルのフィールドと連結されています。 このような処理では、簡単に「Me!売上日付 = DateSerial(Me!txt年, Me!txt月, Me!txt日)」といった命令ひとつで済ませることもできますが、いずれかが未入力の場合、あるいは存在しない日付(たとえば9月31日など)が入力された場合のチェックなども加え、次のようなプログラムを用意してみました。 Private Sub txt年_AfterUpdate() cbfSetDate End Sub Private Sub txt月_AfterUpdate() cbfSetDate End Sub Private Sub txt日_AfterUpdate() cbfSetDate End Sub Private Sub cbfSetDate() Dim strNewDate As String '年・月・日から日付データを組み立て strNewDate = Me!txt年 & "/" & Me!txt月 & "/" & Me!txt日 If IsDate(strNewDate) Then '日付の内容が正しいとき Me!売上日付 = CDate(strNewDate) ElseIf IsNull(Me!txt年) Or IsNull(Me!txt月) Or IsNull(Me!txt日) Then 'いずれかが未入力のとき Me!売上日付 = Null Else '日付の内容に誤りがあるとき(存在しない日付など) MsgBox "日付の内容に誤りがあります!", vbOKOnly + vbExclamation Me!売上日付 = Null End If End Sub 実行例: ●正しく入力されたとき ●未入力があるとき ●存在しない日付が入力されたとき |
|||
|
Copyright © T'sWare All rights reserved |