Vil du automatisere repeterende oppgaver i Excel ved hjelp av VBA? Lær hvordan du bruker For Every-løkken til å effektivt manipulere data i regnearkene dine.

Loops og VBA går sammen, og med en god grunn også. Når du arbeider med Microsoft Office-objekter som arbeidsbøker, regneark og områder, kan løkker hjelpe deg med å veksle mellom hver av dem relativt enkelt.

Mens mer eller mindre alle VBA-løkkene fungerer bra med objekter, er "for hver"-løkken et av de beste alternativene for å jobbe med objektsamlinger. Hvis du er ny på Excel VBA og ønsker å mestre for hver løkke, kan du raskt lære av noen av disse eksemplene. Her er alt du trenger å vite om denne typiske løkken.

For hver løkkes syntaks

Syntaksen for hver loop er ganske lik den vanlige for loop i Excel VBA. Her er syntaksen:

For hvert variabelnavn i objektsamling

[uttalelse]

[uttalelse]

[uttalelse]

Neste variabelnavn

Løkken starter med nøkkelordet "for hver"; du kan bruke et hvilket som helst variabelnavn, etterfulgt av objektsamlingen. Objektet i for hver løkke kan være celler, områder, ark og til og med arbeidsbøker. Slik er skjønnheten i denne løkken; det gir deg fleksibiliteten til å jobbe med forskjellige Excel-samlinger.

Sløyfen går gjennom hver samlingsverdi og lagrer referansen i det definerte variabelnavnet. Etter kjøring utfører VBA de lagrede setningene i løkken og flytter til neste objekt i samlingen (den neste nøkkelord er nyttig her). La oss forstå kodestrukturen med et grunnleggende eksempel.

Slik bruker du for hver sløyfe i Excel VBA

Anta at du vil skrive ut et tall i cellene A1 til A10. Den beste tilnærmingen er å bruke for hver sløyfe med rekkeviddefunksjonen og la koden gjøre det nødvendige. Slik kan du gjøre denne enkle oppgaven:

  1. Åpne VBA-kodeeditoren ved å trykke Alt + F11.
  2. Sett inn en modul ved å klikke på Modul alternativet innenfor Sett inn fanen.
  3. Lag en underrutine ved å bruke sub()-kommandoen i koderedigeringsmodulvinduet. Sørg for at du tilordner et meningsfullt navn til underrutinen. For dette eksemplet kan du bruke navnet for_hver_løkke.

Nå som det grunnleggende er ute av veien, er det på tide å begynne å skrive koden. I underrutinen skriver du inn følgende kommandoer:

Dim celle som område

For hver celle i Ark("Ark1").Område("A1:A10")

cell.value = 10

Neste celle

Når koden kjøres, vil c variabel vil lagre verdien til A1. Deretter, når den går videre til setningen i løkken, evaluerer den kommandoen og legger inn en verdi på 10 i den definerte cellen, dvs. celle A1.

Til slutt, når den flytter til neste nøkkelord, flytter den til neste verdi, dvs. celle A2. Sløyfen løper til den når celle A10. Dette er den endelige utgangen:

Bruke sløyfen med objekter: celler, ark og arbeidsbøker

Excel har tre hovedobjekttyper som du jobber med regelmessig. Dette er celler, ark og arbeidsbøker. Slik kan du bruke løkken med alle tre objekttypene.

Arbeide med celler og løkker sammen

Anta at du vil legge til en verdi og noen formateringsbetingelser til en rekke celler i Ark1. Som et første trinn må du definere betingelsene i loopen, etterfulgt av formateringskommandoene.

Skriv inn følgende kode i en underrutine.

Sub for_each_loop()

Dim c Som Område

For hver c i ark("Ark1").Område("A1:A10")

Med c

.Verdi = 10

.Skrift. Farge = vbRød

.Skrift. Fet = ekte

.Skrift. Gjennomstreking = ekte

SluttMed

Neste c

Slutt Under

De med funksjonen er nyttig når du utfører flere funksjoner med ett spesifikt objekt. Siden du ønsker å utføre en rekke oppgaver med c-variabelen, kan du kombinere dem alle ved å bruke en with..end with function.

Sløyfen likestiller cs verdi med hver celleverdi og legger inn verdien som 10. I tillegg endrer den cellens farge til rød, markerer verdien med fet skrift og slår den gjennom. Når den har fullført alle trinnene, går den til neste definerte verdi i området.

Bruke løkken til å kontrollere ark

I likhet med eksemplet ovenfor kan du bruke for hver sløyfe for å kontrollere ark. Hva med å endre navnet på Sheet1 til Sheet3 ved å bruke VBA?

Du kan bruke følgende kode for å gi nytt navn til et eksisterende regneark i Excel ved å bruke VBA:

Sub for_each_loop_sheets()

TilHvershtIDenne arbeidsboken.Arkene

Hvis sht. Navn = "Ark1" Deretter

sht. Navn = "Sheet3"

SluttHvis

Neste sht

Slutt Under

Koden går gjennom hvert ark i arbeidsboken og kontrollerer navnet på hvert ark. Hvis den støter på navnet Ark1, endres det til Ark3. Den går gjennom de resterende arkene, hvis noen, i arbeidsboken. Når kodeutførelsen når det siste arket, går den ut av løkken og underrutinen.

Blant noen andre vanlige bruksområder kan du slå sammen flere regneark ved hjelp av VBA og oppdater innholdet i et enkelt ark ved hjelp av loops.

Veksle gjennom arbeidsbøker med løkken

Til slutt kan du bruke for hver sløyfe til å bla gjennom forskjellige arbeidsbøker og utføre spesifikke oppgaver. La oss demonstrere denne funksjonen med et eksempel.

Du kan bruke VBA-kommandoer til å legge til tre nye arbeidsbøker og lukke alle de åpne sammen. Slik kan du gjøre det:

Sub loop_wrkbook()

Dim wrkbook som arbeidsbok

Arbeidsbøker.Legg til

Arbeidsbøker.Legg til

Arbeidsbøker.Legg til

For hver arbeidsbok i arbeidsbøker

arbeidsbok.Lukk

Neste arbeidsbok

Slutt Under

Koden ovenfor vil også lukke makroarbeidsboken; sørg for at du har lagret kodene dine før du kjører denne koden.

Siden løkker har flere bruksområder, kan du også konsolidere data fra flere arbeidsbøker til én enkelt arbeidsbok.

Bruke en nestet IF-erklæring med sløyfen

Som eksemplet ovenfor kan du bruke en IF-setning i loopen for å se etter spesifikke forhold. La oss endre cellens bakgrunnsfarge basert på verdiene til cellen.

Det er noen få tilfeldige tall i cellene A1:A20. Du kan skrive en sløyfe for å gå gjennom hver gitt celle i området; hvis cellens verdi er mindre enn 10, skal cellefargen endres til rød. Hvis celleverdien overstiger 10, skal den bli grønn. Bruk følgende kode til dette formålet:

Sub loop_w_if()

Dim c Som Område

For hver c i ark("Sheet4").Område("A1:A20")

Hvisc.Verdi < 10 Deretter

c. Interiør. ColorIndex = 3

Ellers: c. Interiør. ColorIndex = 4

SluttHvis

Neste c

Slutt Under

Slik ser utgangen ut:

Bruke Loops i Excel VBA

Excel VBA er ikke begrenset til bare for hver løkke. Det finnes en rekke nyttige løkker som lar deg utføre forskjellige funksjoner enkelt. Gi adieu til hverdagslige, manuelle oppgaver, ettersom VBAs looper som for loop, gjør mens og gjør til looper trer inn for å gjøre livet ditt enklere.