Excel VBA-循环退出
当满足内部条件时,我想退出Excel VBA-循环退出,excel,vba,for-loop,Excel,Vba,For Loop,当满足内部条件时,我想退出for循环。如果满足条件,如何退出for循环?我想在我的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" &
for
循环。如果满足条件,如何退出for
循环?我想在我的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
要提前退出循环,可以使用exit For
如果[condition],则退出For
另一种提前退出For循环的方法是更改循环计数器:
For i = 1 To 10
If i = 5 Then i = 10
Next i
Debug.Print i '11
以下给出的第一个答案实际上是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
subsome()
计数=0
结束=此工作簿.工作表(1).范围(“B1047854”).结束(xlUp).行
而计数
如果[condition]那么在循环中退出
分配循环计数器比显式退出循环更不可靠,更不经得起将来的考验。如果编辑器没有注意到循环计数器的最大值也被其他地方使用,那么在修改代码时,前者可能会被循环计数器最大值的更改所破坏。它也不适用于For Each
循环。这只是针对For
循环(而不是For Each
)特定问题的另一种解决方案。Pro和con适用于不同的解决方案和不同的情况-例如,这是一种比阻止逻辑(非结构化编程)的Go to label
或VBA中缺少的Continue
关键字的可能解决方法更为稳健的格式。如果逻辑没有对对象执行正确的清理,那么Exit For
的优点也会受到质疑-虽然(@jpmc26)@nixda请删除您的评论,因为您共享的超链接指向的是VB.NET文档,而不是Office VBA文档。VBA的Exit
语句比VB.NET的选项少。事实上,VBA只支持:Exit Do
Exit For
退出功能
退出属性
和退出子项
。VBA在
时没有退出。正确的链接是:@ExcelHero Done
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