gpt4 book ai didi

vba - 了解 Excel VBA 错误处理

转载 作者:行者123 更新时间:2023-12-02 10:27:46 25 4
gpt4 key购买 nike

我在下面得到了代码。我正在尝试了解 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 还是缺少东西。

最佳答案

Should line Set ws = Nothing be coming after or before the line LoopErrorHandling_Exit:

由于您是在 Excel 中工作,因此不需要该行,因为 Excel 会清理对象。然而,清理物体是一个很好的做法。我称之为使用后冲马桶:P 这样,当您使用 Excel 中的其他应用程序时,您将默认记住这样做:)

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

Shouldn't line LoopErrorHandling_Err: be enough, is LoopErrorHandling_Exit: necessary. What is the work of line LoopErrorHandling_Exit: in above code and does it triggers only if Error occurs.

是的,这是必需的。你不想要 MsgBox Err.Description在正常代码执行下运行。 Resume语句会处理这个问题,并在代码中的相关点恢复执行。它还可以帮助您重置任何特定事件。例如,您可能想查看 THIS LINK

enter image description here

Does above code covers everything what error handling needs in excel vba or is there stuff missing.

我通常添加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

关于vba - 了解 Excel VBA 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26462456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com