VBA Break For Loop - Hoe verlaat ik For Loop in Excel VBA?

Excel VBA Break For Loop

In VBA staat Break For Loop ook bekend als exit for loop, elke lus in elke procedure heeft een aantal instructies of criteria gekregen om het aantal tijd te laten draaien, maar het is heel gebruikelijk dat een lus in een oneindige lus terechtkomt, waardoor de code in dergelijke scenario's hebben we break for of exit for loop nodig om uit bepaalde situaties te komen.

Laten we zeggen dat we de lus hebben opgedragen om 10 keer te draaien, en op basis van de gegeven voorwaarde, als de celwaarde of een ander opgegeven criterium succesvol is, dan moet het de Excel-lus verlaten voordat het volledige lusquotum van 10 voltooit. In dit artikel laten we u zien hoe u de lus kunt verlaten op basis van de gegeven criteria.

Hoe lussen in VBA te doorbreken / afsluiten?

# 1 - Pauze voor volgende lus

VBA For Next Loop wordt gebruikt om door cellen te lopen en een specifieke reeks taken uit te voeren. Kijk bijvoorbeeld naar de onderstaande VBA-code.

Code:

Sub Exit_Loop () Dim K As Long For K = 1 tot 10 cellen (K, 1) .Value = K Next K End Sub

Hiermee worden serienummers ingevoegd van cel A1 tot A10.

Dit ligt voor de hand bij For Next Loop.

Nu wil ik de lus doorbreken als er een waarde wordt gevonden in de eerste 10 cellen. Hiervoor heb ik een tekstwaarde ingevoerd in cel A8.

Nu wil ik dit in de code instrueren door te zeggen: "als de luscel een bepaalde waarde heeft, moet deze de lus verlaten vóór de vooraf bepaalde limiet."

Code:

Sub Exit_Loop () Dim K As Long For K = 1 tot 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else Exit For End If Next K End Sub

Kijk deze regel code:

If Cells (K, 1) .Value = "" Then
Cells (K, 1) .Value = K
Else
Exit For
End If

Er staat If Cells (K, 1). Waarde = “cel in een lus is gelijk aan niets, zet de lus van het invoegen van serienummers van 1 tot 10 voort.

Het laatste deel van de lus zegt:

Anders

Afsluiten voor

Als de bovenstaande voorwaarde niet WAAR is, dan de "Exit For" -lus.

Voer nu de code uit. Het zal serienummers invoegen tot de A7-cel.

De bovenstaande code heeft de lus meteen verlaten zonder iets te zeggen; hoe weten we dat het de lus heeft verlaten.

Om deze dubbelzinnigheid weg te nemen, moeten we hieronder een eenvoudig VBA-berichtvenster plaatsen.

Code:

Sub Exit_Loop () Dim K As Long For K = 1 tot 10 If Cells (K, 1) .Value = "" Then Cells (K, 1) .Value = K Else MsgBox "We hebben niet-lege cel, in cel" & Cellen (K, 1) .Address & vbNewLine & "We verlaten de lus" Exit For End If Next K End Sub

Als er tijdens het doorlopen van de cel een niet-lege cel wordt gevonden, wordt het bericht weergegeven met de tekst: “We hebben een niet-lege cel in cel A8. We verlaten de cirkel ”.

Dit zal de gebruiker ook informeren over het verlaten van de lus met een celadres. Als er per ongeluk een waarde wordt ingevoerd, kunnen we het celadres controleren dat in het berichtvenster wordt geretourneerd.

# 2 - Break Do till Loop

Net zoals we de For Next Loop hebben verlaten, kunnen we op dezelfde manier ook de "Do Until" -lus verlaten. Kijk bijvoorbeeld naar de onderstaande code.

Code:

Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do till K = 11 Cells (K, 1). Value = KK = K + 1 Loop End Sub

Deze code voert ook de taak uit om serienummers in te voegen. Als we bijvoorbeeld de lus willen verlaten wanneer de waarde van de variabele "k" 6 wordt, moeten we de criteria invoeren als IF k = 6 en dan de lus verlaten.

Code:

Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do till K = 11 If K <6 Then Cells (K, 1). Value = K Else Exit Do End If K = K + 1 Loop End Sub

Hierdoor wordt de lus uitgevoerd totdat de waarde van de variabele 6 wordt. Daarna verlaat het de lus. Als u het bericht aan de gebruiker wilt laten zien, kunt u ook het berichtvenster toevoegen.

Code:

Sub Exit_DoUntil_Loop () Dim K As Long K = 1 Do till K = 11 If K 5 "Exit Do End If K = K + 1 Loop End Sub

Dit toont het onderstaande bericht.

Op deze manier kunnen we op basis van de gegeven criteria de lus verlaten als de criteria WAAR zijn, of we kunnen de lus voortzetten.

Interessante artikelen...