我有一本关于VBA的excel书。当触发错误时,我尝试关闭整个Excel应用程序。但我发现Excel会话仍在Windows任务管理器中运行。因此,在我正确重启应用程序并运行VBA程序之前,我必须终止会话。
如何处理错误,以便即使出现错误,我仍然可以运行VBA程序而不会杀死并重新启动Excel本身?
答案 0 :(得分:2)
在子/函数写的顶部
'ErrHandler is a label we put at the bottom of our code section.
On Error Goto ErrHandler
位于函数/ sub
的底部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语句,否则您将在执行结束时输入代码块
错误对象用于获取子/函数的错误部分中的错误信息。您可以根据错误类型使用它来执行不同的操作。
例如
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
捕获特定错误代码的不错参考。
答案 1 :(得分:1)
如果您已使用以下行让用户控制应用程序
xlApp.Visible = True
xlApp.UserControl = True
它不会消失,否则End
子或函数应该释放错误的进程