使用Application.Run
调用另一个例程时,似乎无法捕获错误。
Sub Test()
On Error Resume Next
Debug.Print Application.Run("SomeRoutine", 1, 2, 3)
End Sub
无论如何都会显示运行时错误对话框。
答案 0 :(得分:1)
那是真的。但是,请尝试使用其他两种方法作为解决方法:
Option Explicit
Sub Test()
On Error Resume Next
SomeRoutine 1, 1, 1
Call SomeRoutine(2, 2, 2)
Application.Run "SomeRoutine", 3, 3, 3
End Sub
Public Sub SomeRoutine(a, b, c)
Debug.Print a
Debug.Print 5 / 0
End Sub
使用Call
和w / o Call
,您可以整齐地捕获错误。使用Application.Run
- 不,因为它就像是外部呼叫。
通常,您可以使用 Singleton设计模式在类中创建Sub SomeRoutine
。因此,您可以通过CallByName
访问它,如下所示:
Call CallByName(objSingleTonClass, "SomeRoutine", VbMethod, 5)