了解Excel VBA错误处理
我得到下面的代码。我想了解在Excel VBA中的错误处理。了解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:
之前到来。 - 不应该行
LoopErrorHandling_Err:
就够了,是LoopErrorHandling_Exit:
必要的。 -
LoopErrorHandling_Exit:
上面的代码和 是什么工作,只有在发生错误时才触发。 - 以上代码是否涵盖了所有错误处理需要在excel vba或缺少东西。
应行集WS =后或行LoopErrorHandling_Exit之前没有现身:
因为你是在Excel中工作,该行是没有必要像Excel将清理对象。不过,清理对象是一种很好的做法。我把它叫做冲洗厕所使用后:P这样,当你从Excel中其他应用程序的工作,你会被默认记得做吧:)
BTW,它应该LoopErrorHandling_Exit:
这样,当代码满足的后错误,LoopErrorHandling_Exit:
将照顾它。忘记Set ws = Nothing
,您可以重置该部分中的其他事件。我在后面的部分中加入了一个链接,这表明了这一点。
不应该循环LoopErrorHandling_Err:是否足够,是LoopErrorHandling_Exit:是必要的。 线路LoopErrorHandling_Exit的工作是什么:在上面的代码中,只有在发生错误时才触发。
是的,这是必需的。您不希望MsgBox Err.Description
在正常的代码执行下运行。 Resume
语句处理该问题,并在代码中的相关位置恢复执行。它还可以帮助您重置任何特定事件。例如,您可能希望看到THIS LINK
请问上面的代码涵盖了什么样的错误处理在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
非常感谢Siddarth的解释。神奇的图。 – kami 2014-10-20 14:07:00
'设置WS = Nothing'真的不应该在那里的all..'LoopErrorHandling_Exit'是neccessary在这个片段中(*因为没有'退出Sub'标签*之前的任何地方)。'LoopErrorHandling_Exit:'是当'LoopErrorHandling_Exit'被触发或者当正常代码执行到达每个循环之后代码将跳转到的'label',因为没有'Exit Sub' – 2014-10-20 09:41:01
你应该看到[THIS ARTICLE](http://www.cpearson.com/excel/errorhandling.htm) – 2014-10-20 09:45:53
@ vba4all:对不起,没有看到您的评论 – 2014-10-20 09:52:51