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ループの中で特定の条件に基づき現在の反復をスキップし次の反復に進む際の効果的な手法です。このテクニックは、不要な処理を省略しプログラムの効率を向上させるのに役立ちます。