In VBA wordt looping gebruikt wanneer u dezelfde taak meerdere keren moet uitvoeren totdat aan een voorwaarde is voldaan (of totdat een voorwaarde waar is).
In deze zelfstudie leert u hoe u de For Next Loop in Excel VBA gebruikt.
Als je geïnteresseerd bent om VBA op een gemakkelijke manier te leren, bekijk dan mijn Online Excel VBA-training.
FOR NEXT Loop gebruiken in Excel VBA
'For Next' Loop werkt door de lus het opgegeven aantal keren uit te voeren.
Als ik u bijvoorbeeld vraag om de gehele getallen van 1 tot 10 handmatig toe te voegen, zou u de eerste twee getallen toevoegen, dan het derde getal toevoegen aan het resultaat, dan het vierde getal toevoegen aan het resultaat, enzovoort…
Is het niet?
Dezelfde logica wordt gebruikt in de For Next-lus in VBA.
U specificeert hoe vaak u wilt dat de lus wordt uitgevoerd en geeft ook op wat u wilt dat de code elke keer dat de lus wordt uitgevoerd, doet.
Hier is het For Next-lusformaat dat u in VBA moet gebruiken om de eerste 10 gehele getallen toe te voegen.
Voor i = 1 tot 10 [voeg het ith positieve gehele getal toe aan het resultaat] Volgende i
Laten we nu een paar voorbeelden bekijken van het gebruik van de For Next-lus.
Voorbeeld 1: De eerste 10 positieve gehele getallen toevoegen
Hieronder staat de code die de eerste 10 positieve gehele getallen toevoegt met behulp van een For Next-lus. Er wordt dan een berichtvenster weergegeven met de som van deze getallen.
Sub AddNumbers() Dim Totaal As Integer Dim Telling As Integer Totaal = 0 Voor Aantal = 1 Tot 10 Totaal = Totaal + Aantal Volgende Telling MsgBox Totaal Einde Sub
In deze code wordt de waarde van Total ingesteld op 0 voordat u in de For Next-lus komt.
Zodra het in de lus komt, behoudt het de totale waarde na elke lus. Dus na de eerste lus, wanneer Teller 1 is, wordt de waarde 'Totaal' 1, en na de tweede lus wordt het 3 (1+2), enzovoort.
En tot slot, wanneer de lus eindigt en wanneer Total de som heeft van de eerste 10 positieve gehele getallen, geeft een MsgBox het resultaat gewoon weer in een berichtvenster.
Klik hier om het voorbeeldbestand te downloaden
Voorbeeld 2: De eerste 5 even positieve gehele getallen toevoegen
Om de eerste vijf even positieve gehele getallen op te tellen (d.w.z. 2,4,6,8 en 10), hebt u een vergelijkbare code nodig met een voorwaarde om alleen de even getallen te beschouwen en de oneven getallen te negeren.
Hier is een code die het zal doen:
Sub AddEvenNumbers() Dim Total As Integer Dim Count As Integer Totaal = 0 Voor Aantal = 2 tot 10 Stap 2 Totaal = Totaal + Aantal Volgende telling MsgBox Totaal Einde Sub
Merk op dat we de waarde Tellen vanaf 2 zijn begonnen en ook Stap 2 in de For-syntaxis hebben gebruikt.
Stap 2 zou de code vertellen om de 'Count'-waarde met 2 te verhogen elke keer dat de lus wordt uitgevoerd. Dus de Count-waarde begint bij 2 en wordt dan 4, 6, 8 en 10 als de lus plaatsvindt.
OPMERKING: Een andere manier om dit te doen is om de lus van 1 tot 10 te laten lopen en binnen de lus te controleren of het getal even of oneven is. Het gebruik van Step is in dit geval echter een efficiëntere manier omdat de lus niet 10 keer hoeft te worden uitgevoerd, maar slechts 5 keer.
Klik hier om het voorbeeldbestand te downloaden.
Voorbeeld 3: Haal het numerieke gedeelte uit een alfanumerieke tekenreeks
De 'For Next'-lus kan ook worden gebruikt om elk teken in een tekenreeks te doorlopen.
Als u bijvoorbeeld een lijst met alfanumerieke tekenreeksen hebt, kunt u de For Next-lus gebruiken om de getallen eruit te extraheren (zoals hieronder weergegeven):
Hier is een code die een aangepaste functie in VBA maakt die net als elke andere werkbladfunctie kan worden gebruikt.
Het haalt het numerieke deel uit de alfanumerieke reeks.
Functie GETNUMERIC(Cl As Range) Dim i As Integer Dim Result as Long For i = 1 To Len(Cl) If IsNumeric(Mid(Cl, i, 1)) Then Result = Resultaat & Mid(Cl, i, 1) End Als Volgende i GetNumeric = Resultaat Eindfunctie
In deze code is het aantal keren dat de lus wordt uitgevoerd afhankelijk van de lengte van de alfanumerieke tekenreeks (deze gebruikt de LEN-functie om de lengte van de tekenreeks te vinden).
U moet deze functie in het modulecodevenster plaatsen en dan kunt u deze gebruiken zoals elke andere werkbladfunctie.
Klik hier om het voorbeeldbestand te downloaden.
Voorbeeld 4: Willekeurige getallen krijgen in het geselecteerde bereik
Stel dat u snel willekeurige getallen in de geselecteerde cellen wilt invoeren, hier de code die het zal doen.
Sub RandomNumbers() Dim MyRange As Range Dim i As Integer, j As Integer Set MyRange = Selection For i = 1 To MyRange.Columns.Count For j = 1 To MyRange.Rows.Count MyRange.Cells(j, i) = Rnd Volgende j Volgende i Einde Sub
Dit is een voorbeeld van een geneste For Next-lus waarbij een For-lus wordt gebruikt binnen een For-lus.
Stel dat je een selectie maakt van 10 rijen en 4 kolommen, de waarde van i varieert van 1 tot 4 en de waarde van j varieert van 1 tot 10.
Wanneer de eerste For-lus wordt uitgevoerd, is de waarde van i 1. Het gaat dan naar de tweede For-lus die 10 keer wordt uitgevoerd (voor elke rij).
Zodra de tweede For-lus 10 keer is uitgevoerd, gaat deze terug naar de eerste For-lus waar nu de waarde van i 2 wordt. Opnieuw wordt de volgende For-lus 10 keer uitgevoerd.
Dit is hoe de geneste For Next-lus werkt.
Klik hier om het voorbeeldbestand te downloaden.
Misschien vind je de volgende Excel VBA-zelfstudies misschien ook leuk:
- Werken met cellen en bereiken in Excel VBA.
- Werken met werkbladen in Excel VBA.
- Werken met werkmappen met VBA.
- IF Then Else-statements gebruiken in VBA.
- Excel VBA Select Case.
- Een door de gebruiker gedefinieerde functie maken in Excel.
- Excel VBA-evenementen - Een eenvoudige (en complete) gids
- Hoe maak je een macro opnemen in Excel
- Hoe een macro in Excel uit te voeren
- Hoe maak je een invoegtoepassing in Excel
- Macro opslaan en hergebruiken met Excel Personal Macro Workbook.
- Handige Excel-macrovoorbeelden voor beginners.
- InStr-functie gebruiken in VBA.