Excel VBAにはContinueステートメントがないため、ループ内で特定の条件に基づいて次のイテレーション(繰り返し処理)に進むためには工夫が必要です。ここでは、GoToステートメントを利用してForループやDo Whileループ内でこの操作を行う方法を説明します。【VBA】IF文の基本的な使用方法と複数条件の考え方
ループ内での条件判定
特定の条件で処理をスキップしてループの次のイテレーションへ進む場合、通常はIf文内にその条件を記述し、その条件がTrueの場合にスキップします。以下に具体的なコードの例です。
Forループの例
Dim i As Integer
For i = 1 To 10
If i Mod 2 = 0 Then ' iが偶数の場合
GoTo ContinueLoop
End If
' 奇数の場合に実行する処理
MsgBox "奇数: " & i
ContinueLoop:
Next i
この例では、iが偶数の場合、MsgBoxの呼び出しをスキップして次のループのイテレーションに進みます。GoToステートメントは、ループの終わりに配置されたラベル(この場合はContinueLoop)へジャンプします。
Do Whileループの例
Dim count As Integer
count = 1
Do While count <= 10
If count Mod 3 = 0 Then ' countが3の倍数の場合
count = count + 1
GoTo ContinueLoop
End If
' 3の倍数でない場合に実行する処理
MsgBox "3の倍数ではない: " & count
count = count + 1
ContinueLoop:
Loop
この例では、countが3の倍数の場合、MsgBoxの呼び出しをスキップして、ループの次のイテレーションに進むためにcountをインクリメントした後にGoToを使用しています。
注意点
GoToステートメントはコードの流れを読みにくくする可能性があるため、使用する際は慎重になる必要があります。コードの可読性を保ちつつ、目的に合った最適な方法でループの制御を行うことが重要です。
まとめ
Excel VBAにはContinueステートメントが存在しないため、ループ内の特定の条件で処理をスキップして、次のイテレーションへ進むためにはGoToステートメントを使う方法が一般的です。
この技術を適切に使用することで、特定の条件下での処理を効果的に制御できます。