Chciałbym opuścić for
pętlę, gdy spełniony zostanie warunek w środku. Jak mogę wyjść z for
pętli, gdy if
warunek zostanie spełniony? Myślę, że jakieś wyjście na końcu mojego if
oświadczenia, ale nie wiem, jak by to działało.
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
w twojej pętliOdpowiedzi:
Aby wcześniej wyjść z pętli, możesz użyć
Exit For
If [condition] Then Exit For
źródło
Exit
Instrukcja VBA ma mniej opcji niż VB.NET. W rzeczywistości VBA obsługuje tylko:Exit Do
Exit For
Exit Function
Exit Property
iExit Sub
. VBA nie maExit While
. Prawidłowy link to: Dokumentacja Office VBAInnym sposobem wcześniejszego wyjścia z pętli For jest zmiana licznika pętli:
źródło
For Each
pętli.For
pętli (nieFor Each
). Za i przeciw stosuje się różne rozwiązania i różne sytuacje - na przykład jest to bardziej niezawodny format niż ten,Go To label
który hamuje logikę (programowanie niestrukturalne) lub możliwe obejścieContinue
słowa kluczowego, którego brakuje w VBA. ZaletyExit For
można również zakwestionować, jeśli logika nie wykonuje poprawnego czyszczenia obiektów - złe implementacje nie są tu jednak całkiem istotne (@ jpmc26)Pierwsza odpowiedź udzielona w następujący sposób jest rzeczywiście najlepszą praktyką:
Jest to jednak również opcja:
źródło