Exitステートメントってどうやって使うの?
今回はVBAの処理を途中で抜け出すExitステートメントの使い方を説明します。
Exitステートメントには種類がいくつかあるので、「どんな場面で」「どれを利用すべきなのか」迷いがちですが、基礎を理解してしまえば、使うタイミングを適切に判断できるようになると思います。
そこで今回は、初心者でも「Exitステートメントの使い方」が理解できるような基礎的な内容をお伝えしていきます。
こんな人におすすめ
- Exitステートメントの基礎について学習したい
- 複数種類があるのでどれを利用すればいいかわからない
- 意味は理解しているが使い時がわからない
Contents
Exitステートメントとは
Exitステートメントは、VBAの処理を途中で抜け出す命令です。
何の処理を抜け出すかをExitステートメントの後ろに指定して使います。
- Exit Sub
- Exit Function
- Exit For
- Exit Do
Exit Sub/Functionステートメント
Exit SubはSubプロシージャを、Exit FunctionはFunctionプロシージャを抜け出します。
つまり、どちらもプロシージャを終了させることができます。
Exit Sub
Exit Function
Exit Subの使い方の例
上の図1のデータを用いて実際の動作を見ていきたいと思います。
Sub Test1()
Dim I As Long
For I = 1 To 6
If Cells(I, 1).Value = "" Then
Exit Sub
Else
Cells(I, 1).Interior.Color = vbRed
End If
Next I
MsgBox I & "行目のセルが空欄です"
End Sub
このTest1のコードは、
- セルA1:A6を順番にチェックし
- 空欄以外の場合はセルを赤色に塗りつぶし
- 空欄の場合はプロシージャを終了
という指示になっています。
ただし、空欄が存在してプロシージャが終了された場合、最後のメッセージボックスは表示されません。
「Exit Sub」が実行されたら「End Sub」の後ろに処理を抜けだすというイメージです。
仮にセルA4にも文字列が入っていた場合は、プロシージャが最後まで実行されてメッセージボックスが表示されます。
Exit Forステートメント
Exit ForはFor NextステートメントまたはFor Each Nextステートメントによる繰り返し処理を抜け出して、Nextの次の行から処理を続けます。
Exit For
Exit Forの使い方の例
先ほどと同様の図1のデータを用いて実際の動作を見ていきたいと思います。
Sub Test2()
Dim I As Long
For I = 1 To 10
If Cells(I, 1).Value = "" Then
Exit For
Else
Cells(I, 1).Interior.Color = vbRed
End If
Next I
MsgBox I & "行目のセルが空欄です"
End Sub
このTest2のコードは、
- セルA1:A6を順番にチェックし
- 空欄以外の場合はセルを赤色に塗りつぶし
- 空欄の場合はFor Nextステートメントによる繰り返し処理を抜け出して、「Next」の次の行から処理を続ける
という指示になっています。
今回は、空欄が存在してプロシージャが終了された場合でも、最後のメッセージボックスは表示されます。
これは先程の「Exit Sub」と異なり、プロシージャを終了したわけではなく繰り返し処理を抜け出しただけだからです。
Exit Forが実行されたらNext iの後ろに処理を抜けだすというイメージです。
Exit Doステートメント
Exit DoはDo Loopステートメントによる繰り返し処理を抜け出して、Loopの次の行から処理を続けます。
Exit Do
Exit Doの使い方の例
再度図1のデータを用いて実際の動作を見ていきたいと思います。
Sub Test3()
Dim I As Long
Do While I <= 6
I = I + 1
If Cells(I, 1).Value = "" Then
Exit Do
Else
Cells(I, 1).Interior.Color = vbRed
End If
Loop
MsgBox I & "行目のセルが空欄です"
End Sub
このTest3のコードは、
- セルA1:A6を順番にチェックし
- 空欄以外の場合はセルを赤色に塗りつぶし
- 空欄の場合はDo Loopステートメントによる繰り返し処理を抜け出して「Loop」の次の行から処理を続ける
という指示になっています。
こちらはExit Forステートメントと同様、空欄が存在してプロシージャが終了された場合でも、最後のメッセージボックスは表示されます。
Exit Doが実行されたらLoopの後ろに処理を抜けだすというイメージです。
Exitステートメントのおさらい
今回はVBAの処理を途中で抜け出すExitステートメントの使い方について説明しました。
- Exit Sub
- Exit Function
- Exit For
- Exit Do
Exit subとExit Functionは途中で終了する、Exit forとExit Doは途中で抜け出すとイメージすると分かりやすいと思います。
Exitステートメントが実行されたら、次の処理がどこに飛ぶのかをイメージして、VBAの動きを想定することがポイントです!
以上、「Exitステートメントの使い方|VBAの処理を途中で抜け出す方法」をお伝えしました!
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介
続きを見る