2017-06-24 41 views
-1

Excel VBA中是否存在錯誤恢復標籤?如果答案是否定的,怎麼來的?Excel VBA中是否存在錯誤恢復標籤?

+1

轉到谷歌這樣的事情。我已經低估了,因爲這個問題沒有顯示研究工作,也沒有用處,我也投了贊成票,因爲它太寬泛了。 – CallumDA

+0

在問這個問題之前,你做過任何*研究嗎?在VBA中,它實際上是'On Error Resume Next' ... – BruceWayne

回答

3

是的。見下:

Sub Whatever() 
    On Error GoTo ErrProc 

    '... 

Leave: 
    On Error Resume Next 
    'Clean up 
    On Error GoTo 0 
    Exit Sub 

ErrProc: 
    MsgBox Err.Description, vbCritical 
    Resume Leave 
End Sub 
+0

在處理'ErrProc'中的常規錯誤之後,在程序的清除/重置部分中還包括錯誤處理程序是否是一種好習慣?我的意思是你也使用'On Error Resume Next'和'On Error GoTo 0'在標籤'Leave'中。 – Nicholas

+0

是的,在退出子On On Error GoTo 0之前,重置VBA中的錯誤處理是一種很好的做法。至於「On Error Resume Next」 - 這是個人偏好,因爲當您嘗試清除某些對象引用時可能會失效,例如, 'rs.Close'(Recorset)或'doc.Close'(Word)。 –

+0

1.但是,如果您使用了'On Error Resume Next',那麼您可能會認爲一旦沒有,就會清除所有內容。另一方面,如果您不添加'On Error Resume Next',您總是可以找到觸發錯誤的確切行(例如,哪個對象不能被引用)。 2.至於'On Error GoTo 0',一旦你退出'Whatever',VBA將恢復正常的錯誤檢查行爲(如果我錯了,請糾正我),基本上,你不必擔心'在「離開」中出現錯誤繼續下一步'會影響調用「無論」的子程序中的錯誤處理設置。 – Nicholas