以下のコードを実行した際、ユーザーが最初のメッセージボックスで[はい]ボタンをクリックした場合の結果として、最も適切なものはどれか。
以下の選択肢より1つ解答しなさい。
Sub Exam1()
Dim N As VbMsgBoxResult
N = MsgBox("処理を実行しますか?", vbYesNo + vbInformation, "確認")
If N = vbYes Then
MsgBox "はいが選択されました。", vbInformation, "結果"
Else
MsgBox "いいえが選択されました。", vbExclamation, "結果"
End If
End Sub
1.最初に「処理を実行しますか?」と表示され、ユーザーが[はい]ボタンをクリックした場合、続けて「はいが選択されました。」と表示される。
2.最初に「処理を実行しますか?」と表示され、ユーザーが[いいえ]ボタンをクリックした場合、何も表示されずにマクロが終了する。
3.最初に表示されるメッセージボックスには、[OK]ボタンのみが表示される。
4.コードの実行時にコンパイルエラーが発生する。これはMsgBox関数の戻り値を変数に格納する際に引数を括弧で囲んでいないためである。
正解
1
解説
【5章 関数】
【MsgBox関数】
●引数を指定してメッセージを表示する関数です。
引数には表示するメッセージやボタン、タイトル、アイコンなどを設定できます
構文
MsgBox(メッセージ, ボタン, タイトル)
表示したいときはボタンの次にアイコンの定数を「+」演算子を加算します。
【コード解説】
以下のコードを実行した際、ユーザーが最初のメッセージボックスで[はい]ボタンをクリックした場合の結果として、最も適切なものはどれか。
以下の選択肢より1つ解答しなさい。
Sub Exam1()
Dim N As VbMsgBoxResult
’VbMsgBoxResult はVBAの組み込み定数のグループで 、MsgBox 関数がユーザーのクリックしたボタンの結果を返す際に使用されます 。例えば、[OK] ボタンがクリックされたら vbOK、[はい] ボタンなら vbYes といった具体的な値を返します。
N = MsgBox("処理を実行しますか?", vbYesNo + vbInformation, "確認")
' はい/いいえ ボタンと情報アイコンを表示する
If N = vbYes Then
’条件分岐もし変数の値が「vbYes 」のときは以下の処理を行います。
MsgBox "はいが選択されました。", vbInformation, "結果"
’MsgBox関数で引数で指定した様式でメッセージボックスを表示する。
Else
’条件に合わないときは以下の処理を実行します。
MsgBox "いいえが選択されました。", vbExclamation, "結果"
’MsgBox関数で引数で指定した様式でメッセージボックスを表示する。
End If
End Sub


1.最初に「処理を実行しますか?」と表示され、ユーザーが[はい]ボタンをクリックした場合、続けて「はいが選択されました。」と表示される。
正しい。
MsgBox関数にvbYesNoが指定されているため、[はい]と[いいえ]のボタンが表示されます。
ユーザーが[はい]ボタンをクリックすると、response変数にvbYesが格納され、If response = vbYes Thenの条件が真となり、その後のメッセージボックスが表示されます。
2.最初に「処理を実行しますか?」と表示され、ユーザーが[いいえ]ボタンをクリックした場合、何も表示されずにマクロが終了する。
誤り。
ユーザーが[いいえ]ボタンをクリックした場合、ElseIf response = vbNo Thenの条件が真となり、「いいえが選択されました。」というメッセージボックスが表示されます。
3.最初に表示されるメッセージボックスには、[OK]ボタンのみが表示される。
誤り。
vbYesNoが指定されているため、[はい]と[いいえ]のボタンが表示されます。[OK]ボタンのみが表示されるのはvbOKOnlyが指定された場合です。
4.コードの実行時にコンパイルエラーが発生する。これはMsgBox関数の戻り値を変数に格納する際に引数を括弧で囲んでいないためである。
誤り。
MsgBox関数の結果を変数に格納する場合、引数全体を括弧で囲むのが正しい構文であり、このコードは正しく記述されています。