Excel VBA-sløjfer

Loops kan betragtes som den bedst fungerende komponent i VBA og kan også betragtes som hjertet af makroer. De hjælper dig normalt med at reducere antallet af linjer i din kode og udføre arbejdet på få minutter, hvilket kan tage timer for et menneske.

I det daglige liv kommer en programmerer op med sådanne tilfælde, hvor han er nødt til at køre det samme sæt kode igen og igen. Det kaldes looping. Naturligvis vil hver gang der køres den samme kode give det samme resultat med en vis fraktioneret ændring i variablen. Looping har et stort sæt fordele, men det vigtigste af alt er automatisering. Det hjælper med at automatisere de ting.

Hvis du ikke har brugt VBA-script før, kan du bare åbne en Excel-projektmappe og ramme Alt + F11 . Det åbner et VBA-projekt.

Lad os komme dybere inde.

Antag, at vi ønskede at udskrive 1 til 10 numre med et enkelt skud. Vi kan gøre det med følgende kode.

Kode:

 Sub loop1 () 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 

Hvis du hurtigt kan komme igennem koden, har jeg tilføjet Debug.Print en efter en for at udskrive numre fra 1 til 10. Efter at have kørt koden kan vi se output i det umiddelbare vindue. For at åbne det øjeblikkelige vindue skal du trykke på Ctrl + G hvor som helst i Excel.

Kør koden ved hjælp af F5-tasten eller manuelt som vist på nedenstående skærmbillede. Så lad os tjekke output for denne kode.

Typer af VBA-sløjfer i Excel

Som programmerer vil du aldrig være interesseret i at skrive gentagne linjer, der er ved at give det samme resultat. Du vil gerne automatisere det. Derfor vil vi se forskellige Excel VBA Loops, og hvordan man bruger dem ved hjælp af nogle eksempler.

Type nr. 1 - VBA til næste sløjfe

For Next VBA loop giver os mulighed for at gå gennem celleområdet og udføre den samme opgave for hver celle, der er specificeret i loopen. Startnummer & slutnummer skal angives her.

kode:

 Sub loop1 () For i = 1 til 10 celler (i, 1). Værdi = i Next i End Sub 

Denne kode giver nøjagtigt den samme output som den foregående. Den mest bemærkelsesværdige ting i denne kode er imidlertid reduktionen af ​​et antal linjer. Vi har reduceret 12-linjekoden til blot en kode med 5 linjer.

I denne kode er loop1 navnet på makroen. For-loop starter fra i = 1, den udskriver værdien af ​​i (dvs. 1) under excel-celle og ved næste gang går den igen til starten af ​​for-loop og får i = 2 til at udskrive værdien af ​​i (dvs. 2) i næste celle og så videre indtil koden når sin sidste værdi, dvs. 10. Så snart koden når den sidste værdi af i (10), bliver koden selv afsluttet på grund af manglende tilgængelighed af en heltalværdi over 10.

Kør koden ved hjælp af F5-tasten eller manuelt. Så du kan se output som nedenfor.

Type # 2 - VBA til loop med fremadrettet trin

Som du har set i det forrige eksempeleksempel, havde jeg en stigning i 1 trin. Som standard betragtes trinværdi som 1 i VBA. Er det dog muligt at sætte et eget skridt? Antag, at du kun ønsker at se lige antal mellem 1 og 20. Hvordan kan det gøres?

Som den generelle matematik antyder, betragtes de tal, der ligger i afstanden fra 2 til hinanden (Fra et første lige antal 2), som lige antal, ikke?

Vi anvender den samme logik. Se nedenstående kode for din reference.

Kode:

 Sub ForwardStep () For i = 2 til 20 Trin 2 celler (i, 1). Værdi = i Næste i End Sub 

For de værdier, der starter fra 2, giver denne løkke mulighed for at udskrive 2, 4, 6, 8 … 20 i efterfølgende excelceller. Trin 2 har eksplicit givet, så fra og med nummer 2 springer koden til det næste nummer med trin 2 (dvs. 4 udskrives) og så videre. Denne proces fortsætter, indtil 20 forekommer i en celle. Så snart 20 opstår i en celle, afsluttes løkken automatisk.

Kør koden ved hjælp af F5-tasten eller manuelt. Så du kan se output som nedenfor.

Type # 3 - VBA til sløjfe med bagudtrin

På samme måde som for for loop med fremadgående trin, kan vi bruge til loop med et bagudgående trin. Hvad nu, hvis vi indstiller vores bagudgående trin som -2 og kører en for-loop fra værdierne 20 til 2?

Vi vil se, hvordan det fungerer.

kode:

 Sub BackwardStep () For i = 20 til 2 Trin -2 Debug.Print i Next i End Sub 

Efter at have kørt koden kan vi se output i det umiddelbare vindue. For at åbne det øjeblikkelige vindue skal du trykke på Ctrl + G hvor som helst i Excel.

Da vi har givet et startpunkt for sløjfen som 20 og slutpunktet som 2 med trin -2, starter løkken fra 20, og i trinnet -2 fortsætter den til det næste tal, der er -18 og så videre. Så snart løkken når værdi 2, afsluttes den automatisk, og den sidste værdi udskrives som 2.

Type # 4 - VBA nestet til sløjfe

Vi kan også nest theFor loop. Det foreslås dog ikke at foretage nestning af den samme sløjfe mere end tre gange i en kode (Det kan betragtes som fejlen i logik).

Se nedenstående kode for indlejret til løkke.

Kode:

 Sub NestedFor () For i = 1 til 10 For j = 1 til 2 celler (i, j) .Værdi = i * j Næste j Næste i slutning Sub 

I dette eksempel, ved i = 1 og j = 1, sætter makroen værdien af ​​i * j (1 * 1) i skæringspunktet mellem række i = 1 og kolonne j = 1 (dvs. celle A1) og går til den næste værdi af j (2) ved at holde i = 1. I krydset mellem række i = 1 og kolonne j = 2 (dvs. celle B1) indtaster makroen værdien af ​​I * j (1 * 2). Loop ignorerer den næste værdi af j, da j kun varierer fra 1 til 2 og går til den næste værdi af i.

For i = 2 og j = 1 indtaster makroen værdien af ​​i * j (2 * 1) i krydset mellem 2. række og 1. søjle (dvs. celle A2) og fortsætter. Indtil området i og j.

Kør koden ved hjælp af F5-tasten eller manuelt som vist på nedenstående skærmbillede. Så du kan se output som nedenfor.

Type # 5 - VBA gør mens du er i loop

Do While loop er en af ​​de mest interessante sløjfer i VBA. Det giver dig mulighed for at kontrollere betingelsen og skrive output (DO), når en bestemt betingelse eller et sæt betingelser er opfyldt (eller betingelsen / betingelserne er / er Sande).

Se koden nedenfor:

Kode:

 Sub do_whileloop () Dim i som heltal i = 1 gør mens jeg <= 10 celler (i, 1). Værdi = i * ii = i + 1 Loop End Sub 

Denne loop fungerer som nedenfor:

For værdierne af i fra 1 (i = 1 indledningsvis) til 10 beregner det, i * i (dvs. kvadratværdi for hver heltalværdi af i) og indlæser den under henholdsvis celle 1 til 10. Outputet er intet andet end de kvadratiske værdier for heltal 1 til 10. Se nærmere på Loop under denne kode. Det er obligatorisk at tilføje det, ellers skyder systemet en fejl.

Kør koden ved hjælp af F5-tasten eller manuelt. Så du kan se output som nedenfor.

Dette er nogle af VBA-loopeksemplerne, som jeg har forsøgt at tage sig af i denne artikel. Håber det vil være præcist nok til at rydde nogle koncepter.

Ting at huske

  • Når du bruger til loop med et bagudgående trin, skal du sørge for, at dit startnummer skal være større end dit slutnummer og vice versa.
  • Under Do while loop skal du sikre dig, at du bruger Loop til at lukke do, mens du afslutter hele VBA-koden. Ellers kaster systemet en compiler-fejl med fejlmeddelelsen “Do Without Loop”.

Du kan downloade denne VBA Loops Excel skabelon her - VBA Loops Excel skabelon

Anbefalede artikler

Dette har været en guide til Excel VBA Loops. Her diskuterede vi typer af Excel VBA-sløjfer, og hvordan man bruger dem sammen med nogle praktiske eksempler og downloadbar excel-skabelon. Du kan også gennemgå vores andre foreslåede artikler–

  1. VBA-funktion i Excel
  2. VBA VLOOKUP-funktion
  3. Genvejstaster til Excel
  4. Excel-procentdel

Kategori: