为什么Excel会话必须在VBA错误的Windows任务管理器中被杀死

时间:2013-03-06 16:49:19

标签: excel vba excel-vba

我有一本关于VBA的excel书。当触发错误时,我尝试关闭整个Excel应用程序。但我发现Excel会话仍在Windows任务管理器中运行。因此,在我正确重启应用程序并运行VBA程序之前,我必须终止会话。

如何处理错误,以便即使出现错误,我仍然可以运行VBA程序而不会杀死并重新启动Excel本身?

2 个答案:

答案 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

捕获特定错误代码的不错参考。

http://www.mcoffice.com/faq/edi/errors.html

答案 1 :(得分:1)

如果您已使用以下行让用户控制应用程序

xlApp.Visible = True
xlApp.UserControl = True

它不会消失,否则End子或函数应该释放错误的进程