[英]Understanding Excel VBA Error Handling
我的代碼如下。 我試圖了解excel VBA中的錯誤處理。
Sub LoopErrorHandling()
Dim ws As Worksheet
Dim c As Range
On Error GoTo LoopErrorHandling_Err
Set ws = ThisWorkbook.Worksheets(1)
ws.Range("C1:C5").ClearContents
For Each c In ws.Range("A1:A5").Cells
c.Offset(0, 2).Value = c.Value / c.Offset(0, 1).Value
Next c
LoopErrorHandling_Exit:
On Error Resume Next
Set ws = Nothing
On Error GoTo 0
Exit Sub
LoopErrorHandling_Err:
MsgBox Err.Description
Resume Next
Resume LoopErrorHandling_Exit
End Sub
我想在上面的代碼中理解以下內容。
Set ws = Nothing
在LoopErrorHandling_Exit:
行之前或之前Set ws = Nothing
。 LoopErrorHandling_Err:
夠了,是LoopErrorHandling_Exit:
必要的。 LoopErrorHandling_Exit:
的工作是什么LoopErrorHandling_Exit:
在上面的代碼中,只有在出現錯誤時它才會觸發。 應該行Set Ws =在LoopErrorHandling_Exit行之前或之前沒有任何內容:
由於您在Excel中工作,因此Excel不需要該行,因為Excel將清理對象。 但是,清理對象是一種很好的做法。 我稱之為在使用后沖洗馬桶 :P這種方式當您使用Excel中的其他應用程序時,您將默認記得這樣做:)
順便說一句,它應該在LoopErrorHandling_Exit:
之后LoopErrorHandling_Exit:
所以當代碼遇到錯誤時, LoopErrorHandling_Exit:
將處理它。 忘記Set ws = Nothing
,您可以重置該部分中的其他事件。 我在帖子的后面部分中包含了一個鏈接,用於演示。
不應該行LoopErrorHandling_Err:夠了,是LoopErrorHandling_Exit:必要的。 行LoopErrorHandling_Exit的工作是什么:在上面的代碼中,只有在出現錯誤時它才會觸發。
是的,這是必需的。 您不希望MsgBox Err.Description
在正常代碼執行下運行。 Resume
語句處理它並在代碼中的相關點恢復執行。 它還可以幫助您重置任何特定事件。 例如,您可能希望看到此鏈接
以上代碼是否涵蓋了excel vba中所需的錯誤處理或缺少的東西。
我通常將ERL
添加到錯誤處理中,以便我可以知道哪一行給出了錯誤。 例如
Sub Sample()
10 On Error GoTo Whoa
Dim i As Long
20 i = "Sid"
LetsContinue:
30 Exit Sub
Whoa:
40 MsgBox Err.Description & " on line " & Erl
50 Resume LetsContinue
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.