Indholdsfortegnelse:
- Et næste eksempel
- For-næste eksempler med et trin
- Et eksempel på næste eksempel med en udgangsforklaring
- Et indlejret næste eksempel
Video: Week 1 2024
Den enkleste type loop i Excel VBA-programmering er en For-Next-loop. Sløjfen styres af en tællervariabel, som starter med en værdi og stopper med en anden værdi. Udtalelserne mellem For-erklæringen og Next-sætningen er de udsagn, der gentages i løkken.
Et næste eksempel
Følgende eksempel bruger en For-Next-loop til at summere de første 1 000 positive tal. Totalvariablen starter som nul. Så sker loopingen. Variabeln Cnt er loop-tælleren. Det starter som 1 og øges med 1 hver gang gennem løkken. Sløjfen slutter, når Cnt er 1, 000.
Dette eksempel har kun en sætning inde i løkken. Denne sætning tilføjer værdien af Cnt til Total-variablen. Når sløjfen er færdig, viser en MsgBox summen af tallene.
Sub AddNumbers () Dim Total Som Double Dim Cnt Så Lang Total = 0 For Cnt = 1 til 1000 Total = Total + Cnt Næste Cnt MsgBox Total End Sub
Fordi loop tælleren er en normal variabel, kan du skrive kode for at ændre værdien inden for kodekoden mellem For- og Næste-sætningerne. Dette er dog en meget dårlig praksis.
For-næste eksempler med et trin
Du kan bruge en trinværdi til at springe over nogle modværdier i en For-Next-loop. Her er det forrige eksempel, omskrevet for at summe kun de ulige tal mellem 1 og 1, 000:
Sub AddOddNumbers () Dim Total Som Double Dim Cnt Så Lang Ialt = 0 For Cnt = 1 Til 1000 Trin 2 I alt = I alt + Cnt Næste Cnt MsgBox Total End Sub
Denne gang starter Cnt som 1 og tager derefter værdier på 3, 5, 7 og så videre. Trinværdien bestemmer, hvordan tælleren øges. Bemærk, at den øvre sløjfe værdi (1000) ikke rent faktisk anvendes, fordi den højeste værdi af Cnt vil være 999.
Her er et andet eksempel, der bruger en trinværdi på 3. Denne procedure virker med det aktive ark og anvender lysegrå skygger til hver tredje række, fra række 1 til række 100.
Sub ShadeEveryThirdRow () Dim jeg lige så lang for jeg = 1 til 100 Trin 3 rækker (i). Interiør. Farve = RGB (200, 200, 200) Næste jeg slutter Sub
Tjek resultatet af kørslen af denne makro.
Brug en loop til at anvende baggrundsskygger til rækker.Et eksempel på næste eksempel med en udgangsforklaring
En For-Next-loop kan også indeholde et eller flere Exit For-sætninger i loop. Når VBA møder denne erklæring, ophører sløjfen med det samme.
Følgende eksempel viser Exit For-sætningen. Denne rutine er en funktionsprocedure, der skal bruges i en regnearksformel.Funktionen accepterer et argument (en variabel ved navn Str) og returnerer tegnene til venstre for det første talciffer. For eksempel, hvis argumentet er "KBR98Z," returnerer funktionen "KBR. "
Funktion TextPart (Str) Dim i så lang TextPart =" "For i = 1 til Len (Str) Hvis IsNumerisk (Mid (Str, I, 1)) Afslut derefter for andet tekstPart = TextPart & Mid (Str, Jeg, 1) Afslut, hvis næste jeg slutter Funktion
For-Next-sløjfen starter med 1 og slutter med det tal, der repræsenterer antallet af tegn i strengen. Koden bruger VBAs Mid-funktion til at udtrække et enkelt tegn i loop. Hvis der findes et numerisk tegn, udføres Exit for-sætningen, og sløjfen slutter for tidligt.
Hvis tegnet ikke er numerisk, vedhæftes det til den returnerede værdi (som er den samme som funktionens navn). Den eneste gang sløjfen vil undersøge hvert tegn er, hvis strengen går, da argumentet ikke indeholder nogen numeriske tegn.
Et indlejret næste eksempel
Du kan have et hvilket som helst antal udsagn i loop og nest For-Next-sløjfer inde i andre For-Next-sløjfer.
I det følgende eksempel bruges en indlejret For-Next-loop til at indsætte tilfældige tal i et 12-rad-for-5-kolonne interval af celler. Bemærk at rutinen udfører indre sløjfe (sløjfen med rækketælleren) en gang for hver iteration af ydre sløjfe (sløjfen med Col-tælleren). Med andre ord udfører rutinen Cells (Row, Col) = Rnd-sætningen 60 gange.
Disse celler blev fyldt ved anvendelse af en indlejret For-Next-loop.Sub FillRange () Dim Col Så Lang Dim Række Længe For Col = 1 til 5 for række = 1 til 12 celler (række, kol) = næste næste række næste kol end sub
det næste eksempel bruger nestede for -Næste loops for at initialisere et tredimensionelt array med værdien 100. Denne rutine udfører sætningen midt i alle loops (assignment statement) 1.000 gange (10 * 10 * 10), hver gang med en anden kombination af værdier for i, j og k:
Sub NestedLoops () Dim MyArray (10, 10, 10) Dim i Så lang Dim j Så lang Dim k Så lang For i = 1 til 10 For j = 1 til 10 For k = 1 til 10 MyArray (i, j, k) = 100 Næste k Næste j Næste jeg 'Andre sætninger gå her Afslut Sub
Her er et sidste eksempel, der bruger indlejrede For-Next-sløjfer med en Step-værdi. Denne procedure skaber et tavler ved at ændre baggrundsfarven på alternerende celler.
Brug sløjfer til at skabe et skakbræt mønster.Radælleren løber fra 1 til 8. En If-Then-konstruktion bestemmer hvilken indlejret For-Next-struktur, der skal bruges. For ulige nummererede rækker begynder Col-tælleren med 2. For ensartede rækker begynder Col-tælleren med 1. Begge sløjfer bruger en trinværdi på 2, så alternative celler påvirkes. To yderligere sætninger gør cellerne firkantede (ligesom et rigtigt tavler).
Sub MakeCheckerboard () Dim R så lang, C så lang for R = 1 til 8 Hvis WorksheetFunction. IsOdd (R) Then For C = 2 til 8 trin 2 celler (R, C). Interiør. Farve = 255 Næste C For C = 1 til 8 Trin 2 celler (R, C). Interiør. Farve = 255 Næste Cend Hvis næste R Rækker ("1: 8").RowHeight = 35 kolonner ("A: H"). ColumnWidth = 6. 5 End Sub