【VBA入門】日付エラーで泣かない!IsDate関数で入力ミスを秒速で判定するコード

【業務効率化】VBA
スポンサーリンク

「あ~、また日付の入力形式がバラバラ……。’2024.3.18’や’3月18日’など、入力を統一してほしい!」

バックオフィスやデータ管理に携わる方なら 、一度はこのような悩みを抱えたことがあるのではないでしょうか?

せっかく作成したマクロも、想定外のデータが混ざると「型が一致しません」というエラーで止まってしまいます。 

そんな時、IsDate関数は「門番」のような役割を果たしてくれます。

【業務効率化】VBAの記事を見る

IsDate関数は「日付の門番」

IsDate関数は、入力されたデータが「正しい日付形式か」を厳格にチェックしてくれます。

  • 「2024/3/18」を入力した場合 → 「正しい日付です(True)」
  • 「2024/13/45」を入力した場合 → 「存在しない日付です(False)」
  • 「未定」などの文字列を入力した場合 → 「日付ではありません(False)」

このように、値が日付として適切かどうかを、真(True)か偽(False)の二択で明快に判定してくれます。

そのまま使える!日付判定の基本サンプルコード

実務ですぐに活用できる、シンプルで汎用性の高いコードをご紹介します。

Sub CheckDateSample()
    Dim targetValue As Variant
    targetValue = Range("A1").Value 'A1セルの値を取得

    ' IsDate関数で日付かどうかを判定
    If IsDate(targetValue) Then
        ' 日付だった場合の処理
        MsgBox "これは日付です。処理を進めます!"
    Else
        ' 日付じゃなかった場合の処理
        MsgBox "エラー!正しい日付を入力してください。", vbExclamation
    End If
End Sub

IsDate関数を使うメリットと知っておきたい注意点

VBAでは、日付は内部的に「シリアル値」という数値(1900年1月1日を1とした連番)で処理されています。

この仕組みを意識せずに処理を進めると、給与計算や納期管理などの重要なデータで予期せぬミスを招く恐れがあります。

事前にIsDate関数で入力チェックを行うだけで、データの信頼性は格段に向上しますので、ぜひ活用しましょう。

注意しておきたい落とし穴

ただし、使用する際には一点だけ注意が必要なポイントがあります。
例えば「12:30」といった「時刻」のデータも、IsDate関数は日付の一部として認識し、「True」と判定してしまいます。

このように厳密な区別が必要な場合は別の処理を組み合わせる必要がありますが、「明らかに異なる文字列を排除する」という目的において、IsDate関数は非常に強力な味方になります。
ぜひ試してみてください!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました