VBA-lussen - Lijst met de 4 beste soorten loops (met voorbeelden)

Inhoudsopgave

Excel VBA-lussen

Loops worden vaak gebruikt in alle programmeertalen, waar er een bepaalde behoefte of een criterium is wanneer we een bepaalde code nodig hebben om een ​​bepaalde tijd te draaien, gebruiken we loops voor die codes, nu zijn er veel soorten loops in VBA zoals Do while, Do till, For Loop en For each loop, deze lussen helpen de code uit te voeren totdat aan de voorwaarde is voldaan.

Laat me deze verklaring helemaal aan het begin zelf afleggen. "Als je VBA onder de knie wilt krijgen, moet je het concept van loops in VBA-macro's onder de knie hebben."

Loop is niets anders dan door een reeks cellen gaan, door een reeks objecten gaan om dezelfde taak te herhalen voor het verzamelen van cellen of objecten. In plaats van de taak uit te voeren in een aparte reeks coderegels door lussen te gebruiken, kunnen we de lengte van de code zo min mogelijk verkorten.

Lijst met de 4 beste soorten VBA-loops

  1. Voor volgende lus
  2. Voor elke lus
  3. Doe While Loop
  4. Doe tot Loop

Laten we elk van deze typen in detail bekijken.

Type # 1 - Voor de volgende lus

Met de For Next-lus kunnen we door het celbereik lopen en dezelfde taak uitvoeren voor elke cel die in de lus is opgegeven. Hier moeten we het startnummer en eindnummer vertellen.

Voorbeeld

Als u bijvoorbeeld serienummers van 1 tot 10 wilt invoegen, vindt u hieronder de traditionele manier om serienummers in te voegen.

Sub serienummer ()

Bereik ("A1"). Waarde = 1
bereik ("A2"). Waarde = 2
bereik ("A3"). Waarde = 3
bereik ("A4"). Waarde = 4
bereik ("A5"). Waarde = 5
Bereik ("A6"). Waarde =
bereik 6 ("A7"). Waarde =
bereik 7 ("A8"). Waarde =
bereik 8 ("A9"). Waarde = bereik 9
("A10"). Waarde = 10

Einde Sub

Ziet er goed uit, is het niet? Maar het probleem is hier slechts 10 keer dat we deze taak moeten uitvoeren. Maar stel je voor dat als je 100 of 1000 getallen wilt invoegen, je de code 100 of 1000 regels kunt schrijven. Het is onmogelijk, en dat is waar de schoonheid van For Next loop van pas komt.

Stap 1: Open macro en declareer de variabele i als geheel getal.

Sub Insert_Serial_Number ()

Dim i As Integer

Einde Sub

Stap 2: Open nu de For Loop . Noem hier het begin en einde van de lus met behulp van de variabele i.

Stap 3: Schrijf nu de code die u wilt uitvoeren. We moeten getallen van 1 tot 10 invoegen in A1 tot A10-cellen. In plaats van de Range-methode toe te passen, past u de Cells-methode toe.

Het vraagt ​​het rijnummer omdat we de variabele i in eerste instantie al als een geheel getal hebben gedeclareerd . De waarde is 1. Dus vermeld ik vind je rijnummer leuk en 1 als je kolomnummer.

Nu zou de waarde van de huidige celwaarde één moeten zijn, in plaats van de nummer één te vermelden, noem je i als de waarde. Omdat elke keer dat de lus wordt uitgevoerd, de i- waarde met 1 wordt verhoogd.

Druk nu op de F8-toets om een ​​voor een regel binnen te gaan. Druk op F8 totdat het For-lus bereikt.

Deze gele kleur is de indicatie dat de geselecteerde coderegel binnenkort wordt uitgevoerd. Plaats een cursor op I, en het zal de waarde als nul weergeven.

Druk nu nog een keer op de F8-toets en plaats een cursor op i & nu is de waarde 1.

Dus de waarden van i overal zijn nu gelijk aan 1. " Cellen (I, 1) .waarde = I" betekent Cellen (1, 1) .waarde = 1.

Druk op de F8-toets en bekijk de waarde in cel A1. U moet 1 in cel A1 zien.

Als je nu op de F8-toets drukt, gaat het nog een keer terug naar de For-lus omdat de eindlimiet van de variabele i 10 is. Deze keer is de I- waarde 2.

Voor de volgende lus wordt 10 keer uitgevoerd en worden serienummers van 1 tot 10 ingevoegd.

Type # 2 - voor elke lus

For Each-lus in VBA is bedoeld om door een verzameling objecten te lopen. Voor de volgende lus doorloopt u de cellen en voert u de taak uit, en de For Every-lus doorloopt objecten zoals werkbladen, grafieken, werkmappen en vormen.

Met behulp van deze lus kunnen we alle werkbladen doorlopen en enkele taken uitvoeren. U kunt bijvoorbeeld alle werkbladen doorlopen om werkbladen te verbergen en weer te geven.

Voorbeeld 1

Als u alle werkbladen wilt verbergen behalve het blad waaraan u werkt, hoe gaat u dat dan doen? Als je 20 vellen in de werkmap hebt, is dit een tijdrovend proces. Maar met FOR ELKE lus kunnen we deze taak uitvoeren.

Ik heb 5 bladen en ik wil alle bladen verbergen, behalve dat het blad "Hoofd" onder de code de taak voor mij zou doen.

Sub To_Hide_All_Sheet ()

Dim Ws als werkblad

Voor elke Ws in ActiveWorkbook.Worksheets

If Ws.Name "Main" Dan
Ws.Visible = xlSheetVeryHidden
End If

Volgende Ws

Einde Sub

Voorbeeld 2

Als u alle verborgen bladen zichtbaar wilt maken, zal de onderstaande code het werk voor u doen.

Sub To_UnHide_Specific_Sheet ()

Dim Ws als werkblad

Voor elke Ws in ActiveWorkbook.Worksheets

Ws.Visible = xlSheetVisible

Volgende Ws

Einde Sub

Type # 3 - Do While Loop

Do While-lus voert de taak uit terwijl de gegeven voorwaarde TRUE is, en zodra de voorwaarde FALSE wordt, stopt het herhalen. In tegenstelling tot de andere twee lussen, test Do While de conditie aan het einde van de lus, niet aan het begin.

Ik zal je het voorbeeld laten zien van het invoegen van serienummers met de Do While-lus.

Sub Do_While_Example ()

Dim i As Integer

i = 1
Do While i <11
Cells (i, 1) .Value = i
i = i + 1
Loop

Einde Sub

De bovenstaande lus wordt uitgevoerd terwijl i kleiner is dan 11 en blijft de serienummers invoeren. Op het moment dat ik groter word dan 11, stopt de lus.

Type # 4 - Doe tot lus

In tegenstelling tot de Do While-lus, wordt de Do While-lus niet uitgevoerd als de voorwaarde TRUE is; het loopt eerder door totdat de voorwaarde FALSE is. Kijk bijvoorbeeld naar de onderstaande code.

Sub Do_Until_Example ()

Dim i As Integer

i = 1
doen tot i = 11
cellen (i, 1). waarde = i
i = i + 1
lus

Einde Sub

Het enige verschil tussen de Do While & Do Until-lus is de operator die we specificeren. In Do, While we noemden het uitvoeren van de lus terwijl i kleiner is dan (<), 11 maar in do till lus, noemden we het uitvoeren van de lus tot i gelijk is aan (=) tot 11.

Dingen om te onthouden

  • Er is een meer geavanceerd Excel VBA-lusvoorbeeld, maar we zullen ze allemaal in een apart artikel in detail behandelen.
  • Elke lus is voor objectvariabelen.
  • Hoewel Do While & Do Until er hetzelfde uitziet, is het vermelden van de aandoening erg belangrijk.
  • Loops zijn erg belangrijke concepten.

Interessante artikelen...