日付チェック
業務でよくある入力チェックのひとつが「日付チェック」です。
例えば「入力値が正しい日付かどうか」「未来日や過去日を許可するか」「日付の範囲が正しいか」を確認します。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- 目的:
- 入力値が「日付」として認識できるかを判定する
- 不正な文字列や桁数間違いを防ぐ
- 業務ルールに沿った日付範囲をチェックする
- よく使う関数:
IsDate(値)→ 日付かどうか判定CDate(値)→ 日付型に変換(判定後に使う)Date→ 今日の日付DateSerial(年, 月, 日)→ 指定日付を生成
テンプレ1:日付かどうか判定
Sub CheckDateBasic()
Dim val As Variant
val = Worksheets("Input").Range("A1").Value
If IsDate(val) Then
MsgBox "日付として有効です: " & CDate(val)
Else
MsgBox "正しい日付を入力してください。"
End If
End Sub
VB- ポイント:
IsDateで判定してからCDateで変換。- 「2025/12/12」はOK、「ABC」はNG。
テンプレ2:未来日チェック
Sub CheckFutureDate()
Dim val As Variant
val = Worksheets("Input").Range("A2").Value
If IsDate(val) Then
If CDate(val) > Date Then
MsgBox "未来日です: " & CDate(val)
Else
MsgBox "今日以前の日付です: " & CDate(val)
End If
Else
MsgBox "正しい日付を入力してください。"
End If
End Sub
VB- ポイント:
Dateは今日の日付。CDate(val) > Dateで未来日判定。
テンプレ3:日付範囲チェック(例:2025年内)
Sub CheckDateRange()
Dim val As Variant
val = Worksheets("Input").Range("A3").Value
If IsDate(val) Then
If CDate(val) >= DateSerial(2025, 1, 1) And CDate(val) <= DateSerial(2025, 12, 31) Then
MsgBox "2025年内の日付です: " & CDate(val)
Else
MsgBox "2025年内の日付を入力してください。"
End If
Else
MsgBox "正しい日付を入力してください。"
End If
End Sub
VB- ポイント:
DateSerial(年, 月, 日)で範囲を指定。- 年度や期間チェックに便利。
テンプレ4:複数セルの日付チェック
Sub CheckMultipleDates()
Dim ws As Worksheet: Set ws = Worksheets("Input")
Dim rng As Range, cell As Range
Set rng = ws.Range("A1:A5")
For Each cell In rng
If Not IsDate(cell.Value) Then
MsgBox "セル " & cell.Address & " は日付ではありません。"
End If
Next cell
End Sub
VB- ポイント:
- 複数セルをループして日付チェック。
- 入力表の検証に使える。
例題で練習
'例1:セルA1が日付かどうか判定
'例2:セルA2が未来日かどうか判定
'例3:セルA3が2025年内の日付かどうか判定
'例4:A1~A5セルをまとめて日付チェック
VB初心者向けポイント
- IsDateで必ず判定してからCDateで変換
- 今日の日付はDateで取得できる
- 範囲チェックはDateSerialで指定
- 複数セルチェックはループで処理
- エラーメッセージは分かりやすく → ユーザーが修正しやすい
👉 この「日付チェックテンプレ」を覚えておけば、Excel VBAで 入力値が正しい日付かどうかを判定し、未来日や範囲外の日付を防ぐ仕組み を簡単に作成できます。
