【VBA】日付かどうか判定する方法(型が一致しませんエラー対策)
今回はVBAで文字列が日付かどうかをチェックする方法を紹介します。
例えばExcelシート上に書かれた日付をCDate関数で日付型に変換する処理があったとします。
このとき、文字列が日付に変換できないとCDate関数がエラーとなってしまいます。
エラー回避のためこういった処理をするときは事前に文字列が日付かどうかをチェックするようにしましょう。
《CDate関数については下記記事をご覧ください》
文字列が日付かどうか判定する方法(IsDate関数)
Sub CheckDate()
'''文字列が日付かどうか判定
Dim str As String, dt As Date
str = "20230401" 'エラーになる文字列
'IsDate関数で判定
If IsDate(str) Then
dt = CDate(str)
Else
MsgBox "文字列が日付ではありません"
End If
End Sub
文字列が日付かどうか判定するには「IsDate関数」を使います。
まずはサンプルコードを実行してみてください。「文字列が日付ではありません」のメッセージボックスが表示されるはずです。
If IsDate(str) Then
ポイントはこのIf文です。
IsDate関数で文字列strが日付かどうかを判定しています。
これが問題なければCDate関数を使ってもエラーが起こりません。
実行して確認できたら文字列strを"2023/04/01″に変えて実行してみてください。
スラッシュ付きの文字列ならば日付と判定されてメッセージが表示されないはずです。
このように「IsDate関数」を使うことで文字列が日付かどうかを判定することができます。
日付でない場合にはアラートメッセージを表示させたり、処理を飛ばすなどのエラー対策を織り込んでみましょう。