DTPickerでブランク(Null)を入れたい【EXCEL・VBA】

シェアする

VBAのフォームで日付を入力させる場合、一番手っ取り早いのは
もともと用意されているDTPickerを使う事です。
しかし、DTPickerは日付型のみしか入らずブランク(Null)は入力する事が出来きず
「DTPicker1.Value = Null」「DTPicker1.Value = “”」などは実行出来ません。

対策として、日付入力カレンダーの自作や
Nullを許容するプラグインの導入などがあり
DTPickerは日付型以外のデータは入りませんとバッサリ書かれていることが多いので補足です。

excel_023
このような入力項目の場合、
必須の日付は問題ありませんが、任意の項目にも日付が入ってしまい、
このまま送信すると指定した訳でもない日付が「希望日」として送信されてしまいます。
このような場合は「CheckBox」のプロパティをTrueにすればブランク(Null)を扱うことが出来ます。

「CheckBox」のプロパティの変更

excel_024
DTPickerのコントロールを選択して
プロパティから「CheckBox」のプロパティをTrueに変更します。

excel_025
変更すると、DTPickerの左側にチェックボックスがつきます。
あまり、VBA以外で見ないですよね。
見たことがないとこんな事ができるって想像がつかないと思いますが
このチェックボックスにチェックが入っている場合は日付が入力可能になり、
チェックボックスが入っていない場合はValueでブランク(Null)が返ってきます。

これを使えば、入力時は日付型に固定して
入力したくない時はNullを返すことが出来ます。


◆スポンサードリンク – 楽天市場