この記事では、VBAでFor文を実行中に、条件に応じて処理を途中でやめる方法をご紹介していきます。
実際のコードとその実行結果を画像で紹介していきますので、初心者にもわかりやすい内容になっていると思います。
それではさっそくやっていきましょう。
For文を途中でやめるExit Forの使い方
VBAのFor文を途中でやめるには、Exit Forという文をFor-Nextの間に挟むだけでOKです。
以下がそのサンプルコードです。
Sub test()
Dim i As Integer
'Exitのテスト
For i = 1 To 10
Cells(i, 2) = i
If Cells(i, 1) > 5 Then
Exit For
End If
Next
'関係ない適当な処理
For i = 1 To 10
Cells(i, 3) = i
Next
End Sub
今回は以下の状況下で、先ほどのコードを実行してみましょう。
〇実行前
〇実行後
コード中の一回目のFor文は、A列の数値が5よりも大きくなったら処理をやめるように設定していますので、B列へのデータ入力はfor文の指定回数に届かずに終了していますね。
また、一回目のFor文を抜けたあとも処理は継続され、二回目のFor文は実行されていることがわかると思います。
Exit ForとExit Subの違い
Exit-Forとよく似たものとして、Exit-Subというものもあります。
似たような機能ではありますが、これらには明確な差があります。
Exit Forはどのような場面で使うものなのかを理解してもらうために参考までに先ほどのコードのExit For をExit Subに書き換えて実行してみましょう。
以下がそのコードです。
Sub test()
Dim i As Integer
'Exitのテスト
For i = 1 To 10
Cells(i, 2) = i
If Cells(i, 1) > 5 Then
Exit Sub
End If
Next
'関係ない適当な処理
For i = 1 To 10
Cells(i, 3) = i
Next
End Sub
さっそく実行してみましょう。
〇実行前
〇実行後
先ほどのExit For の場合だと二回目のFor文まで実行されていましたが、Exit Subだと実行されていません。
要はExit Subは実行された時点ですべてのマクロ処理が停止するわけですね。
一方でExit ForはそのFor文が終わるだけでその後のマクロ処理は継続されます。
ここが両者の大きな違いですね。
(まぁ名前からだいたい想像つくとは思いますが。)
おわりに
というわけでFor 文実行中に条件に応じて途中で止める方法をご紹介しました。
処理が複雑化してくると使用する場面も出てきますので、ぜひやり方をマスターしておきましょう。
今回紹介したExit Subをもう少し詳細に説明した記事は以下になります。
こちらもあわせてご覧ください。
【VBA】IF文の条件に応じて処理を停止する方法!ExitSubの使い方!
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント