VBAでは、異なる種類のループを入れ子(ネスト)にして使うことが可能です。この記事では、Do While
ループの中にFor Next
ループを入れる構造について解説します。
このようなネスト構造は、条件によって繰り返しながら、さらにその中で一定回数の処理を行いたい場合などに有効です。
1. 基本構文
Dim i As Integer
Dim j As Integer
i = 1
Do While i <= 3
For j = 1 To 2
Debug.Print "i=" & i & ", j=" & j
Next j
i = i + 1
Loop
出力結果:
i=1, j=1
i=1, j=2
i=2, j=1
i=2, j=2
i=3, j=1
i=3, j=2
このように、Do While
で繰り返している間に、For Next
で2回の処理を繰り返しています。
2. 使用例:条件ごとの複数処理
例えば、入力が空白でない限り行を増やしながら、その中で複数の列に同じデータを書き込むなどの処理が可能です。
Dim row As Integer
Dim col As Integer
row = 1
Do While Cells(row, 1).Value <> ""
For col = 2 To 4
Cells(row, col).Value = "データ"
Next col
row = row + 1
Loop
このコードは、1列目にデータがある行に対して、2列目~4列目に”データ”という文字列を入力します。
3. 注意点
インデントを揃えて読みやすく
ネスト構造になると、見た目が分かりづらくなりやすいため、インデント(字下げ)をしっかり行いましょう。
外側ループの条件が正しいかチェック
Do While
が想定通りに終了しないと、内側のFor
も繰り返し続けてしまう可能性があります。
ネストの深さに注意
複雑なロジックは処理を関数に分けるなどして、可読性を保ちましょう。
4. まとめ
Do While
の中にFor Next
を入れることで、柔軟な繰り返し処理が可能になります。条件付きで処理を繰り返しつつ、その中で固定回数の操作をしたいときなどに便利な構文です。
ネスト構造はVBAの力を引き出すテクニックの一つ。上手に使いこなして、効率的な処理を実現しましょう。
コメント