このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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

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

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

CDate関数がエラー
CDate関数で発生するエラー

このとき、文字列が日付に変換できないとCDate関数がエラーとなってしまいます。

エラー回避のためこういった処理をするときは事前に文字列が日付かどうかをチェックするようにしましょう。

《CDate関数については下記記事をご覧ください》

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

文字列が日付かどうか判定する方法(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

Posted by やろまい