以下のコードを実行し、表示されたメッセージボックスで「キャンセル」ボタンをクリックしました。このとき、メッセージボックスには何と表示されるか。
選択肢の中から正しいものを1つ解答しなさい。
Sub Exam1()
Dim N As Long
N = MsgBox("処理を継続しますか?", vbYesNoCancel)
If N = vbCancel Then
MsgBox "処理を中止しました。"
ElseIf N = vbYes Then
MsgBox "処理を継続します。"
Else
MsgBox "処理を中止しました。
End If
End Sub

1.処理を継続します。
2.処理を中止しました。
3.処理を中止しました。
4.エラーが発生します。
正解
2
解説
【8章 関数】
【MsgBox関数 戻り値・引数括弧】
●MsgBox関数はメッセージとして指定した文字列を画面に表示します。
● またボタンやアイコン、タイトルを指定することや、ユーザーがどのボタンを押したか結果を返すこともできます。
構文
MsgBox(表示するメッセージ, ボタンやアイコン定数)
●ボタンを押した際には、以下の戻り値を返します。

●ボタンが「OKボタン」のみときは、ボタンを押しても戻り値を判定する必要がないので、戻り値がありませんので引数に()括弧は使用しません。
MsgBox "お知らせ"

以下のコードを実行し、表示されたメッセージボックスで「キャンセル」ボタンをクリックしました。このとき、メッセージボックスには何と表示されるか。
選択肢の中から正しいものを1つ解答しなさい。
【コード解説】
Sub Exam1()
Dim N As Long
’戻り値の実体は数値ですので数値型で変数を宣言します。
N = MsgBox("処理を継続しますか?", vbYesNoCancel)
' 「はい」「いいえ」「キャンセル」ボタンが表示されるメッセージボックス
If N = vbCancel Then
「キャンセル」が選択された時は以下の処理を行います。
MsgBox "処理を中止しました。"
ElseIf N = vbYes Then
「はい」が選択された時は以下の処理を行います。
MsgBox "処理を継続します。"
Else
MsgBox "処理を中止しました。
’「いいえ」が選択された時の処理。
End If
End Sub

1.処理を継続します。
誤り。
このメッセージは、ユーザーがメッセージボックスの「はい」ボタンをクリックした場合に表示されます。
2.処理を中止しました。
正しい。
ユーザーがMsgBoxで「キャンセル」ボタンをクリックすると、MsgBox関数は vbCancel という値を返します。
コードはその戻り値を変数 N に格納し、If N = vbCancel Then の条件が真となるため、「処理を中止しました。」というメッセージボックスが表示されます。
3.処理を中止しました。
誤り。
このメッセージは、ユーザーがメッセージボックスの「いいえ」ボタンをクリックした場合に表示されます。
4.エラーが発生します。
誤り。
MsgBox関数はユーザーのボタンクリックに応じて適切な戻り値を返すため、このコードはエラーにはならず、条件分岐に従って実行が進みます。