以下のコードを実行すると、メッセージボックスには何と表示されるか。
選択肢の中から正しいものを1つ解答しなさい。
Sub Exam1()
Dim N As Variant
N = "Not a Date"
If IsDate(N) = False Then
MsgBox "これは日付ではありません。"
Else
MsgBox "これは日付です。"
End If
End Sub
1.これは日付です。
2.これは日付ではありません。
3.エラーが発生します。
4.何も表示されません。
正解
2
解説
【8章 関数】
【IsDate関数】
●IsDate関数はデータが日付かどうかを調べる。
調べた結果、日付の時は戻り値としてTrueを返します。
日付ではないときは False を返します。
●構文
IsDate(引数)
●表面上日付に見えても、シリアル値として認識されない場合は日付とは認識されません。
なおIsDate("2023/12/1")のようにダブルクォーテーションで囲った場合、文字列となるがVBAの内部で日付に変換しTrueを返します。
以下のコードを実行すると、メッセージボックスには何と表示されるか。
選択肢の中から正しいものを1つ解答しなさい。
【コード解説】
Sub Exam1()
Dim N As Variant
N = "Not a Date"
' 変数Nには日付ではない文字列を格納する。
If IsDate(N) = False Then
’ IsDate関数で変数Nが日付形式かどうか判定します。日付形式でないときは以下の処理を行ないます。
MsgBox "これは日付ではありません。"
Else
MsgBox "これは日付です。"
’日付形式のときは場合は以下の処理を行ないます。
End If
End Sub

1.これは日付です。
誤り。
変数 に格納されている文字列 "Not a Date" はVBAによって有効な日付として認識されないため、
IsDate(inputVal) は True ではなく False を返します。
2.これは日付ではありません。
正しい。
正しい。変数 N が日付として認識できない値 ("Not a Date") なので、IsDate(N) の結果は False になります。
If IsDate(N) = False Then という条件式は If False = False Then となり真と判定されるため、
If ステートメントの中の MsgBox "これは日付ではありません。" が実行されます。
3.エラーが発生します。
誤り。
IsDate 関数は、引数の値が日付形式でない場合でもエラーとはならず、False を返すため、このコードは最後まで実行されます。
4.何も表示されません。
誤り。
問題のコードは、条件に応じていずれかのメッセージボックスが表示されます。