Excel VBA 逆引き集 | 日付チェック

Excel VBA
スポンサーリンク

日付チェック

業務でよくある入力チェックのひとつが「日付チェック」です。
例えば「入力値が正しい日付かどうか」「未来日や過去日を許可するか」「日付の範囲が正しいか」を確認します。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • 目的:
    • 入力値が「日付」として認識できるかを判定する
    • 不正な文字列や桁数間違いを防ぐ
    • 業務ルールに沿った日付範囲をチェックする
  • よく使う関数:
    • 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で 入力値が正しい日付かどうかを判定し、未来日や範囲外の日付を防ぐ仕組み を簡単に作成できます。

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