やりたいこと
正しい日付形式で入力されるまで処理を繰り返す
VBA起動後に以下のようなポップアップを表示します。
正しい日付形式で入力が行われた場合は後続処理を行い、
誤った形式で入力が行われた場合は、以下のポップを表示後、再度日付入力を求めるポップアップを表示させるといった処理を行いたいと思います。
パスワード入力を間違えた場合などにもこのように再入力を求めるロジックは使うことができると思うので、ぜひ使ってみてください!(^^)!
コードと解説は以下の通りです。
【VBA コード】
ポイント
変数「処理日」はVariant型で宣言
変数「処理日」は日付型ではなくVariant型で宣言しています。
「処理日」はInput Box関数で入力された処理日のデータを格納する変数になります。
日付以外の文字列などのデータが入力された場合でも即座にエラーにならないようにするため、一旦何でも格納できるVariant型を使用しています。
文字列が入力された場合は、後続のIsDate関数で正誤を判定しています。
IsDate関数で日付形式かどうかを調べる
IsDate関数は、変数に日付として有効なデータが格納されているかを調べることのできる関数です。
有効な場合はTrueを返し、無効な場合はFalseを返します。
日付として有効なデータとは「2020年9月2日」や「2020/09/02」や「9/2」などのデータのことで、文字列や「13/2」などのように日付として認識されないデータはFalseを返します。
InputBoxの使い方
InputBoxはテキストボックス付きのダイアログボックスを表示する関数です。
InputBox(メッセージ, タイトル, 初期値)
とすることで、表示するメッセージやタイトル、初期値を指定することができます。
今回は初期値にDateを入力しているので、ダイアログが表示された時にデフォルトで当日の日付が入力されています。
Do While ~ Loop
While以下の条件に合っている間、処理を繰り返すという意味のステートメントです。
今回はDo While Not IsDate(処理日)とすることで、
変数「処理日」が正しい日付形式ではない場合に処理を繰り返す
という意味になります。
ひとこと
今回のロジックはUiPathでもよく使いますが、InputBoxで初期値を設定できるのはとても便利だと思いました( ..)φ
今回の処理は色々と応用して使うことができるので、一つの形として覚えておきたいです(^-^)
他にもVBAについて紹介しているのでぜひ参考にしてみてください!
できるシリーズはフルカラーでかなり細かいところまで画像を使って解説してあるのでオススメです!