VBAでネスト:Do Whileの中にFor Nextを入れる

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の力を引き出すテクニックの一つ。上手に使いこなして、効率的な処理を実現しましょう。

コメント

タイトルとURLをコピーしました