VBAコード解説

【エクセルVBA初心者講座】基礎から解説するExitステートメントの使い方

exitステートメントの使い方

Exitステートメントってどうやって使うの?

今回はVBAの処理を途中で抜け出すExitステートメントの使い方を説明します。

Exitステートメントには種類がいくつかあるので、「どんな場面で」「どれを利用すべきなのか」迷いがちですが、基礎を理解してしまえば、使うタイミングを適切に判断できるようになると思います。

そこで今回は、初心者でも「Exitステートメントの使い方」が理解できるような基礎的な内容をお伝えしていきます。

こんな人におすすめ

  • Exitステートメントの基礎について学習したい
  • 複数種類があるのでどれを利用すればいいかわからない
  • 意味は理解しているが使い時がわからない

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のデータ
図1

上の図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」の後ろに処理を抜けだすというイメージです。

Test1の実行結果
Test1の実行結果

仮にセルA4にも文字列が入っていた場合は、プロシージャが最後まで実行されてメッセージボックスが表示されます。

Exit Forステートメント

Exit ForはFor NextステートメントまたはFor Each Nextステートメントによる繰り返し処理を抜け出して、Nextの次の行から処理を続けます。

Exit For

Exit Forの使い方の例

図1のデータ
図1

先ほどと同様の図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の後ろに処理を抜けだすというイメージです。

Test2の実行結果
Test2の実行結果

Exit Doステートメント

Exit DoはDo Loopステートメントによる繰り返し処理を抜け出して、Loopの次の行から処理を続けます。

Exit Do

Exit Doの使い方の例

図1のデータ
図1

再度図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の後ろに処理を抜けだすというイメージです。

Test3の実行結果
Test3の実行結果

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冊を紹介

続きを見る

-VBAコード解説