Vba: エラー時に sub を終了する方法
VBA でExit Subステートメントを使用すると、エラーが発生したときにサブプロシージャを終了できます。
このステートメントを実際に使用する一般的な方法は次のとおりです。
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
この特定のマクロは、範囲A1:A10の各値を範囲B1:B10の対応する値で除算しようとします。
エラーが発生した場合 (たとえば、ゼロで除算しようとしている場合)、 On Error GoToステートメントは VBA にErrorMessageにアクセスするように指示します。これにより、エラーが発生したことをユーザーに通知するメッセージ ボックスを生成し、 Exist Sub を使用してサブプロシージャを終了するように指示されます。 。ステートメント。ステートメント。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA でエラーが発生した場合にサブルーチンを存在させる方法
列 A と B に次の値のリストがあるとします。
ここで、列 A の各値を列 B の対応する値で除算し、結果を列 C に表示する次のマクロを作成するとします。
Sub DivideValues()
Dim i As Integer
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
End Sub
このマクロを実行すると、次のエラーが表示されます。
Excel シートの 4 行目でゼロで除算しようとしたため、このエラーが発生します。
このエラーが発生したときにサブプロシージャを単に終了したい場合は、次のようにExit Subステートメントを使用できます。
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
このマクロを実行すると、サブプロシージャはエラーが発生する前に考えられるすべての除算問題を実行します。その後、エラーが発生し、VBA がサブプロシージャ内に存在しているだけであることを示すメッセージ ボックスが表示されます。
注: VBA のExitステートメントの完全なドキュメントは、 ここで見つけることができます。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。