Excel 工作簿自动打开时出现运行时错误+;MsgBox作为用户的响应

Excel 工作簿自动打开时出现运行时错误+;MsgBox作为用户的响应,excel,vba,Excel,Vba,我试图将MsgBox放入我的代码中。仅当call Table.auto_open不起作用时,才应显示它 在我的最后一篇文档中,有几个Call语句,如果一个或几个Call语句不起作用,我只想得到那个msgbox。 例如,“Auto_open”将更改为“Auto_op”,这自然是不可能的,因为在实际工作表中它是“Auto_open”。 或者在另一个例子中,来自“Auto_open”的代码被破坏 我需要一些帮助。这看起来很简单,但我认为不可能像这样把“On Error GoTo”代码放在那个地方,因为

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

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

我需要一些帮助。这看起来很简单,但我认为不可能像这样把“On Error GoTo”代码放在那个地方,因为调用不会给我一个真正的错误

有人能告诉我我做错了什么吗?我已经尝试了所有错误处理的组合,但没有任何效果

Private Sub Workbook_Open()

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

如果您正在调用一个不存在的sub,您将得到一个编译错误

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

编译错误
,很像
语法错误
,必须在运行sub之前进行处理。因此,这些错误不能用诸如“错误转到EH”时的
或“错误恢复下一步时的
之类的代码来处理,因为只有在sub实际运行时才会激活这些错误

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

一旦您解释了所有编译/Sytax错误,您就可以签出,这将解释当您从子过程调用其他子过程时如何处理
运行时错误