Je voudrais quitter ma for
boucle lorsqu'une condition à l'intérieur est remplie. Comment sortir de ma for
boucle lorsque la if
condition est remplie? Je pense à une sorte de sortie à la fin de ma if
déclaration, mais je ne sais pas comment cela fonctionnerait.
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
dans votre boucleRéponses:
Pour quitter votre boucle tôt, vous pouvez utiliser
Exit For
If [condition] Then Exit For
la source
Exit
déclaration de VBA a moins d'options que celle de VB.NET. En fait, VBA ne prend en charge que:Exit Do
Exit For
Exit Function
Exit Property
etExit Sub
. VBA n'a pasExit While
. Le lien correct est: Référence Office VBA - Instruction de sortieUne autre façon de quitter tôt une boucle For est de changer le compteur de boucle:
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
la source
For Each
boucles.For
boucle (nonFor Each
). Les avantages et les inconvénients s'appliquent à différentes solutions et à différentes situations - par exemple, il s'agit d'un format plus robuste que celuiGo To label
qui freine la logique (programmation non structurée), ou une solution de contournement possible duContinue
mot - clé, manquant dans VBA. Les mérites deExit For
peuvent également être remis en question si la logique n'effectue pas un nettoyage correct des objets - les mauvaises implémentations ne sont pas tout à fait pertinentes ici cependant (@ jpmc26)La première réponse donnée avec ce qui suit est en effet la meilleure pratique de l'OMI:
if i = 0 then exit for
Cependant, c'est aussi une option:
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
la source