gpt4 book ai didi

excel - 如何在 VBA 中模拟 Python 的 "continue"语句的错误 AKA 中进行下一次迭代?

转载 作者:行者123 更新时间:2023-12-04 20:10:04 24 4
gpt4 key购买 nike

在以下代码中,如何在遇到错误后使循环在下一次迭代中继续 - 而不是下一行?

现在代码不会超过 x=0:

Sub skip_iteration()

Dim x As Long

For x = 5 To -5 Step -1
On Error GoTo errhandler:
Debug.Print 15 / x
Debug.Print "I don't want this to be printed on error"
Next x

errhandler:
If Err.Number = 11 Then
Debug.Print ("Error on " & x)
End If

End Sub

我调查了这个答案:
Skip to next iteration in loop vba除其他外,但无法将其转换为我的代码。

最佳答案

您需要Resume Next在该行之后转到下一行,导致错误。和Err.Clear也是一个很好的做法。
Exit Suberrhandler 之前也是一个很好的做法:

Sub SkipIteration()

Dim x As Long
For x = 5 To -5 Step -1
On Error GoTo errhandler:
Debug.Print 15 / x
Debug.Print "testing"
Next x
Exit Sub

errhandler:
If Err.Number = 11 Then
Debug.Print ("Error on " & x)
Err.Clear
Resume Next
End If
End Sub
Resume 之间的区别和 Resume Next如下:
  • Resume试图回到它被调用的地方。

  • TestMeResume过程中,它在 Debug.Print a/b 处抛出错误 11,并在错误处理程序中分配 b = 5。然后使用 Resume它重试 Debug.Print a / b , 直到 b不是 0 ,它运行。
  • Resume Next转到它被调用的地方,忽略该行并继续下一个。

  • TestMeResumeNext过程中,在 a = 12 处抛出错误 91并触发错误处理程序。在错误处理程序中,a 被分配给 Range("A14")Resume Next a = 12被跳过, Sub继续。
    Sub TestMeResumeNext()

    On Error GoTo TestMeResumeNext_Error

    Dim a As Range
    a = 12 'Error 91 here!
    Debug.Print a.Row 'Resume Next goes back here
    Exit Sub

    TestMeResumeNext_Error:
    Set a = Range("A14")
    Resume Next
    End Sub

    Sub TestMeResume()

    On Error GoTo TestMeResume_Error

    Dim a As Long: a = 10
    Dim b As Long: b = 0
    Debug.Print a / b 'Error 11 here the first time
    Exit Sub

    TestMeResume_Error:
    b = 5
    Resume
    End Sub

    关于excel - 如何在 VBA 中模拟 Python 的 "continue"语句的错误 AKA 中进行下一次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52857125/

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