Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-循环退出_Excel_Vba_For Loop - Fatal编程技术网

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