Excel VBA-lussen

Lussen kunnen worden beschouwd als de best functionerende component van VBA en kunnen ook worden beschouwd als het hart van macro's. Ze helpen je meestal om het aantal regels in je code te verminderen en het werk in minuten te doen, wat uren kan duren voor een mens.

In het dagelijks leven komt een programmeur met dergelijke gevallen waarin hij steeds opnieuw dezelfde set code moet uitvoeren. Dit wordt looping genoemd. Het is duidelijk dat elke keer dat dezelfde code wordt uitgevoerd, ongeveer hetzelfde resultaat oplevert met een kleine verandering in de variabele. Lussen heeft een groot aantal voordelen, maar het belangrijkste van alles is automatisering. Het helpt om het spul te automatiseren.

Als u VBA Script nog niet eerder hebt gebruikt, kunt u gewoon een Excel-werkmap openen en op Alt + F11 drukken . Het opent een VBA-project.

Laten we dieper naar binnen gaan.

Stel dat we 1 tot 10 nummers in één keer willen afdrukken. We kunnen het doen met de volgende code.

Code:

 Sublus1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Als je snel door de code kunt komen, heb ik Debug toegevoegd. Druk één voor één af om nummers van 1 tot 10 af te drukken. Na het uitvoeren van de code zien we de uitvoer in Direct venster. Als u Direct venster wilt openen, drukt u ergens in Excel op Ctrl + G.

Voer de code uit met behulp van de F5-toets of handmatig, zoals weergegeven in de onderstaande schermafbeelding. Laten we de uitvoer voor deze code controleren.

Typen VBA-lussen in Excel

Als programmeur zul je nooit graag repeterende lijnen schrijven die op het punt staan ​​hetzelfde resultaat te geven. U wilt het automatiseren. Daarom zullen we verschillende Excel VBA-loops zien en hoe ze te gebruiken met behulp van enkele voorbeelden.

Type # 1 - VBA voor volgende lus

Voor de volgende VBA-lus kunnen we het celbereik doorlopen en dezelfde taak uitvoeren voor elke cel die in de lus is opgegeven. Het startnummer en eindnummer moeten hier worden vermeld.

code:

 Sublus1 () Voor i = 1 tot 10 cellen (i, 1). Waarde = i Volgende ik beëindig Sub 

Deze code geeft exact dezelfde uitvoer als van de vorige. Het meest opmerkelijke in deze code is echter het verminderen van een aantal regels. We hebben de 12-regelige code gereduceerd tot slechts een code met 5-regels.

In deze code is lus1 de naam van de macro. De for-lus begint met i = 1, hij drukt de waarde van i (dwz 1) af onder Excel-cel en bij Volgende gaat hij weer naar het begin van de for-lus en maakt i = 2 de waarde van i (ie 2) in de volgende cel enzovoort totdat de code zijn laatste waarde bereikt, namelijk 10. Zodra de code de laatste waarde van i (10) bereikt, wordt de code zelf beëindigd vanwege het niet beschikbaar zijn van een geheel getal boven 10.

Voer de code uit met de F5-toets of handmatig. U ziet de uitvoer dus zoals hieronder.

Type # 2 - VBA voor lus met voorwaartse stap

Zoals je in het vorige lusvoorbeeld hebt gezien, had ik een toename in 1 stap. Standaard wordt de stapwaarde beschouwd als 1 in VBA. Is het echter mogelijk om een ​​eigen stap te zetten? Stel dat u alleen de even getallen tussen 1 en 20 wilt zien. Hoe kan dit?

Zoals de algemene wiskunde suggereert, worden de getallen die zich op een afstand van 2 van elkaar bevinden (uitgaande van een eerste even getal 2) beschouwd als even getallen, toch?

We zullen dezelfde logica toepassen. Zie onderstaande code voor uw referentie.

Code:

 Sub ForwardStep () Voor i = 2 tot 20 Stap 2 Cellen (i, 1). Waarde = i Volgende ik beëindig Sub 

Voor de waarden die beginnen met 2, maakt deze lus het mogelijk om 2, 4, 6, 8 … 20 in daaropvolgende excel-cellen af ​​te drukken. Stap 2 heeft expliciet gegeven zodat vanaf nummer 2 de code naar het volgende nummer springt met stap 2 (dat wil zeggen dat 4 wordt afgedrukt) enzovoort. Dit proces gaat door totdat er 20 in een cel voorkomen. Zodra er 20 in een cel voorkomt, wordt de lus automatisch beëindigd.

Voer de code uit met de F5-toets of handmatig. U ziet de uitvoer dus zoals hieronder.

Type # 3 - VBA voor lus met stap achteruit

Op dezelfde manier als bij for loop met voorwaartse stap, kunnen we for loop gebruiken met een achterwaartse stap. Wat als we bijvoorbeeld onze achterwaartse stap instellen op -2 en een for-lus uitvoeren van de waarden 20 tot 2?

We zullen zien hoe het werkt.

code:

 Sub BackwardStep () Voor i = 20 tot 2 Stap -2 Debug.Print i Volgende ik beëindig Sub 

Na het uitvoeren van de code kunnen we de uitvoer zien in Direct venster. Als u Direct venster wilt openen, drukt u ergens in Excel op Ctrl + G.

Omdat we een beginpunt van de lus hebben gegeven als 20 en eindpunt als 2 met stap -2, begint de lus vanaf 20 en gaat in stap -2 door naar het volgende nummer dat -18 is enzovoort. Zodra de lus waarde 2 bereikt, wordt deze automatisch beëindigd en wordt de laatste waarde afgedrukt als 2.

Type # 4 - VBA genest voor lus

We kunnen ook de TheFor-lus nestelen. Er wordt echter niet gesuggereerd om meer dan driemaal dezelfde lus te nesten in een code (het kan worden beschouwd als de fout in de logica).

Zie de onderstaande code voor genest voor lus.

Code:

 Sub genest voor () voor i = 1 tot 10 voor j = 1 tot 2 cellen (i, j). Waarde = i * j Volgende j Volgende i Einde Sub 

In dit voorbeeld zet macro bij i = 1 en j = 1 de waarde van i * j (1 * 1) in het snijpunt van rij i = 1 en kolom j = 1 (dwz cel A1) en gaat voor de volgende waarde van j (2) met i = 1. In het snijpunt van rij i = 1 en kolom j = 2 (dwz cel B1), voert macro de waarde van I * j (1 * 2) in. Lus negeert de volgende waarde van j, omdat j alleen varieert van 1 tot 2 en naar de volgende waarde van i gaat.

Voor i = 2 en j = 1, voert macro de waarde van i * j (2 * 1) in op het snijpunt van de 2e rij en de 1e kolom (dwz cel A2) en gaat door. Tot het bereik van i en j.

Voer de code uit met de F5-toets of handmatig, zoals weergegeven in de onderstaande schermafbeelding. U ziet de uitvoer dus zoals hieronder.

Type # 5 - VBA Do While Loop

Do While-lus is een van de meest interessante lussen in VBA. Hiermee kunt u de voorwaarde controleren en de uitvoer schrijven (DO), wanneer aan een bepaalde voorwaarde of reeks voorwaarden is voldaan (of de voorwaarde (n) WAAR is / zijn).

Zie onderstaande code:

Code:

 Sub do_whileloop () Dim i als geheel getal i = 1 doen terwijl i <= 10 cellen (i, 1). Waarde = i * ii = i + 1 Loop End Sub 

Deze lus werkt als volgt:

Voor de waarden van i van 1 (aanvankelijk i = 1) tot 10, berekent het i * i (dwz kwadratische waarde voor elke gehele waarde van i) en voert deze in onder cel 1 tot en met 10 respectievelijk. De output is niets anders dan de kwadratische waarden van gehele getallen 1 tot 10. Bekijk Loop onder deze code eens nader. Het is verplicht om het toe te voegen, anders zal het systeem een ​​foutmelding geven.

Voer de code uit met de F5-toets of handmatig. U ziet de uitvoer dus zoals hieronder.

Dit zijn enkele voorbeelden van de VBA-lus die ik in dit artikel heb geprobeerd te behandelen. Ik hoop dat het precies genoeg zal zijn om een ​​aantal concepten te wissen.

Dingen om te onthouden

  • Zorg er bij het gebruik van voor lus met een achterwaartse stap voor dat uw startnummer groter moet zijn dan uw eindnummer en vice versa.
  • Zorg ervoor dat u onder Do while-lus gebruikt om Loop te sluiten voordat u de hele VBA-code beëindigt. Anders geeft het systeem een ​​compileerfout met de foutmelding "Do Without Loop".

U kunt deze VBA Loops Excel-sjabloon hier downloaden - VBA Loops Excel-sjabloon

Aanbevolen artikelen

Dit is een gids geweest voor Excel VBA-loops. Hier hebben we soorten Excel VBA-loops besproken en hoe ze te gebruiken, samen met enkele praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen–

  1. VBA-functie in Excel
  2. VBA VLOOKUP-functie
  3. Excel-sneltoetsen
  4. Excel-percentielformule

Categorie: