202 votes

Excel VBA - quitter la boucle

Je voudrais quitter ma for lorsqu'une condition à l'intérieur est remplie. Comment puis-je quitter ma for lorsque la condition if est remplie ? Je pense à une sorte de sortie à la fin de mon if , 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

363voto

Dan Points 1196

Pour quitter votre boucle plus tôt, vous pouvez utiliser Exit For

If [condition] Then Exit For

27voto

paul bica Points 9478

Une autre façon de quitter une boucle For plus tôt consiste à modifier 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

1voto

ko_00 Points 90

La première réponse donnée avec ce qui suit est en effet la meilleure pratique de l'imo :

 if i = 0 then exit for

Cependant, il s'agit également d'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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X