使用Application.Run
调用另一个例程时,似乎无法捕获错误。
Sub Test()
On Error Resume Next
Debug.Print Application.Run("SomeRoutine", 1, 2, 3)
End Sub
仍然会显示运行时错误对话框。
最佳答案
确实如此。但是,请尝试其他两种方法中的一种作为解决方法:
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
和不使用Call
,您可以整齐地捕获错误。使用Application.Run
-不,因为它就像一个外部调用。通常,您可以使用Singleton设计模式在类中创建
Sub SomeRoutine
。因此,您将可以通过CallByName
像这样访问它:Call CallByName(objSingleTonClass, "SomeRoutine", VbMethod, 5)