忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【VBAスタンダード対策】セルの値が「日付」に変換できるかを判定する組み込み関数を攻略!

データ入力チェックにおいて、数値判定(IsNumeric)と並んで非常に重要なのが「値が日付として正しく評価・変換できるか」の判定処理です。VBAで用意されている専用の判定関数と、その判定ロジックを押さえましょう。

1. 問題:日付変換の可能性を判定する関数

【 問題 】 下記のコードは、セル A1 に入力されている値が日付(または日付として認識できる文字列)であるかを判定し、正しい日付形式の場合のみメッセージボックスに「有効な日付です」と表示しようとしています。空欄 ( A ) に入る正しいVBA組み込み関数はどれでしょうか?

Sub CheckDateCell()
    Dim val As Variant
    val = Range("A1").Value

    If ( A )(val) Then
        MsgBox "有効な日付です"
    Else
        MsgBox "日付ではありません"
    End If
End Sub

① IsDateFormat
② IsDate
③ CDate
④ IsCalendar

2. 正解:日付判定関数に関する正解

正解: ② IsDate

3. 解説:IsDate 関数の役割と CDate 関数との違い

VBAで渡された値が「日付型データ」であるか、あるいは「日付を表す文字列(例: "2026/08/14" や "2026-08-14" など)」として認識可能かを判定するには IsDate 関数 を使用します。

[ 判定関数の構造と選択肢の罠 ]

1. 判定結果(戻り値)
IsDate(引数) は、引数が日付として有効であれば True、日付として認識できなければ(例: "abc" や "2026/02/30" など存在しない日付)False を返します。

2. 選択肢 ③ CDate との違い(超頻出トラップ!)
IsDate:日付に変換できるか「調べる」関数(True / False を返す)
CDate:文字列や数値を実際に日付型(Date型)へ「変換する」関数

★ 変換できない値に対して直接 CDate("abc") を実行すると「型が一致しません」というエラーでプログラムが停止してしまいます。そのため、「まず IsDate でチェックしてから CDate で変換する」のがVBAの定石パターンです。

ここが試験に出る!: スタンダード試験では、「判定を行う IsDate」と「型変換を行う CDate」の役割の違いを狙う問題が頻出します。If 条件式の中で判定用として使うのは IsDate であることを確実に識別できるようにしておきましょう。


4. まとめ

「日付に変換できるか調べるのは IsDate(値) 」。この判定関数をマスターしておけば、ユーザーが「2026/13/45」や「未定」といった不正な日付フォーマットをセルに入力した場合でも、処理を実行する前に安全にエラー検出を行えるようになります。


PR