如何在Application.Quit方法

时间:2018-05-28 13:31:14

标签: excel vba excel-vba

我发现了类似的问题,但是对于其他问题,似乎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之后运行的内容:

  1. 初始化表单的主要方法
  2. 调用load方法抛出错误(应用程序应该在此处退出)
  3. 加载方法完成后,主方法继续
  4. 从main方法调用后续方法,该方法也会抛出错误(因为第一个加载器失败)
  5. 最后我的主要方法抛出错误
  6. 总共收到3个包含错误说明的msgbox。

    我必须注意,我在所有方法中使用相同的错误处理过程,但我希望代码停止执行,因此进一步的代码不会触发任何错误。

1 个答案:

答案 0 :(得分:2)

如何避免代码在Application.Quit方法之后运行任何代码?

如果您想停止所有内容,请在End之后写下Application.Quit。它会停止每个VBA并杀死您分配的所有变量。 这不是一个好习惯(根本不是!),但它会完全按照您的意愿工作。

相关问题