「あ~、また日付の入力形式がバラバラ……。’2024.3.18’や’3月18日’など、入力を統一してほしい!」
バックオフィスやデータ管理に携わる方なら 、一度はこのような悩みを抱えたことがあるのではないでしょうか?
せっかく作成したマクロも、想定外のデータが混ざると「型が一致しません」というエラーで止まってしまいます。
そんな時、IsDate関数は「門番」のような役割を果たしてくれます。
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を独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント