Excel VBA-løkker

Looper kan betraktes som den best fungerende komponenten i VBA og kan også betraktes som hjertet til makroer. De hjelper deg vanligvis å redusere antall linjer i koden din og utføre arbeidet i løpet av minutter som kan ta timer for et menneske.

I det daglige livet kommer en programmerer opp med slike tilfeller der han trenger å kjøre det samme settet med kode igjen og igjen. Det kalles looping. Det er klart, hver gang du kjører den samme koden vil gi omtrent det samme resultatet med en viss brøkendring i variabelen. Looping har et stort sett med fordeler, men det viktigste av alt er automatisering. Det hjelper å automatisere tingene.

Hvis du ikke har brukt VBA Script før, kan du bare åpne en Excel-arbeidsbok og trykke på Alt + F11 . Det vil åpne et VBA-prosjekt.

La oss komme dypere inne.

Anta at vi ønsket å skrive ut 1 til 10 tall på et enkelt skudd. Vi kan gjø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 raskt kan komme igjennom koden, har jeg lagt til Debug.Print en etter en for å skrive ut tall fra 1 til 10. Etter å ha kjørt koden kan vi se utdataene i Immediate Window. For å åpne Umiddelbart vindu, trykk Ctrl + G hvor som helst i Excel.

Kjør koden ved å bruke F5-tasten eller manuelt som vist på skjermbildet nedenfor. Så la oss sjekke utdataene for denne koden.

Typer VBA-løkker i Excel

Som programmerer vil du aldri være opptatt av å skrive repeterende linjer som er i ferd med å gi samme resultat. Du ønsker å automatisere det. Derfor vil vi se forskjellige Excel VBA-løkker og hvordan du bruker dem ved hjelp av noen eksempler.

Type # 1 - VBA For Next Loop

For Neste VBA-loop gir oss mulighet til å gå gjennom celleområdet og utføre den samme oppgaven for hver celle som er spesifisert i løkken. Startnummer og sluttnummer må angis her.

kode:

 Sub loop1 () For i = 1 til 10 celler (i, 1). Verdi = i Neste i End Sub 

Denne koden gir nøyaktig samme utgang som den forrige. Det mest bemerkelsesverdige i denne koden er imidlertid reduksjonen av et antall linjer. Vi har redusert 12-linjekoden til bare en kode med 5 linjer.

I denne koden er loop1 navnet på makroen. For-loop starter fra i = 1, den skriver ut verdien av i (dvs. 1) under excel-celle, og ved Neste går den igjen til starten av for-loop og gjør at i = 2 skriver ut verdien av i (dvs. 2) i neste celle og så videre til koden når sin siste verdi, dvs. 10. Så snart koden når den siste verdien på i (10), blir koden avsluttet på grunn av manglende tilgjengelighet av noen heltallverdi over 10.

Kjør koden ved å bruke F5-tasten eller manuelt. Så du kan se utdataene som nedenfor.

Type # 2 - VBA For Loop with Forward Step

Som du har sett i forrige sløyfeeksempel, hadde jeg en økning på 1 trinn. Som standard regnes trinnverdien som 1 i VBA. Er det imidlertid mulig å sette et eget skritt? Anta at du bare vil se partallene mellom 1 og 20. Hvordan kan det gjøres?

Som generell matematikk antyder, blir tallene som ligger i avstanden fra 2 til hverandre (fra et første partall 2) betraktet som jevne tall, ikke sant?

Vi bruker samme logikk. Se koden nedenfor for din referanse.

Kode:

 Sub ForwardStep () For i = 2 til 20 Trinn 2-celler (i, 1). Verdi = i Neste i End Sub 

For verdiene som starter fra 2, lar denne loopen skrive ut 2, 4, 6, 8 … 20 i påfølgende excel-celler. Trinn 2 har eksplisitt gitt slik at fra nummer 2, vil koden hoppe til neste nummer med trinn 2 (dvs. 4 vil bli skrevet ut) og så videre. Denne prosessen vil fortsette til 20 forekommer i en celle. Så snart 20 oppstår i en celle, avsluttes løkken automatisk.

Kjør koden ved å bruke F5-tasten eller manuelt. Så du kan se utdataene som nedenfor.

Type # 3 - VBA For Loop with Backward Step

På samme måte som for for loop med fremovertrinn, kan vi bruke for loop med et bakovertrinn. For eksempel, hva hvis vi setter vårt tilbakestående trinn som -2 og kjører en for-loop fra verdiene 20 til 2?

Vi får se hvordan det fungerer.

kode:

 Sub BackwardStep () For i = 20 til 2 Trinn -2 Feilsøking. Skriv ut i Next i End Sub 

Etter å ha kjørt koden kan vi se output i Umiddelbart vindu. For å åpne Umiddelbart vindu, trykk Ctrl + G hvor som helst i Excel.

Ettersom vi har gitt et startpunkt for løkken som 20 og sluttpunkt som 2 med trinn -2, starter løkken fra 20 og i trinnet til -2 går den videre til neste nummer som er -18 og så videre. Så snart sløyfen når verdien 2, blir den avsluttet automatisk, og den siste verdien blir skrevet ut som 2.

Type 4 - VBA Nested For Loop

Vi kan også nestle theFor loop. Det er imidlertid ikke foreslått å gjøre rede på den samme sløyfen mer enn tre ganger i en kode (Det kan betraktes som feilen i logikken).

Vennligst se koden nedenfor for nestet for sløyfe.

Kode:

 Sub NestedFor () For i = 1 til 10 For j = 1 til 2 celler (i, j). Verdi = i * j Neste j Neste i Slutt Sub 

I dette eksemplet, ved i = 1 og j = 1, setter makroen verdien til i * j (1 * 1) i skjæringspunktet mellom rad i = 1 og kolonne j = 1 (dvs. celle A1) og går for neste verdi av j (2) ved å holde i = 1. I skjæringspunktet mellom rad i = 1 og kolonne j = 2 (dvs. celle B1) legger makroen inn verdien til I * j (1 * 2). Loop ignorerer neste verdi av j da j bare varierer fra 1 til 2 og går til neste verdi på i.

For i = 2 og j = 1 legger makroen inn verdien til i * j (2 * 1) i skjæringspunktet mellom 2. rad og 1. kolonne (dvs. celle A2) og fortsetter. Inntil området i og j.

Kjør koden ved å bruke F5-tasten eller manuelt som vist på skjermbildet nedenfor. Så du kan se utdataene som nedenfor.

Type # 5 - VBA Do While Loop

Do While loop er en av de mest interessante løkkene i VBA. Det lar deg sjekke tilstanden og skrive output (DO), når en viss betingelse eller sett med betingelser oppfylt (eller betingelsen / er er / er SANN).

Se koden nedenfor:

Kode:

 Sub do_whileloop () Dim i som heltall i = 1 Gjør mens jeg <= 10 celler (i, 1). Verdi = i * ii = i + 1 Loop End Sub 

Denne sløyfen fungerer som nedenfor:

For verdiene i fra 1 (i = 1 til å begynne med) til 10, beregner det, i * i (dvs. kvadratverdi for hver heltalverdi av i) og legger den inn under henholdsvis celle 1 til 10. Utgangen er ikke annet enn de kvadratiske verdiene til heltall 1 til 10. Ta en nærmere titt på Loop under denne koden. Det er obligatorisk å legge det til, ellers vil systemet skyte en feil.

Kjør koden ved å bruke F5-tasten eller manuelt. Så du kan se utdataene som nedenfor.

Dette er noen av VBA-loopeksemplene som jeg har prøvd å ta vare på i denne artikkelen. Håper det vil være presist nok til å tømme noen konsepter.

Ting å huske

  • Når du bruker for loop med et bakover skritt, må du forsikre deg om at startnummeret ditt må være større enn sluttnummeret ditt og omvendt.
  • Under Do while loop, må du forsikre deg om at du bruker Loop for å lukke do mens du avslutter hele VBA-koden. Ellers kaster systemet en kompilatorfeil med feilmeldingen “Do Without Loop”.

Du kan laste ned denne VBA Loops Excel Template her - VBA Loops Excel Template

Anbefalte artikler

Dette har vært en guide til Excel VBA Loops. Her diskuterte vi typer Excel VBA-løkker og hvordan du bruker dem sammen med noen praktiske eksempler og nedlastbar excel-mal. Du kan også gå gjennom andre foreslåtte artikler–

  1. VBA-funksjon i Excel
  2. VBA VLOOKUP-funksjon
  3. Snarveier for Excel-tastatur
  4. Excel-prosentformel

Kategori: