【发布时间】:2018-05-28 21:53:04
【问题描述】:
我发现了类似的问题,但是对于其他问题,似乎是从另一个应用程序调用 Excel 并在 Excel 应用程序关闭后留下进程。
就我而言,我的 Excel 文件中有一个宏,当出现错误时我会尝试关闭应用程序。
我的错误处理是这样设置的:
'Code code code
CleanExit:
Logger.LogData LOG_DEBUG, MODULE_NAME, "Initialize", "Some module initialized!"
Exit Function
ErrorExit:
Logger.LogData LOG_ERROR, MODULE_NAME, "Initialize", "Error found! Description: " & err.description
Main.HandleError err, MODULE_NAME, "Initialize"
GoTo CleanExit
End function
我希望我的宏在某个模块中发生错误时停止运行,并且如果它在另一个模块中则不要停止(因此 GoTo CleanExit)。
错误处理程序是这样设置的:
Public Function HandleError(ByRef err As ErrObject, ByVal moduleOrgin As String, ByVal methodOrgin As String)
Dim wbk As Workbook
'Do something if module origin meets my parameters and exit function right here if my conditions are met
MsgBox "Some message to the user about the problem"
If GetSetting(SETTING_HIDE_APPLICATION, False) = True Then
For Each wbk In addinWorkbook.Application.Workbooks
wbk.Saved = True
Next wbk
addinWorkbook.Application.Quit
End If
End Function
在此代码运行后,我假设所有进一步的代码运行都停止,因为我的 Excel 工作簿(我的宏代码所在的)已随应用程序关闭。
实际上,我收到一连串错误,错误消息显示 3 次,直到它永久关闭。 如何避免在 Application.Quit 方法之后运行任何代码?
发生错误时的代码工作流程以及 Application.Quit 之后运行的内容:
- 初始化表单的主要方法
- 调用引发错误的加载器方法(应用程序应在此处退出)
- 加载器方法完成后主方法继续
- 从 main 方法调用的后续方法也会引发错误(因为第一个加载程序失败)
- 最后我的main方法报错了
我总共收到 3 个带有错误描述的 msgbox。
我必须注意,我在所有方法中使用相同的错误处理过程,但我希望代码停止执行,因此进一步的代码不会触发任何错误。
【问题讨论】: