トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > VBAとの出会い編 第6話「星くん、繰り返し構文を学ぶ!」

やってみよう!Excel VBAで業務改善!|VBAとの出会い編

繰り返し構文をネストしよう!

「この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つのメッセージが表示されるよ」

八木くんの解説が続きます。

シーズン1 「VBAとの出会い」編: 各エピソードへのリンク
一覧にもどる