【VBA入門】セルの値が日付かどうかを判定する方法|IsDate関数の使い方と注意点

Excel VBAでは、セルに入力された値が「日付」かどうかを判定したい場面があります。
たとえば、入力フォームで日付の妥当性をチェックしたり、カレンダー処理や集計処理で日付としての整合性を確認したりする際に活用されます。

この記事では、VBAの IsDate 関数を使って、セルの値が日付かどうかを判定する方法をわかりやすく解説いたします。


目次

IsDate関数の基本構文

IsDate(値)
  • 判定対象の値が有効な日付または時刻として認識される場合True を返します。
  • それ以外は False を返します。

セル範囲内の各値が日付かどうかをチェックするコード例

以下は、セル範囲 "B2:B6" に入力された値について、それが日付かどうかを右隣のセルに表示するサンプルです。

Sub CheckIfDate()
    Dim checkCell As Range
    For Each checkCell In Range("B2:B6")
        checkCell.Offset(0, 1).Value = IsDate(checkCell.Value)
    Next
End Sub

解説:

  • Range("B2:B6"):日付としてチェックしたいセル範囲。
  • Offset(0, 1):判定結果を右隣のセルに出力します。
  • 結果は TRUE または FALSE として表示されます。

判定例(IsDate関数の動作)

入力値結果 (IsDate)補足
2025/7/20True有効な日付形式
7月20日TrueExcelが自動認識する和風日付表現
abcFalse日付として認識できない文字列
44500Trueシリアル値としての日付も可
空白False無入力は日付とみなされない

使用シーンの例

  • ユーザー入力の正当性チェック(入力欄に日付を求める場合)
  • データインポート時に、日付形式の確認
  • 日付形式ではないセルに色を付けて警告するマクロの事前処理

まとめ|IsDateで日付判定を確実に行うポイント

セルが本当に日付かどうかを調べたい場合、IsDate 関数は非常に便利です。ただし、以下のような注意点もあります。

  1. シリアル値も日付として認識されるため、単なる数値との区別には留意が必要です。
  2. 和暦や日本語表記も、Excelが日付とみなせば True になります。
  3. 結果を画面に出すだけでなく、判定結果を別のセルに記録することで、デバッグや後処理が容易になります。

このように、IsDate を使えば簡潔に「日付かどうか」の判断ができ、入力チェックや整合性確認の場面で役立ちます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次