我试图将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
如果你正在调用一个不存在的子,你会得到一个Compile Error
。
您可以通过转到VBE> Debug> Compile VBAProject来检查这些错误(或者只是尝试运行宏)
Compile Errors
,就像Syntax Errors
一样,必须先处理才能运行sub。因此,使用On Error GoTo EH
或On Error Resume Next
等代码无法处理这些错误,因为只有在子实际运行时才会激活这些错误。
您可以通过生成常见的编译错误或语法错误并尝试单步执行代码(F8
)来说服自己。您会注意到Sub [Name] ()
行发生错误,这表示您在错误发生之前从未真正输入过子。因此,您可以直观地看到您的错误处理程序永远不会被激活,从而导致显示错误消息。
一旦你考虑了所有编译/ Sytax错误,你可以查看this link,它将解释当你从子调用其他子程序时如何处理Run Time Errors
。