ES000006_VBAエキスパート(ExcelVBAスタンダード)合格講座/第六回:Exitステートメント

VBAエキスパート(ExcelVBAスタンダード)合格講座/第六回:Exitステートメント ExcelVBA Standard

このページの内容について

このページは、VBAエキスパート(ExcelVBAスタンダード)試験合格講座の第六回記事です。公式テキスト第3章「ステートメント」の内容について解説します。自分でも手を動かしながら読み進めてください。主に講座受講者の復習での利用を想定しています。

Exitステートメント

プロシージャを終了させる

プロシージャは通常「End Sub」や「End Function」に到達すると終了します。しかしプロシージャの実行中にもプロシージャを終了させる方法があります。

サンプルコード(クリックでコピー)

Private Sub Test_Exit()

Dim input_val As String

input_val = Application.InputBox("自由入力")

If input_val = "False" Then Exit Sub

Call MsgBox(input_val)

End Sub

実行結果

上記サンプルコードはInputBoxでユーザーからの入力を受け付けます。キャンセルボタンを押した場合、InputBoxは「False」を返します。キャンセルボタンが押された場合、Msgboxは実行されず、Subプロシージャを終了します。OKボタンが押された場合、入力内容をそのままメッセージに表示します。

Functionプロシージャを終了させる場合は「Exit Function」を指定します。

マクロの動作を終了させることはできない

「Exit Sub」「Exit Function」はプロシージャを終了させるステートメントです。マクロを終了させるわけではありません。そのため、呼び出し先のExitステートメントは呼び出し元に影響しません。

サンプルコード(クリックでコピー)

Private Sub Test_CallExit()

Call MsgBox(CalledExit("呼び出し先でExitしてもこのメッセージは表示される"))

End Sub

Private Function CalledExit(ByVal val)

CalledExit = val
Exit Function

End Function

実行結果

上記サンプルコードは「Test_CallExit」を実行すると「CalledExit」という関数を呼び出します。CalledExitでは、渡された引数をそのまま呼び出し元に返した後「Exit Function」でプロシージャを終了させます。このとき、Exitステートメントは呼び出し元には影響せず、Test_CallExitは返された値をメッセージで出力します。

補記:マクロを終了させるには

「Exit Sub」「Exit Function」は呼び出し元に影響しません。呼び出し先でマクロの動作を終了させたい場合、Endステートメントを使用します。

サンプルコード(クリックでコピー)

Private Sub Test_CallEnd()

Call MsgBox(CalledEnd("呼び出し先でEndするとこのメッセージは表示されない"))

End Sub

Private Function CalledEnd(ByVal val)

CalledEnd = val
End

End Function

実行結果

上記サンプルコードは「Test_CallEnd」を実行すると「CalledEnd」という関数を呼び出します。CalledEndでは、渡された引数をそのまま呼び出し元に返した後「End」でマクロを終了させます。Exitステートメントとは異なり、Test_CallEndは返された値をメッセージで出力しません。

繰り返し処理を終了させる

Exitステートメントは繰り返い処理を終了させることもできます。

サンプルコード(クリックでコピー)

Private Sub Test_ExitLoop()

Dim d As Double

Do

d = Rnd
Debug.Print d
If d > 0.9 Then Exit Do

Loop

End Sub

実行結果

上記サンプルコードは、変数dにランダムな0以上1未満の値を代入し、イミディエイトウィンドウに出力します。代入された値が0.9より大きい場合、繰り返し処理を終了させます。

For..Next の繰り返しを終了させるには「Exit For」を指定します。

【PR】VBAエキスパート試験対策記事

当サイトでは、オデッセイコミュニケーションズ社が運営する試験であるVBAエキスパートExcel VBA ベーシックExcel VBA スタンダード)の出題範囲をベースに用語や各種関数の解説などを行っています。試験合格に向けて必須と言われる公式テキストに沿って解説をしています。受験をするか悩んでいる方、テキストとは別視点の解説を見てみたい方、受験はしないがExcelVBA(マクロ)に興味がある方へ向けた記事です。

Comment