「このFor…Nextステートメント、Ifステートメント同様にネスト(入れ子)構造にすることもできるよ」
八木くんが再び、コードを書き換えます。
Sub Sample()
Dim i
Dim j
For i = 1 To 2
For j = 1 To 3
MsgBox i & "-" & j & "回目の繰り返し処理です"
Next j
Next i
End Sub
「ちょっとめんどくさいけど…。この場合、コードを実行するとどうなると思う?」
「あ…、ちょっと待った。ネストしているFor…Nextステートメントの、カウンタ変数が"j"になってるよ。
これっていいのかい?」
「えっ?ああ…大丈夫だよ。カウンタ変数の変数名は、必ず"i"にしなければならないわけじゃないんだ。
"j"でも"k"でもいいし、"Counter1"のような長い変数名にしてもOKだ。
でも一般的には"i"や"j"が、よく使われるから、こっちでおぼえておいたほうがいい。
あと、ネストしている2つのFor…Nextステートメントは、お互いに独立しているんだ。
カウンタ変数を同じにしたら、正しくカウントができないだろ?
だからカウンタ変数も、2つ用意しているんだよ」
「そういうわけなのか…」
星くんは、八木くんの説明にうなずきます。
「さあ、星。このコードを実行するとどうなるでしょう?」
「むーーーっ」
星くんは、長い間コードを見つめていましたが…、
「…だめだ、これは難しすぎるよ…。実行するとどうなるんだい?」
ついにギブアップしてしまいました。
「そっか…さすがにこれは、まだ難しいか。早速、実行してみよう」
八木くんがコードを実行すると、次の6つのメッセージボックスが表示されました。
「コードを実行すると、最初のFor…Nextステートメントのカウンタ変数iが1になる。
次にネストしているFor…Nextステートメントに処理が移り、
カウンタ変数jが1から3になるまで3回繰り返し処理が行われる。
次に最初のFor…Nextステートメントのカウンタ変数iが2になり、2回目の処理が行われる。
このときもネストしているFor…Nextステートメントは3回処理を繰り返すため…
合計6つのメッセージが表示されるよ」
八木くんの解説が続きます。