excel - 如何显示一个错误消息框,然后继续代码

标签 excel vba error-handling

我有一个宏,可以运行多个其他宏。如果它调用的一个宏发生错误,我希望代码跳到下一个宏。我还希望在发生错误时出现一个消息框,以便我知道在哪个宏中发生了错误。因此,我希望发生错误时出现的消息框发生更改,以便告诉我该宏的名称。


Sub Update_ALL()

                ' Run All the macros

                    Call Macro_1

                    Call Macro_2

                    Call Macro_3

                    Call Macro_4  

                    Call Macro_5  

                    Call Macro_6 

                    Call Macro_7 

                    Call Macro_8                    

End Sub


代码非常简单,但是我无法弄清楚如何在出现错误时跳至下一个宏并具有变化的消息框。

谢谢您的帮助!

最佳答案

更改您的“宏”以处理并重新抛出错误,在对Source的调用中为错误的Err.Raise指定一个参数:

Public Sub Macro_1()
    On Error GoTo CleanFail
    '...original code here...
    Exit Sub
CleanFail:
    Err.Raise Err.Number, "Macro_1", Err.Description
End Sub

如果在执行Macro_1时发生错误,则Err.Source将为“Macro_1”。

现在,在“主要”过程中,您需要处理这些冒泡的错误- pop MsgBox并将Err.Source用作例如标题(或根据您的喜好),然后使用Resume Next清除错误状态并移至下一个宏:
Public Sub Update_All()
    On Error GoTo CleanFail
    Macro_1
    Macro_2
    '...
    Macro_8
    Exit Sub
CleanFail:
    MsgBox Err.Description, vbExclamation, Err.Source
    Resume Next
End Sub

考虑使用有意义的名称重命名您的过程,例如FormatSummarySheetUpdateOrdersTable

关于excel - 如何显示一个错误消息框,然后继续代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598421/

相关文章:

error-handling - 如何在唯一错误页面html中使用Thymeleaf开关管理HTTPStatus

asp.net-mvc - .net mvc 404自定义错误页面有时只能工作

excel - 删除工作簿中每个数据透视表的筛选器

sql - Excel中有类似合并的函数吗?

excel - 2010年(2013年)Excel VBA中控制突破无限循环

Excel VBA - 检查工作表是否受密码保护

amazon-web-services - AWS X-Ray为什么不显示错误?

android - 在 Android 中从 Web View 编辑 Google 文档

vba - 使用 sendKeys 函数使用另一个宏(按钮)停止执行宏

java - 从 Java 代码调用 VB 宏