VBAの For Nextループ は、通常 指定回数すべての繰り返しを実行 しますが、Exit For
を使うことで 特定の条件を満たした時点でループを抜ける ことができます。
本記事では Exit For
の基本構文と実用例を解説します。
目次
1. Exit Forの基本構文
For 変数 = 開始値 To 終了値
If 条件 Then Exit For
'ループ内の処理
Next 変数
✅ ポイント:
If 条件 Then Exit For
を記述することで 条件を満たした時点でループ終了- その後の繰り返しは 実行されない
2. Exit Forの基本的な使い方
(1) 指定の値になったらループを終了
例えば、1~10の数字をループし、5になったら終了する場合:
Dim i As Integer
For i = 1 To 10
If i = 5 Then Exit For '5になったらループ終了
Debug.Print "現在の値:" & i
Next i
出力結果:
現在の値:1
現在の値:2
現在の値:3
現在の値:4
(5を出力するで終了)
✅ ポイント:
i = 5
になった時点でExit For
によりループ終了6~10
の処理は実行されない
3. Exit Forの活用例
(1) 特定の値を見つけたらループを終了
配列の中から 特定の値を探し、見つかったらループを抜ける 場合
Dim i As Integer, target As Integer
Dim numbers() As Integer
numbers = Array(10, 20, 30, 40, 50)
target = 30 '探す値
For i = LBound(numbers) To UBound(numbers)
If numbers(i) = target Then
Debug.Print "値 " & target & " を発見! インデックス: " & i
Exit For '見つかったらループ終了
End If
Next i
出力結果:
値 30 を発見! インデックス: 2
✅ ポイント:
- 配列を検索し 30を見つけた時点でループを抜ける
- 無駄な処理を減らせるので効率的
(2) エラー回避:異常値を検出したらループを終了
例えば、リストの中に 負の数が出たら処理を中断 する:
Dim i As Integer, numbers() As Integer
numbers = Array(5, 8, 12, -3, 15) '-3が異常値
For i = LBound(numbers) To UBound(numbers)
If numbers(i) < 0 Then
Debug.Print "異常値 " & numbers(i) & " を検出! 処理を中断"
Exit For
End If
Debug.Print "処理中:" & numbers(i)
Next i
出力結果:
処理中:5
処理中:8
処理中:12
異常値 -3 を検出! 処理を中断
✅ ポイント:
- 負の数(異常値)を発見したら即終了
- エラーが発生しそうな処理を 安全に回避 できる
(3) ユーザー入力によるループの終了
ユーザーに 途中で処理を中断する選択肢を与える ことも可能
Dim i As Integer, answer As String
For i = 1 To 10
answer = InputBox("処理を続けますか?(yes/no)")
If LCase(answer) = "no" Then
Debug.Print "ユーザーが処理を終了しました"
Exit For
End If
Debug.Print "処理中:" & i
Next i
✅ ポイント:
InputBox
でユーザーの入力を取得- “no” が入力されたら
Exit For
で処理を停止
4. Exit Forの注意点
(1) Exit Forを使いすぎない
Exit For
は便利ですが、使いすぎるとコードが読みにくくなる- 条件を整理し、できるだけ通常のループの流れで書くことを意識する
(2) 多重ループの中でのExit For
Exit For
は 現在のループだけを抜ける
For i = 1 To 3
For j = 1 To 3
If j = 2 Then Exit For '内側のループのみ抜ける
Debug.Print "i:" & i & " j:" & j
Next j
Next i
出力結果:
i:1 j:1
i:2 j:1
i:3 j:1
✅ ポイント:
Exit For
は 内側のループのみ終了 する- 外側のループは継続
5. まとめ
用途 | 方法 |
---|---|
特定の値でループを終了 | If 条件 Then Exit For |
配列の検索を最適化 | 目的の値が見つかったら Exit For |
エラー回避 | 異常値を検出したら Exit For |
ユーザーの操作で終了 | InputBox を使用し Exit For |
多重ループでの注意点 | Exit For は 1つのループのみ 抜ける |
「Exit For」を活用すると無駄な処理を省いて効率的なコードを書くことができます!
コメント