【VBA】日付かどうか判定する方法(型が一致しませんエラー対策)

今回はVBAで文字列が日付かどうかをチェックする方法を紹介します。

例えばExcelシート上に書かれた日付をCDate関数で日付型に変換する処理があったとします。

CDate関数がエラー
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関数」を使うことで文字列が日付かどうかを判定することができます。

日付でない場合にはアラートメッセージを表示させたり、処理を飛ばすなどのエラー対策を織り込んでみましょう。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/06/06 16:32:04時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい