在VBA中使用error handling
我想弄清楚是否有可能为我的所有潜艇有一个单一的error handling程序? 我处于一种情况,即在出现错误时需要退出子节点,并跳过所有下一个子节点。
Sub Runall() Call A Call B Call C Call D End sub
现在,如果在亚AI中有一个错误不想运行B,C,D和B的相同的东西。我应该把我的error handling程序? 我实际上非常困惑,因为如何使用EXIT语句很重要。 请指教。
尝试这个
Sub Runall() Call A On Error GoTo Errhandler Call B On Error GoTo Errhandler Call C On Error GoTo Errhandler Call D On Error GoTo Errhandler ' Exit the macro so that the error handler is not executed. Exit Sub Errhandler: ' If an error occurs, display a message and end the macro. MsgBox "An error has occurred. The macro will end." End sub
这是我该怎么做的。
包括On Error GoTo Handler:
在调用子。
一旦这些子提出一个On Error
在RunAll
On Error
将接pipe (因为如果一个子丢失error handling程序它将尝试使用调用子的error handling程序),并与其GoTo
将跳过一切,直到它看到Handler
。
记住,在Handler
程序之前,您需要在Handler
中包含Exit Sub
或VBA,而不pipe您是否有错误。
这是一个令人失望的例子:
Sub RunAll() On Error GoTo Handler Call A Call B Exit Sub Handler: Debug.Print "testing" End Sub
一个
Sub A() Dim fail As Integer fail = 1 / 1 End Sub
乙
Sub B() Dim fail As Integer fail = 1 / 0 End Sub