今回は任意のタイミングでFor文を抜ける方法を紹介したいと思います。
VBAに関する記事を不定期で投稿していますので、併せてご覧ください!
任意のタイミングでFor文を抜ける方法
For文を使用していて、
![](https://masashi-blog418.com/wp-content/uploads/2022/09/b0261.png)
特定の値になったら途中で処理を抜けたい・・・
ってなることがあるかと思います。
そんな時はExit Forを使うと残りの処理回数にかかわらずFor文を抜けることができます。
For i = 1 To 5
Exit For
Next i
どんな挙動をするか分からないと思うので、実際にExit Forを使用しない場合とした場合とで見比べてみましょう。
先に使用しない場合です。
![任意のタイミングでFor文を抜ける方法_1](https://masashi-blog418.com/wp-content/uploads/2023/03/image-17.png)
Exit Forを使用していないので通常通り処理が行われ、iの値が6になった時に抜けています。
続いて使用した場合についてです。
![任意のタイミングでFor文を抜ける方法_2](https://masashi-blog418.com/wp-content/uploads/2023/03/image-16.png)
先程はi=6で抜けていましたが、i=1の段階でFor文を抜けているのが分かるかと思います。
このようにExit Forを使用することで、任意のタイミングで強制的にFor文を抜けることができるようになります。
Exit Forの使用例
次にExit Forの使用例について簡単に紹介します。
Exit ForはそのままFor文の中に書くよりは、IF文と組み合わせて特定の条件下で処理から抜ける、といった使い方をします。
For i = 1 To 5
If 【条件式】 Then
Exit For
End If
Next i
セルの値に応じてExit Forを実行させる
初めにセルの値に応じてExit Forを実行させる方法です。
イメージとしては、For文の添え字の値とセル番地をリンクさせてIF文で判定し、途中で特定の値が入ったセルがあればその時点でExit Forを実行してFor文を抜ける、みたいな感じです。
ピンとこない方も多いと思うので、サンプルコードの紹介です。適当なシートに貼り付けて実行してみてください。
Sub test_ForExit_Cells()
Dim i As Long
Dim targetVal As String
targetVal = "はりぼなブログ"
For i = 0 To 10
If Range("A1").Offset(i, 0) = targetVal Then
Exit For
End If
Next i
If i = 11 Then
MsgBox targetVal & "はありませんでした。"
Else
MsgBox 1 + i & "行目に" & targetVal & "が見つかりました。"
End If
End Sub
A列の任意のセル(繰り返し上限回数より上に!)にtargetValと同じ値を入力しておきます。
![Exit Forの使用例_セルの値に応じてExit Forを実行させる_1](https://masashi-blog418.com/wp-content/uploads/2023/03/image-18.png)
今回はA7セルに「はりぼなブログ」を入力しておき、マクロを実行してみましょう。
![Exit Forの使用例_セルの値に応じてExit Forを実行させる_2](https://masashi-blog418.com/wp-content/uploads/2023/03/image-19-1024x917.png)
7行目に「はりぼなブログ」が見つかった旨のメッセージボックスが表示されました。
まとめ
今回は任意のタイミングでFor文を抜ける方法について紹介しました。
Exit Forを使用する際は、IF文と組み合わせて特定のタイミングで実行させて処理を抜ける、といった使い方をするようにしましょう。
コメント