Workbook Auto Open + MsgBox的运行时错误作为用户的响应

问题描述 投票:3回答:1

我试图将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
excel excel-vba vba
1个回答
2
投票

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

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

Compile Errors,就像Syntax Errors一样,必须先处理才能运行sub。因此,使用On Error GoTo EHOn Error Resume Next等代码无法处理这些错误,因为只有在子实际运行时才会激活这些错误。

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

一旦你考虑了所有编译/ Sytax错误,你可以查看this link,它将解释当你从子调用其他子程序时如何处理Run Time Errors

© www.soinside.com 2019 - 2024. All rights reserved.