For文 VBAで自動化 VBAテクニック集 VBA一覧 文法・構文

【VBA】For文:特定の条件の場合 次のループへ進む(スキップ)方法

Excel VBAでは、Forループを使ってデータを反復処理する際、特定の条件に応じて現在の反復をスキップして次の反復に進むことが可能です。この記事では、Continue Forの代わりとして使われるGoToステートメントを利用したテクニックについて解説します。VBAには直接的なContinue For構文が存在しないため、ラベルとGoToを組み合わせる方法を紹介します。

For文で次のループへ進むため基本構文

Forループで次の反復へ進むための基本的な構文は以下の通りです。

For 変数 = 開始値 To 終了値

If 条件式 Then

GoTo NextIteration

End If

' その他の処理

NextIteration:
Next 変数

この構文では、GoTo NextIterationステートメントが現在のループの残りの部分をスキップし、Next 変数により次の反復に進むことを指示します。NextIterationはループ内に配置されたラベルで、この位置から次の反復が開始されます。

For文で次のループへ進む実践的な例

例1【特定の条件でループをスキップ】
以下のVBAコードは、1から100までの数値の中で偶数だけをスキップして奇数のみを処理する例です。

Sub SkipEvenNumbers()

Dim i As Integer
For i = 1 To 100

If i Mod 2 = 0 Then

GoTo SkipToNext

End If

' 奇数の場合のみ処理を実行
Debug.Print "Odd number: " & i

SkipToNext:

Next i

End Sub

このサンプルコードでは、i Mod 2 = 0 (偶数の条件)を満たすと、GoTo SkipToNextが実行され、ループの残りの部分をスキップして次の数値に進みます。この結果、奇数のみが出力されます。

例2【複数条件でのスキップ処理】
複数の条件をチェックして、それらを満たした場合に次のループへ進む例を見てみましょう。

Sub SkipMultipleConditions()

Dim i As Integer
For i = 1 To 100

If i Mod 5 = 0 Or i Mod 3 = 0 Then

GoTo NextLoop

End If

' 3でも5でも割り切れない数の処理
Debug.Print "Number not divisible by 3 or 5: " & i

NextLoop:
Next i

End Sub

このサンプルコードは、iが3または5で割り切れる場合に次の反復に進みます。このため、3や5で割り切れない数値のみが処理されます。

まとめ

GoToステートメントとラベルを使う方法は、VBAでForループの中で特定の条件に基づき現在の反復をスキップし次の反復に進む際の効果的な手法です。このテクニックは、不要な処理を省略しプログラムの効率を向上させるのに役立ちます。

-For文, VBAで自動化, VBAテクニック集, VBA一覧, 文法・構文