了解Excel VBAerror handling

我得到了下面的代码。 我正在尝试了解Excel VBA中的error handling。

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_Exit:
  • 不应该LoopErrorHandling_Err:是不够的,是LoopErrorHandling_Exit:必要的。
  • LoopErrorHandling_Exit:的作用是什么LoopErrorHandling_Exit:在上面的代码中,只有在发生错误时才触发。
  • 上面的代码覆盖了什么error handling需要在Excel VBA或有东西丢失。

应该行设置ws =没有什么会在线之后或之前LoopErrorHandling_Exit:

由于您在Excel中工作,因为Excel将清理对象,所以不需要该行。 不过,清理对象是个好习惯。 我把它叫做冲厕所后使用 :P这样,当你从Excel的其他应用程序工作,你会默认记得这样做:)

顺便说一句,它应该在LoopErrorHandling_Exit:之后LoopErrorHandling_Exit:这样,当代码遇到错误时, LoopErrorHandling_Exit:会照顾它。 忘记Set ws = Nothing ,您可以重置该部分中的其他事件。 我在后面的部分中join了一个链接来certificate这一点。

不应该循环LoopErrorHandling_Err:是不够的,是LoopErrorHandling_Exit:必要的。 LoopErrorHandling_Exit的作用是什么:在上面的代码中,只有在发生错误时才触发。

是的,这是必需的。 您不希望在正常的代码执行下运行MsgBox Err.DescriptionResume语句负责处理,并在代码中的相关位置恢复执行。 它也可以帮助你重置任何特定的事件。 例如,你可能想看到这个链接

在这里输入图像说明

上面的代码覆盖了什么error handling需要在Excel VBA或有东西丢失。

我通常将ERL添加到error handling中,以便我可以知道哪一行发生错误。 例如

 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