私はVBAを使ったExcelブックを持っています。エラーが発生すると、Excel アプリ全体を閉じようとします。しかし、Excel セッションがまだ Windows タスク マネージャーで実行されていることがわかりました。そのため、アプリを適切に再起動して VBA プログラムを実行する前に、セッションを強制終了する必要があります。
エラーが発生した場合でも、Excel 自体を強制終了して再起動せずに VBA プログラムを実行できるように、エラーを処理するにはどうすればよいですか?
サブ/関数の書き込みの上部に
'ErrHandler is a label we put at the bottom of our code section.
On Error Goto ErrHandler
関数/サブの下部
Exit Function
ErrHandler:
'Do something here if there is an error
'For Example
Msgbox(Err.Description)
End Function
また
Exit Sub
ErrHandler:
'Do something here if there is an error
'For Example
Msgbox(Err.Description)
End Sub
Exit ステートメントを配置する必要があることに注意してください。そうしないと、実行の最後にコード ブロックを入力します。
err オブジェクトは、サブ/関数のエラー セクションでエラーに関する情報を取得するために使用されます。これを使用して、エラーの種類に基づいてさまざまなことを行うことができます。
例えば。
Select Case err.Number
Case 13
Msgbox("Type Mismatch, macro will continue")
'Go back to the point of the error and resume code execution..
Resume Next
Case Else
Msgbox("A fatal error has occurred. Macro will end " & err.Description)
End Select
特定のエラー コードをキャッチするための優れたリファレンスです。
次の行でユーザーにアプリケーションの制御を与えた場合
xlApp.Visible = True
xlApp.UserControl = True
それは消えません。それ以外End
の場合は、サブルーチンまたは関数を使用して、誤ったプロセスを解放する必要があります