以下のコードを実行した際、最終的にメッセージボックスに表示される回数として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。
Sub Exam1()
Dim i As Long
Dim j As Long
For i = 1 To 3
For j = 1 To 2
MsgBox "i=" & i & ", j=" & j & " 回目のメッセージです。"
Next j
Next i
End Sub
1.2回
2.3回
3.5回
4.6回
正解
4
解説
【4章 ステートメント】
【繰り返し処理をネストする】
●For…Nextステートメント…マクロ全体の中で指定の初期値から終了値までの範囲で、繰り返し処理をするステートメントです
初期値から終了値まで増減値に指定がない場合、1つずつ増やし繰り返し処理を行います。
ネスト構造にすると繰り返し処理の中で、さらに繰り返し処理を記述することができます。
*本問題では①の「1」繰り返し処理の中で②「1から2」の繰り返しを行います。
【コード解説】
以下のコードを実行した際、最終的にメッセージボックスに表示される回数として最も適切なものはどれか。以下の選択肢より1つ解答しなさい。
Sub Exam1()
Dim i As Long
Dim j As Long
For i = 1 To 3
’①開始値かた終了値まで繰り返し処理をする。
For j = 1 To 2
’②開始値かた終了値まで繰り返し処理をする。
MsgBox "i=" & i & ", j=" & j & " 回目のメッセージです。"
' メッセージボックスが表示される。
Next j
’終了値まで①へ戻る。
Next i
’終了値まで②へ戻る。
End Sub

1.2回
誤り。
①のループと②のループの両方が実行されるため、合計回数は2回ではありません。
2.3回
誤り。
②のループが①のループの繰り返しごとに完全に実行されるため、合計回数は3回ではありません。
3.5回
誤り。
各ループの繰り返し回数を単純に足し合わせるだけでは、正しい結果は得られません。
4.6回
正しい。
For… Next ステートメントは入れ子構造(ネスト)にすることができ 、この場合、①のループ(iが1から3まで)が3回、そのそれぞれの中で②のループ(jが1から2まで)が2回実行されます。
したがって、実行されるMsgBoxの合計回数は 3×2=6 回となります。