VBA【Exitステートメント】様々な処理の中断方法

ロゴ



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうもtakaです(^^)/

今回説明させていただくのは、さまざま処理を中断または抜け出す時に使われる【Exitステートメント】です。

Exitステートメントの種類

Exitステートメントにはいくつかの種類があり、それぞれ処理を抜ける部分を指定する形になっています。

  • Exit Sub
  • Exit Function
  • Exit Property
  • Exit For
  • Exit Do

この5つのステートメントによって様々な処理の制御ができます(^^♪

ステートメント説明
Exit SubSubプロシージャーを抜け出します。
Exit FunctionFunctionプロシージャーを抜け出します。
Exit PropertyPropertyプロシージャーを抜け出します。
Exit ForFor ループを抜け出します。
Exit DoDo…Loop ループを抜け出します。

Exitそれぞれの書式

Exitステートメントのそれぞれの使い方について簡単なサンプルコードを用意しましたので参考までにご覧ください(^^♪

Subプロシージャから抜け出す:Exit Sub

まず一番使うであろうExit subの使い方から(^^)/

Sub sample()

i = 0
 If i = 0 Then
   MsgBox "iが0です処理を終了します"
    Exit Sub 'iが0だった場合、ここでこのSubプロシージャーは終了。処理は終了します
   Else
    'iが1以上だった場合はこちら
    MsgBox "処理をします"
  End If

End Sub

Exit subはSubプロシージャから抜け出すときに使います。

Functionプロシージャから抜け出す:Exit Function

Exit Functionは下記のような形で使います(-ω-)/

Private Sub test()

    Call Exittest  '①CallでFunction Exittest()を呼び出す。
    
    '③ここの時点で処理は終了しているので MsgBox ("3")は実行されない
    MsgBox ("3")

End Sub
Function Exittest()

    MsgBox ("1")
    
 Exit Function '②ここで処理は終了   MsgBox ("2")は実行されない
   
    MsgBox ("2")
  
    
End Function

Exit FunctionはFunctionプロシージャから抜け出すときに使います。

Forループから抜け出す:Exit For

私の場合はExit ForはFor Nextなどの【Forループ】の使用時に条件的に抜け出したい時によく使っています(;^ω^)

Sub sample()

  Dim i As Long
    For i = 1 To 10
     If i <= 5 Then
       MsgBox i
     Else
     'iが3以上になったらエラーとして処理がこちらに来る
      MsgBox "終了します"
    Exit For 'Forループを抜け出す
  End If
 Next i
 
MsgBox "終了後はここに処理が来ます"

'~処理~

End Sub

Do…Loop ループから抜け出す:Exit Do

Exit DoはDo…Loop を使用時に無限ループ防止のために使うことが割と多いです(;´Д`)

Sub sample()

    Dim i As Integer
    i = 1
    Do Until i = 5
        If i < 3 Then
            MsgBox i
                i = i + 1  

              Else
           'iが3以上になったらエラーとして処理がこちらに来る
            Exit Do 'Loopを抜け出す

           End If
      Loop
    
        MsgBox "終了後はここに来ます"

'~処理~

End Sub

実際の使用例

上のコードはあくまでサンプルコードなので私はUserformやシート上での入力処理などの時の空白かどうかの判定によく使っています。

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
   MsgBox "お名前が空白です、入力してください"
   Exit Sub
   End If

上記のようにボタンをクリックされた時に条件が合わなかった場合などに使うと便利です。

Exitは基本的にIFや変数・繰り返し処理について理解して使うことで処理の幅が広がると思います(^^♪

フォロー・チャンネル登録お願いします

VBA以外についてのブログはこちら↓

https://yb-log.com/

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

ロゴ

4 件のコメント

  • I’m glad that it turned out so effectively and I hope it will continue in the future because it is so worthwhile and meaningful to the community. kfdgaccggeee

  • Fantastic website. A lot of useful information here. I’m sending it to a few pals ans also sharing in delicious. And naturally, thank you in your sweat! ddkfdcdbbkae

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です