【ExcelVBA・マクロ】IsDateの使い方|日付かどうかを判定する方法【コピペOK】

IsDateの使い方 ExcelVBA

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コードが書けるようになります。
特に入力チェックでは必須の関数なので、必ず覚えておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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