VBAで日付を扱っていると、次のようなことはありませんか?
- 入力された値が日付か確認したい
- 日付でない場合のエラーを防ぎたい
- 安全に日付処理を行いたい
このような場合は、IsDate関数を使うことで解決できます。
値が日付として認識できるかどうかを判定できる関数です。
この記事では、IsDateの基本から実務で使える活用方法までを初心者向けに分かりやすく解説します。
この記事でできること
- 値が日付かどうか判定できる
- エラーを防ぐ安全なコードが書ける
- 実務で使えるチェック方法が分かる
基本:IsDate関数の使い方
基本構文はこちらです。
IsDate(値)
例:
MsgBox IsDate("2024/01/01")
→ True(有効な日付)
戻り値の意味
| 結果 | 意味 |
|---|---|
| True | 日付として認識できる |
| False | 日付として認識できない |
基本例:日付チェック
Option Explicit
Sub CheckDate()
Dim val As String
val = "2024/01/01"
If IsDate(val) Then
MsgBox "日付です"
Else
MsgBox "日付ではありません"
End If
End Sub
セルの値をチェックする
Dim val As Variant
val = Range("A1").Value
If IsDate(val) Then
MsgBox "日付として使用できます"
Else
MsgBox "日付ではありません"
End If
ユーザー入力チェックでよく使います。
DateValueと組み合わせる(重要)
日付変換前にチェックすると安全です。
Dim dt As Date
Dim val As String
val = "2024/01/01"
If IsDate(val) Then
dt = DateValue(val)
MsgBox dt
Else
MsgBox "変換できません"
End If
InputBoxと組み合わせる
ユーザー入力の検証に最適です。
Dim val As String
val = InputBox("日付を入力してください")
If Not IsDate(val) Then
MsgBox "正しい日付を入力してください", vbExclamation
Exit Sub
End If
MsgBox "入力された日付:" & val
実務でよくある使い方
- 入力チェック(必須)
- CSVデータの検証
- 日付変換前の安全確認
- エラー回避処理
「エラーを出さないコード」に必須です。
注意点
① 曖昧な日付もTrueになる
IsDate("1/1") ' → True
環境によって解釈されるため注意が必要です。
② 数値でもTrueになる場合がある
IsDate(45000) ' → True(シリアル値)
Excel内部の日付形式として扱われます。
よくあるエラーと対処法
① 日付なのにFalseになる
文字列形式や区切りを確認してください。
② Trueなのに意図しない日付
地域設定の影響を受ける場合があります。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- IsDateで日付かどうか判定できる
- 入力チェックで必須の関数
- DateValueと組み合わせると安全
- 実務ではエラー防止に必須
IsDate関数を使いこなせるようになると、エラーに強いVBAコードが書けるようになります。
特に入力チェックでは必須の関数なので、必ず覚えておきましょう。


コメント