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/20 | True | 有効な日付形式 |
7月20日 | True | Excelが自動認識する和風日付表現 |
abc | False | 日付として認識できない文字列 |
44500 | True | シリアル値としての日付も可 |
空白 | False | 無入力は日付とみなされない |
使用シーンの例
- ユーザー入力の正当性チェック(入力欄に日付を求める場合)
- データインポート時に、日付形式の確認
- 日付形式ではないセルに色を付けて警告するマクロの事前処理
まとめ|IsDateで日付判定を確実に行うポイント
セルが本当に日付かどうかを調べたい場合、IsDate
関数は非常に便利です。ただし、以下のような注意点もあります。
- シリアル値も日付として認識されるため、単なる数値との区別には留意が必要です。
- 和暦や日本語表記も、Excelが日付とみなせば
True
になります。 - 結果を画面に出すだけでなく、判定結果を別のセルに記録することで、デバッグや後処理が容易になります。
このように、IsDate
を使えば簡潔に「日付かどうか」の判断ができ、入力チェックや整合性確認の場面で役立ちます。