Als u een VBA-programma schrijft en u wilt dezelfde taak meerdere keren uitvoeren, dan kunt u dit doen door VBA for loops te gebruiken. VBA is een sequentiële programmeertaal. Elke regel code wordt van boven naar beneden uitgevoerd totdat er geen regels meer zijn om te lezen. Als je terug wilt gaan en een taak wilt uitvoeren, dan moet je forceren door macrocode te gebruiken. Je krijgt resultaten met lus.
De For Loop in VBA is een van de meest voorkomende soorten lussen. De For-lus heeft twee vormen: For Next en For Each In Next. De For-lus wordt meestal gebruikt om achtereenvolgens door een lijst met items of nummers te bladeren. Om de For-lus op een bepaald punt te beëindigen, kunnen we de exit-instructie gebruiken. For Loop gaat rond en rond totdat het voldoet aan de eindvoorwaarde. Zodra aan de eindvoorwaarde is voldaan, gaat de programmeerstroom verder naar beneden, in zijn natuurlijke richting.
De For… Next-lus heeft de volgende syntaxis: For counter = start_counter To end_counter 'Doe hier iets (uw code) Next counter
We creëren eigenlijk een lus die variabele gebruikt balie als de 'tijdwaarnemer' van de lus. We stellen het in op een waarde die gelijk is aan start_counter aan het begin van de lus en verhoog deze vervolgens met 1 tijdens elke lus totdat deze aan de eindvoorwaarde voldoet. De lus wordt uitgevoerd totdat de waarde van de balie wordt gelijk aan eind_teller. De lus wordt voor de laatste keer uitgevoerd wanneer beide bovenstaande waarden overeenkomen en dan stopt de lus.
Al het bovenstaande kan voor sommige mensen verwarrend zijn, dus laten we ons voorbereiden en beginnen met het leren van For Loop in Excel met enkele voorbeelden.
- Maak een nieuwe Excel-werkmap en sla deze op met de extensie .xlsm
- Gebruik ALT + F11 om het Visual Basic-editorscherm te starten
- Nieuwe module invoegen
- Kopieer de onderstaande code in de VB-standaardmodule
Loop 1 (nummer weergeven met msgbox)
Sub Loop1() Dim StartNumber As Integer Dim EndNumber As Integer EndNumber = 5 Voor StartNumber = 1 Naar EndNumber MsgBox StartNummer & " is " & "Uw StartNummer" Volgende StartNummer Einde Sub
Code Verklaring:
- Voor de VBA-code moet u waarde toewijzen aan StartNumber, waarbij EndNumber variabelen zijn die als gehele getallen worden gedeclareerd als het startpunt voor uw lus
- Deze waarden kunnen elk willekeurig getal zijn en we hebben EndNumber als 5
- StartNummer begint bij 1
- Voor StartNumber = 1 To EndNumber betekent dat de code begint van 1 (StartNumber) tot 5 (EndNumber)
- MsgBox StartNumber & " is " & "Your StartNumber" geeft het volgende berichtvenster weer:
Loop2 (vulwaarden)
Sub Loop2() 'Vult cellen A1:A56 met waarden van X door middel van een lus' --- Commentaar 'Verhoog de waarde van X met 1 in elke lus' --- Commentaar Dim X As Integer For X = 1 To 56 Range("A " & X). Waarde = X Volgende X Einde Sub
Code Verklaring:
- We hebben X toegewezen als een geheel getal
- Voor X = 1 tot 56; dit begint met 1 en gaat door tot 56 met telkens een verhoging van 1
- Bereik ("A" & X). Waarde = X; deze regel slaat de waarde van X op en gaat door naar het bereik A1 tot A56
Loop3 (Vul cellen met achtergrondkleur)
Sub Loop3() ' Vult cellen B1:B56 met de 56 achtergrondkleuren' --- Comment Dim X As Integer For X = 1 To 56 Range("B" & X).Select With Selection.Interior .ColorIndex = X .Pattern = xlSolid End With Next X End Sub
Code Verklaring:
- We hebben X toegewezen als een geheel getal
- Voor X = 1 t/m 56 beginnen met 1 en gaan door tot 56 met telkens een verhoging van 1
- Bereik ("B" & X). Selecteer; deze regel slaat de waarde van X op en selecteert de cel B1 tot B56
- De volgende 4 regels, d.w.z. Met Selectie.Interior zal de interieurkleurindex selecteren & de waarde van X van die kleurindex nemen zodat 1 bij de kleur zwart hoort; 2 hoort bij kleur wit; 3 voor rood en zo verder
Loop 4 (Vul Waarden met increment van 2)
Standaard is de waarde voor Stap 1 vooruit, maar deze kan worden ingesteld op een getal hoger dan 1.
Sub Loop4() ' Vult elke tweede cel van C1:C50 met waarden van X' --- Comment Dim X As Integer For X = 1 To 50 Step 2 Range("C" & X).Waarde = X Volgende X End Sub
Code Verklaring:
- We hebben X toegewezen als een geheel getal
- Voor X = 1 tot 50 Stap 2; dit begint met 1 in X tot 50 met telkens een verhoging van 2
- Bereik ("C" & X). Waarde = X; deze regel slaat de waarde van X op en gaat naar het bereik C1 tot C50
Loop 5 (VBA For Loop in Reverse met STEP-instructie)
Het is niet nodig dat de teller in de For-lus alleen van lage naar hogere waarden gaat; in plaats daarvan kan de For-lus ook achteruit lopen, d.w.z. hoge naar lagere waarden.
Hoewel de stapwaarde standaard vooruit 1 is, kan deze worden ingesteld op een getal in omgekeerde volgorde.
Sub Loop5() ' Vult cellen van D1:D50 met waarden van X' --- Comment ' In dit geval neemt X af met 1' --- Comment Dim X As Integer, Row As Integer Row = 1 For X = 50 To 0 Stap -1 Bereik ("D" & Rij). Waarde = X Rij = Rij + 1 Volgende X Einde Sub
Code Verklaring:
- We hebben X & Rij toegewezen als geheel getal
- Rij bevat waarde 1
- Voor X = 50 tot 0 Stap -1; dit begint bij 50 met een verlaging van 1 in X tot 0
- Bereik ("D" &Rij). Waarde = X; deze regel slaat de waarde van X op en gaat door naar het bereik D1 tot D50
Loop 6 (Vult elke tweede cel in Reverse met STAP-2)
In het bovenstaande For-lusvoorbeeld kunnen we de stap en volgorde gebruiken om te zien of de For-lus in voorwaartse of achterwaartse richting werkt.
Sub Loop6() ' Vult elke tweede cel van E1:E100 met waarden van X' --- Comment ' In dit geval neemt X af met 2' --- Comment Dim X As Integer, Row As Integer Row = 1 For X = 100 Naar 0 Stap -2 Bereik ("E" & Rij). Waarde = X Rij = Rij + 2 Volgende X Einde Sub
Code Verklaring:
- We hebben X & Rij toegewezen als geheel getal
- Rij bevat waarde 1
- Voor X = 100 tot 0 Stap -2; dit begint bij 100 met een verlaging van 2 in X tot 0
- Bereik ("E" &Rij). Waarde = X; deze regel slaat de waarde van X op en gaat naar het bereik E1 tot E100
Loop 7 (Voor Loop met IF-voorwaarde: vult cellen vanaf een specifieke cel)
Dit vult de cellen van cel F11 met waarde 11 totdat X voldoet aan de IF-voorwaarde
Sub Loop7() ' Begint met het vullen van cellen F11:F100 met waarden van X' --- Commentaar ' Dit verlaat de lus na 50' --- Commentaar Dim X As Integer For X = 11 To 100 Range("F" & X). Waarde = X Als X = 50 Dan MsgBox ("Bye Bye") Exit For End If Next X End Sub
Code Verklaring:
- We hebben X toegewezen als een geheel getal
- Voor X = 11 tot 100; begint vanaf 11 met verhoging met 1 in X totdat de voorwaarde voldoet
- Bereik ("F" &X). Waarde = X; deze regel slaat de waarde van X op en gaat door naar bereik F11 totdat de voorwaarde voldoet
- Na het invoeren van de waarde 50 in cel F50, wordt het volgende berichtvenster weergegeven:
Conclusie: Met de bovenstaande 7 voorbeelden kunnen we For loop toepassen in ons reguliere of elk willekeurig automatiseringsgedeelte.
Als je onze blogs leuk vond, deel deze dan met je vrienden op Facebook. En je kunt ons ook volgen op Twitter en Facebook.
We horen graag van je, laat ons weten hoe we ons werk kunnen verbeteren, aanvullen of vernieuwen en het voor jou beter kunnen maken. Schrijf ons op de e-mailsite