Ich möchte meine for
Schleife verlassen, wenn eine Bedingung im Inneren erfüllt ist. Wie kann ich meine for
Schleife verlassen, wenn die if
Bedingung erfüllt ist? Ich denke, eine Art Exit am Ende meiner if
Aussage, aber ich weiß nicht, wie das funktionieren würde.
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
If [condition] Then Exit For
in Ihrer SchleifeAntworten:
Um Ihre Schleife vorzeitig zu verlassen, können Sie verwenden
Exit For
If [condition] Then Exit For
quelle
Exit
Anweisung von VBA enthält weniger Optionen als die von VB.NET. Tatsächlich unterstützt VBA nur:Exit Do
Exit For
Exit Function
Exit Property
undExit Sub
. VBA hat keineExit While
. Der richtige Link lautet: Office VBA-Referenz - BeendigungsanweisungEine andere Möglichkeit, eine For-Schleife vorzeitig zu beenden, besteht darin, den Schleifenzähler zu ändern:
quelle
For Each
Schleifen.For
Schleife spezifisch ist (nichtFor Each
). Vor- und Nachteile gelten für unterschiedliche Lösungen und Situationen - zum Beispiel ist dies ein robusteres Format als das,Go To label
das die Logik bremst (nicht strukturierte Programmierung) oder eine mögliche Problemumgehung desContinue
in VBA fehlenden Schlüsselworts. Die Vorzüge vonExit For
können auch in Frage gestellt werden, wenn die Logik keine ordnungsgemäße Bereinigung von Objekten durchführt - schlechte Implementierungen sind hier jedoch nicht ganz relevant (@ jpmc26)Die erste Antwort, die mit folgendem gegeben wird, ist in der Tat imo Best Practice:
Dies ist jedoch auch eine Option:
quelle