提问人:CustomX 提问时间:2/23/2012 最后编辑:DragonthoughtsCustomX 更新时间:4/19/2022 访问量:932915
Excel VBA - 退出循环
Excel VBA - exit for loop
问:
我想在满足内部条件时退出我的循环。当满足条件时,我该如何退出我的循环?我认为在我的发言结束时有某种退出,但不知道这将如何运作。for
for
if
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
答:
372赞
Dan
2/23/2012
#1
要提前退出循环,您可以使用Exit For
If [condition] Then Exit For
评论
3赞
Excel Hero
3/27/2020
@nixda 请删除您的评论,因为您共享的超链接指向 VB.NET 文档,而不是 Office VBA 文档。VBA 的语句比 VB 的选项少。NET的。事实上,VBA 只支持: 和 .VBA 没有 .正确的链接是:Office VBA 引用 -Exit 语句Exit
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
Exit While
30赞
paul bica
10/11/2015
#2
提前退出 For 循环的另一种方法是更改循环计数器:
For i = 1 To 10
If i = 5 Then i = 10
Next i
Debug.Print i '11
For i = 1 To 10
If i = 5 Then Exit For
Next i
Debug.Print i '5
评论
4赞
jpmc26
2/24/2018
与显式退出循环相比,分配循环计数器的健壮性和前瞻性要低得多。前者可以通过循环计数器的最大值的变化来破坏,因为如果编辑器没有注意到它也在其他地方使用,则代码会被修改。它也不适用于循环。For Each
3赞
paul bica
2/24/2018
这只是特定于循环的问题的另一种解决方案(不是)。优点和缺点适用于不同的解决方案和不同的情况 - 例如,这是一种比制动逻辑(非结构化编程)更强大的格式,或者是 VBA 中缺少的关键字的可能解决方法。如果逻辑没有对对象进行适当的清理,那么它的优点也会受到质疑 - 糟糕的实现在这里并不完全相关(@jpmc26)For
For Each
Go To label
Continue
Exit For
1赞
ko_00
2/29/2020
#3
给出的第一个答案如下,确实是 i.m.o. 最佳实践:
if i = 0 then exit for
但是,这也是一种选择:
Sub some()
Count = 0
End_ = ThisWorkbook.Sheets(1).Range("B1047854").End(xlUp).Row
While Count < End_ And Not ThisWorkbook.Sheets(1).Range("B" & Count).Value = "Artikel"
Count = Count + 1
If ThisWorkbook.Sheets(1).Range("B" & Count).Value = "Artikel" Then
ThisWorkbook.Sheets(1).Range("A1:Z" & Count - 1).EntireRow.Delete Shift:=xlToLeft
End If
Wend
End Sub
0赞
user18858896
4/19/2022
#4
if 条件(在你的 while - 循环中)然后转到(循环外的一些标记)
评论
1赞
Henrik K
4/19/2022
这是一个可能的解决方案,可能不是最佳实践。在您的特定情况下,如果没有必要,应避免。
评论
If [condition] Then Exit For
在您的循环中