I VBA brukes looping når du må utføre den samme oppgaven flere ganger til en betingelse er oppfylt (eller til en betingelse er sann).
I denne opplæringen lærer du hvordan du bruker For Next Loop i Excel VBA.
Hvis du er interessert i å lære VBA på den enkle måten, sjekk min Online Excel VBA -opplæring.
Bruker FOR NEXT Loop i Excel VBA
'For Next' Loop fungerer ved å kjøre sløyfen det angitte antallet ganger.
For eksempel, hvis jeg ber deg legge til heltallene fra 1 til 10 manuelt, vil du legge til de to første tallene, deretter legge det tredje tallet til resultatet, og deretter legge det fjerde tallet til resultatet, som så videre …
Er det ikke?
Den samme logikken brukes i For Next -løkken i VBA.
Du angir hvor mange ganger du vil at løkken skal kjøres, og du angir også hva du vil at koden skal gjøre hver gang løkken kjøres.
Her er For Next loop -formatet du må bruke i VBA for å legge til de første 10 hele tallene.
For i = 1 til 10 [legg til det ith positive heltallet i resultatet] Neste i
La oss nå se på noen eksempler på hvordan du bruker For Next -løkken.
Eksempel 1: Legge til de første 10 positive heltalene
Nedenfor er koden som vil legge til de første 10 positive heltallene ved hjelp av en For Next -løkke. Det vil da vise en meldingsboks som viser summen av disse tallene.
Sub AddNumbers () Dim Total As Integer Dim Count As Integer Total = 0 For Count = 1 To 10 Total = Total + Count Next Count MsgBox Total End Sub
I denne koden er verdien av Total satt til 0 før du går inn i For neste sløyfe.
Når den kommer inn i løkken, holder den den totale verdien etter hver sløyfe. Så etter den første sløyfen, når telleren er 1, blir ‘Total’ -verdien 1, og etter den andre sløyfen blir den 3 (1+2), og så videre.
Og til slutt, når løkken ender og når Total har summen av de første 10 positive heltallene, viser en MsgBox ganske enkelt resultatet i en meldingsboks.
Klikk her for å laste ned eksempelfilen
Eksempel 2: Legge til de første 5 jevne positive heltalene
For å oppsummere de fem til og med positive heltallene (dvs. 2,4,6,8 og 10), trenger du en lignende kode med en betingelse for å bare vurdere partallene og ignorere oddetallene.
Her er en kode som gjør det:
Sub AddEvenNumbers () Dim Total As Integer Dim Count As Integer Total = 0 For Count = 2 To 10 Step 2 Total = Total + Count Next Count MsgBox Total End Sub
Vær oppmerksom på at vi startet Count -verdien fra 2 og også brukte trinn 2 i For -syntaksen.
Trinn 2 vil fortelle koden om å øke 'Count' -verdien med 2 hver gang løkken kjøres. Så Count -verdien starter fra 2 og blir deretter 4, 6, 8 og 10 når loopingen oppstår.
MERK: En annen måte å gjøre dette på kan være å kjøre løkken fra 1 til 10 og i sløyfen sjekke om tallet er partall eller oddetall. Imidlertid er bruk av Step i dette tilfellet en mer effektiv måte, ettersom det ikke krever at løkken skal kjøres 10 ganger, men bare 5 ganger.
Klikk her for å laste ned eksempelfilen.
Eksempel 3: Få den numeriske delen fra en alfanumerisk streng
'For Next' loop kan også brukes til å gå gjennom hvert tegn i en streng.
For eksempel, hvis du har en liste over alfanumeriske strenger, kan du bruke For Next -løkken til å trekke ut tallene fra den (som vist nedenfor):
Her er en kode som lager en egendefinert funksjon i VBA som kan brukes som alle andre regnearkfunksjoner.
Den trekker ut den numeriske delen fra den alfanumeriske strengen.
Funksjon GETNUMERIC (Cl As Range) Dim i As Integer Dim Result as Long For i = 1 To Len (Cl) If IsNumeric (Mid (Cl, i, 1)) Then Result = Result & Mid (Cl, i, 1) End If Next i GetNumeric = Resultatsluttfunksjon
I denne koden er antall ganger sløyfen kjøres avhengig av lengden på den alfanumeriske strengen (den bruker LEN -funksjonen til å finne lengden på strengen).
Du må sette denne funksjonen i modulkodevinduet, og deretter kan du bruke den som alle andre regnearkfunksjoner.
Klikk her for å laste ned eksempelfilen.
Eksempel 4: Få tilfeldige tall i det valgte området
Anta at du raskt vil angi tilfeldige tall i de valgte cellene, her er koden som vil gjøre det.
Sub RandomNumbers () Dim MyRange As Range Dim i As Integer, j As Integer Set MyRange = Selection For i = 1 To MyRange.Columns.Count For j = 1 To MyRange.Rows.Count MyRange.Cells (j, i) = Rnd Neste j Neste i Avslutt Sub
Dette er et eksempel på nestet For Next loop hvor en For loop brukes i en For Loop.
Anta at du velger 10 rader og 4 kolonner, verdien på i varierer fra 1 til 4 og verdien av j varierer fra 1 til 10.
Når den første For -løkken kjøres, er verdien av i 1. Den flyttes deretter til den andre For -løkken som går 10 ganger (for hver rad).
Når den andre For -sløyfen har blitt utført 10 ganger, går den tilbake til den første For -løkken hvor nå verdien av i blir 2. Igjen går den neste For -løkken 10 ganger.
Slik fungerer den nestede For Next -løkken.
Klikk her for å laste ned eksempelfilen.
Du kan også like følgende Excel VBA -opplæringsprogrammer:
- Arbeider med celler og områder i Excel VBA.
- Arbeider med regneark i Excel VBA.
- Arbeide med arbeidsbøker ved hjelp av VBA.
- Bruke IF Then Else Statements i VBA.
- Excel VBA Select Case.
- Opprette en brukerdefinert funksjon i Excel.
- Excel VBA Events - En enkel (og komplett) guide
- Slik spiller du inn en makro i Excel.
- Hvordan kjøre en makro i Excel.
- Hvordan lage et tillegg i Excel.
- Hvordan lagre og gjenbruke makro ved hjelp av Excel Personal Macro Workbook.
- Nyttige Excel -makroeksempler for nybegynnere.
- Bruke InStr -funksjon i VBA.