Excel VBA - 退出循环

Cus*_*omX 169 excel vba for-loop

for当满足条件时,我想退出循环.forif条件满足时,我怎么能退出循环?我认为在我的if发言结束时会有某种退出,但不知道它会如何起作用.

Dim i As Long
For i = 1 To 50
    Range("B" & i).Select
    If Range("B" & i).Value = "Artikel" Then
        Dim temp As Long
        temp = i
    End If
Next i
Range("A1:Z" & temp - 1).EntireRow.Delete Shift:=xlToLeft
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 317

要尽早退出循环,您可以使用 Exit For

If [condition] Then Exit For

  • [MSDN概述](https://msdn.microsoft.com/en-us/library/t2at9t47.aspx)VBA中存在哪些退出语句 (4认同)
  • @nixda 请删除您的评论,因为您共享的超链接指向 VB.NET 文档,而不是 Office VBA 文档。VBA 的“Exit”语句比 VB.NET 的选项少。事实上,VBA只支持:`Exit Do``Exit For``Exit Function``Exit Property`和`Exit Sub`。VBA 没有“退出时”。正确的链接是:[Office VBA参考-退出语句](https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/exit-statement) (3认同)

pau*_*ica 25

早期退出For循环的另一种方法是更改​​循环计数器:

For i = 1 To 10
    If i = 5 Then i = 10
Next i

Debug.Print i   '11
Run Code Online (Sandbox Code Playgroud)
For i = 1 To 10
    If i = 5 Then Exit For
Next i

Debug.Print i   '5
Run Code Online (Sandbox Code Playgroud)

  • 分配循环计数器远不如显式退出循环那么健壮和未来证据.前者可以通过更改循环计数器的最大值来解决,因为如果编辑器没有注意到它也在别处使用,则会修改代码.它也不适用于"For Each"循环. (3认同)
  • 这只是针对“ For”循环(不是“ For Each”)特定问题的另一种解决方案。优点和缺点适用于不同的解决方案和不同的情况-例如,这比制动逻辑(非结构化编程)的“转到标签”或“继续”关键字的一种可能的解决方案(在VBA中缺少)更为强大。如果逻辑未正确执行对象清除操作,也可能会质疑“ Exit For”的优缺点-不良实现在这里并不十分相关(@ jpmc26) (2认同)