VBA Break For Loop

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 geïnstrueerd om 10 keer te draaien en op basis van de gegeven voorwaarde als de celwaarde of een ander opgegeven criterium succesvol is, 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?

U kunt deze VBA Break For Loop Excel-sjabloon hier downloaden - VBA Break For Loop Excel-sjabloon

# 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 voor een voorbeeld 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 wanneer een waarde in de eerste 10 cellen wordt gevonden, 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

Cellen (K, 1). Waarde = K

Anders

  Afsluiten voor

Stop als

Er staat If Cells (K, 1) .Value = "" doorlopende cel is gelijk aan niets, zet de lus voort van het invoegen van serienummers van 1 tot 10.

Het laatste deel van de lus zegt:

Anders

  Afsluiten voor

Als de bovenstaande voorwaarde niet WAAR is, wordt de lus "Exit For" gebruikt.

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 of het de lus heeft verlaten.

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

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 

Bij het doorlopen van de cel als er een niet-lege cel wordt gevonden, wordt het bericht weergegeven met de mededeling “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 een waarde per ongeluk is 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 wordt de lus verlaten. 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, anders kunnen we de lus voortzetten.