Excel VBA ベーシック 模擬問題 模擬試験

Excel VBA ベーシック 模擬問題 ランダム順出題 ② 第11問

以下のコードを実行すると、メッセージボックスには何と表示されるか。

選択肢の中から正しいものを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.何も表示されません。

誤り。

問題のコードは、条件に応じていずれかのメッセージボックスが表示されます。