首页 > 解决方案 > 工作簿自动打开 + MsgBox 作为用户响应的运行时错误

问题描述

我试图将 MsgBox 放入我的代码中。仅当调用 Table.auto_open 不起作用时才应显示它。

在我的最终文档中,很少有这些 Call 语句,如果一个或几个 Call 语句不起作用,我只想得到那个 msgbox。例如,“Auto_open”将更改为“auto_op”,这自然是不可能的,因为在实际工作表中它是“Auto_open”。或者在另一个例子中,来自“Auto_open”的代码被破坏了。

我需要一些帮助。这似乎很简单,但我认为不可能像那样将“On Error GoTo”代码放在那个地方,因为Call不会给我一个真正的错误?

有人可以说我做错了什么吗?我已经尝试了该错误处理的所有组合,但没有任何效果。

Private Sub Workbook_Open()

On Error GoTo Error
 Call Tabelle1.auto_open
Exit Sub
 Error:
 MsgBox "Failure"
Resume Next
End Sub

标签: excelvba

解决方案


如果你正在调用一个不存在的 sub,你会得到一个Compile Error.

您可以通过转到VBE>Debug>Compile VBAProject来检查这些错误(或者只是尝试运行宏)

Compile Errors, 很像Syntax Errors, 必须在运行子程序之前处理。因此,这些错误不能用诸如此类的代码来处理,On Error GoTo EH或者On Error Resume Next因为这些错误仅在子程序实际运行时才被激活。

您可以通过生成常见的编译错误或语法错误并尝试单步执行代码 ( F8) 来说服自己。您会注意到错误发生在您的Sub [Name] ()线路上,这表明您在错误发生之前从未真正输入过您的 sub。因此,您可以直观地看到您的错误处理程序实际上永远不会被激活,从而导致显示错误消息。

一旦你考虑了所有的编译/语法错误,你可以查看这个链接,它将解释Run Time Errors当你从一个 sub 调用其他 sub 过程时如何处理。


推荐阅读