Innholdsfortegnelse:
- Et neste eksempel
- For-neste eksempler med et trinn
- Et for-neste eksempel med en avslutningsforklaring
- Et nestet For neste eksempel
Video: Python Web Apps with Flask by Ezra Zigmond 2024
Den enkleste typen loop i Excel VBA programmering er en For-Next loop. Sløyfen styres av en tellervariabel, som starter med en verdi og stopper med en annen verdi. Uttalelsene mellom For-setningen og Neste-setningen er de utsagnene som blir gjentatt i løkken.
Et neste eksempel
Følgende eksempel bruker en For-Next-loop for å summere de første 1 000 positive tallene. Totalvariabelen starter som null. Deretter oppstår loopingen. Variabel Cnt er loop-telleren. Den starter som 1 og økes med 1 hver gang gjennom løkken. Sløyfen slutter når Cnt er 1, 000.
Dette eksemplet har bare en setning i løkken. Denne setningen legger til verdien av Cnt til Total-variabelen. Når sløyfen er ferdig, viser en MsgBox summen av tallene.
Sub AddNumbers () Dim Total Som Dobbel Dim Cnt Så Lang Totalt = 0 For Cnt = 1 Til 1000 Totalt = Totalt + Cnt Neste Cnt MsgBox Total End Sub
Fordi loop-telleren er en vanlig variabel, kan du skrive kode for å endre verdien i kodeblokken mellom For- og Neste-setningene. Dette er imidlertid en veldig dårlig praksis.
For-neste eksempler med et trinn
Du kan bruke en trinnverdien til å hoppe over noen motverdier i en For-Next-loop. Her er det forrige eksempelet, omskrevet for å summe bare de ulige tallene mellom 1 og 1, 000:
Sub AddOddNumbers () Dim Total Som Dobbel Dim Cnt Så Lang Totalt = 0 For Cnt = 1 Til 1000 Trinn 2 Totalt = Totalt + Cnt Neste Cnt MsgBox Total End Sub
Denne gangen starter Cnt som 1 og tar deretter opp verdier på 3, 5, 7 og så videre. Trinnverdien bestemmer hvordan telleren økes. Legg merke til at den øvre sløyfeverdien (1000) ikke er faktisk brukt fordi den høyeste verdien av Cnt vil være 999.
Her er et annet eksempel som bruker en trinnverdi på 3. Denne prosedyren fungerer med det aktive arket og bruker lysegrå skyggelegging til hver tredje rad, fra rad 1 til rad 100.
Sub ShadeEveryThirdRow () Dim jeg så lenge for jeg = 1 til 100 trinn 3 rader (i). Interiør. Farge = RGB (200, 200, 200) Neste avslutter Sub
Sjekk resultatet av å kjøre denne makroen.
Bruk en sløyfe for å bruke bakgrunnsskygging til rader.Et for-neste eksempel med en avslutningsforklaring
En For-Next-loop kan også inkludere ett eller flere Exit For-setninger i loop. Når VBA møter denne utsagnet, avslutter sløyfen umiddelbart.
Følgende eksempel viser Exit For-setningen. Denne rutinen er en funksjonsprosedyre som skal brukes i en regnearkformel.Funksjonen aksepterer ett argument (en variabel som heter Str) og returnerer tegnene til venstre for det første talltallet. For eksempel, hvis argumentet er "KBR98Z," returnerer funksjonen "KBR. "
Funksjon TextPart (Str) Dim jeg så lenge TextPart =" "For i = 1 Til Len (Str) Hvis IsNumerisk (Mid (Str, I, 1)) Avslutt For El TextPart = TextPart & Mid jeg, 1) Slutt hvis neste jeg avslutter funksjonen
Forløpsløkken starter med 1 og slutter med tallet som representerer antall tegn i strengen. Koden bruker VBAs Mid-funksjon for å trekke ut et enkelt tegn i løkken. Hvis et numerisk tegn er funnet, utføres Exit for-setningen, og sløyfen slutter for tidlig.
Hvis tegnet ikke er numerisk, legges det til den returnerte verdien (som er den samme som funksjonens navn). Den eneste gangen sløyfen vil undersøke hvert tegn er hvis strengen gikk fordi argumentet ikke inneholder noen numeriske tegn.
Et nestet For neste eksempel
Du kan ha et hvilket som helst antall setninger i loop og nest For-Next-løkker inne i andre For-Next-løkker.
Følgende eksempel bruker en nestet For-Next-sløyfe for å sette inn tilfeldige tall i et 12-rad-for-5-kolonne rekkevidde av celler. Legg merke til at rutinen utfører indre sløyfe (sløyfen med radtelleren) en gang for hver iterasjon av ytre sløyfe (sløyfen med Col-telleren). Med andre ord utfører rutinen cellene (Row, Col) = Rnd-setningen 60 ganger.
Disse cellene ble fylt ved å bruke en nestet For-Next-løkke.Sub FillRange () Dim Col så langt Dim Row så lenge for Col = 1 til 5 for rad = 1 til 12 celler (rad, kol) = Rnd neste rad neste kol End Sub
neste eksempel bruker nestet for -Neste looper for å initialisere et tredimensjonalt array med verdien 100. Denne rutinen utfører setningen i midten av alle løkkene (oppgaveoppgaven) 1.000 ganger (10 * 10 * 10), hver gang med en annen kombinasjon av verdier for i, j og k:
Sub NestedLoops () Dim MyArray (10, 10, 10) Dim jeg så lenge Dim j Så lang Dim k Så lenge For i = 1 til 10 For j = 1 til 10 For k = 1 til 10 MyArray (i, j, k) = 100 Neste k Neste j Neste jeg 'Andre setninger gå her Slutt Sub
Her er et siste eksempel som bruker nestede For-Next-løkker, med en Step-verdi. Denne prosedyren oppretter et sjakkbrett ved å endre bakgrunnsfargen på alternerende celler.
Bruk løkker til å lage et sjakkbrettmønster.Radetelleren løper fra 1 til 8. En If-Then-konstruksjon bestemmer hvilken nestet For-Next-struktur som skal brukes. For ulik nummererte rader begynner Col-telleren med 2. For likeverdige rader begynner Col-telleren med 1. Begge løkkene bruker en trinnverdien på 2, slik at alternative celler påvirkes. To ekstra setninger gjør cellene firkantede (akkurat som et ekte sjakkbrett).
Sub MakeCheckerboard () Dim R så lenge, C så lenge for R = 1 til 8 Hvis WorksheetFunction. IsOdd (R) Then For C = 2 til 8 trinn 2 celler (R, C). Interiør. Farge = 255 Neste C For C = 1 til 8 trinn 2 celler (R, C). Interiør. Farge = 255 Neste C End Hvis Neste R Rader ("1: 8").RowHeight = 35 kolonner ("A: H"). ColumnWidth = 6. 5 End Sub