2015-04-07 71 views
0

我想弄清楚是否有可能爲我的所有潛艇有一個單一的錯誤處理程序?每當出現錯誤時我處於需要退出子項的狀態,並跳過所有下一個子項。在VBA中使用錯誤處理

Sub Runall() 
Call A 
Call B 
Call C 
Call D 
End sub 

現在,如果在一個子一個錯誤,我不希望運行B,C,d和同樣的事情B.應從何處我的,我把我的錯誤處理程序?我實際上非常困惑,因爲如何使用EXIT語句很重要。請指教。

+0

可能的複製http://stackoverflow.com/questions/14940697/Excel的VBA的全局錯誤處理)。你能檢查接受的答案,看看它是否適合你? – Ioannis

回答

1

試試這個

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 
+0

我可以在哪裏放置錯誤處理程序。對不起,但我創建了某些新的工作表,我需要刪除任何錯誤的情況下謝謝。 – Jain

1

這裏是我會怎麼做。
在呼叫子中包含On Error GoTo Handler:

一旦這些潛艇在 will take over引發錯誤On Error(監守如果子缺失的錯誤處理程序,它會嘗試使用電話子的錯誤處理程序),並與其GoTo是將跳過一切,直到它看到Handler

請記住,在Handler之前,您需要包含Exit Sub或VBA中的Handler將被使用,無論您是否有錯誤。

這裏是一個 「failling」 例如:

Sub RunAll() 
    On Error GoTo Handler 
    Call A 
    Call B 
    Exit Sub 
Handler: 
     Debug.Print "testing" 
End Sub 

的[本](A

Sub A() 
    Dim fail As Integer 

    fail = 1/1 
End Sub 

Sub B() 
    Dim fail As Integer 

    fail = 1/0 
End Sub