Vil du automatisere gentagne opgaver i Excel ved hjælp af VBA? Lær, hvordan du bruger For Every-løkken til effektivt at manipulere data i dine regneark.

Loops og VBA går sammen, og det er der også en god grund til. Når du håndterer Microsoft Office-objekter som projektmapper, regneark og områder, kan loops hjælpe dig med at skifte mellem hver af dem med relativ lethed.

Mens mere eller mindre alle VBA-løkkerne fungerer godt med objekter, er "for hver"-løkken en af ​​de bedste muligheder for at arbejde med objektsamlinger. Hvis du er ny til Excel VBA og ønsker at mestre for hver sløjfe, kan du hurtigt lære af nogle af disse eksempler. Her er alt hvad du behøver at vide om denne typiske loop.

For hver sløjfes syntaks

Syntaksen for hver sløjfe er ret lig den sædvanlige for loop i Excel VBA. Her er syntaksen:

For hver variabel_navn i objektsamling

[udmelding]

[udmelding]

[udmelding]

Næste variabel_navn

Løkken starter med nøgleordet "for hver"; du kan bruge et hvilket som helst variabelnavn efterfulgt af objektsamlingen. Objektet i for hver sløjfe kan være celler, områder, ark og endda projektmapper. Sådan er skønheden ved denne løkke; det giver dig fleksibiliteten til at arbejde med forskellige Excel-samlinger.

instagram viewer

Sløjfen går gennem hver samlingsværdi og gemmer referencen i det definerede variabelnavn. Efter udførelse udfører VBA de lagrede sætninger i løkken og flytter til det næste objekt i samlingen (den Næste søgeord er nyttigt her). Lad os forstå kodestrukturen med et grundlæggende eksempel.

Sådan bruges For Every Loop i Excel VBA

Antag, at du vil udskrive et tal i cellerne A1 til A10. Den bedste tilgang er at bruge for hver sløjfe med range-funktionen og lade koden gøre det nødvendige. Sådan gør du denne enkle opgave:

  1. Åbn VBA-kodeeditoren ved at trykke på Alt + F11.
  2. Indsæt et modul ved at klikke på modul mulighed inden for Indsæt fanen.
  3. Opret en underrutine ved hjælp af kommandoen sub() i kodeeditormodulvinduet. Sørg for, at du tildeler underrutinen et meningsfuldt navn. I dette eksempel kan du bruge navnet for_hver_løkke.

Nu hvor det grundlæggende er af vejen, er det tid til at begynde at skrive koden. Inden for underrutinen skal du indtaste følgende kommandoer:

Dæmp celle som rækkevidde

For hver celle i Ark("Ark1").Rækkevidde("A1:A10")

cell.value = 10

Næste celle

Når koden udføres, vil c variabel vil gemme værdien af ​​A1. Dernæst, når den går videre til sætningen i løkken, evaluerer den kommandoen og indtaster en værdi på 10 i den definerede celle, dvs. celle A1.

Til sidst, når den flytter til næste nøgleord, flytter den til den næste værdi, dvs. celle A2. Sløjfen løber, indtil den når celle A10. Dette er det endelige output:

Brug af løkken med objekter: celler, ark og projektmapper

Excel har tre hovedobjekttyper, som du arbejder med regelmæssigt. Disse er celler, ark og projektmapper. Sådan kan du bruge løkken med alle tre objekttyper.

Arbejde med celler og løkker sammen

Antag, at du vil tilføje en værdi og nogle formateringsbetingelser til en række celler i Ark1. Som et første trin skal du definere betingelserne i løkken, efterfulgt af formateringskommandoerne.

Indtast følgende kode i en underrutine.

Sub for_each_loop()

Dim c Som Rækkevidde

For hver c i ark("Ark1").Rækkevidde("A1:A10")

Med c

.Værdi = 10

.Skrifttype. Farve = vbRød

.Skrifttype. Fed = Rigtigt

.Skrifttype. Gennemstregning = Rigtigt

EndeMed

Næste c

Ende Sub

Det med funktion er nyttig, når du udfører flere funktioner med et specifikt objekt. Da du vil udføre en række opgaver med c-variablen, kan du kombinere dem alle ved at bruge en med..ende med funktion.

Sløjfen sidestiller c's værdi med hver celleværdi og indtaster værdien som 10. Derudover ændrer den cellens farve til rød, fed værdien og slår den igennem. Når den har fuldført alle trinene, flytter den til den næste definerede værdi i området.

Brug af løkken til at styre ark

I lighed med ovenstående eksempel kan du bruge for hver sløjfe til at styre ark. Hvad med at ændre navnet på Sheet1 til Sheet3 ved hjælp af VBA?

Du kan bruge følgende kode til at omdøbe et eksisterende regneark i Excel ved hjælp af VBA:

Sub for_each_loop_sheets()

TilHvershtIDenne arbejdsbog.Sheets

Hvis sht. Navn = "Ark1" Derefter

sht. Navn = "Sheet3"

EndeHvis

Næste sht

Ende Sub

Koden går gennem hvert ark i projektmappen og kontrollerer navnet på hvert ark. Hvis den støder på navnet Sheet1, ændres det til Sheet3. Den fortsætter gennem de resterende ark, hvis nogen, i projektmappen. Når kodeudførelsen når det sidste ark, forlader den løkken og sub-rutinen.

Blandt nogle andre almindelige anvendelser kan du flette flere regneark ved hjælp af VBA og opdatere indholdet i et enkelt ark ved hjælp af loops.

Skift gennem projektmapper med løkken

Endelig kan du bruge for hver sløjfe til at skifte gennem forskellige projektmapper og udføre specifikke opgaver. Lad os demonstrere denne funktion med et eksempel.

Du kan bruge VBA-kommandoer til at tilføje tre nye projektmapper og lukke alle de åbne sammen. Sådan kan du gøre det:

Sub loop_wrkbook()

Dim wrkbook som arbejdsbog

Arbejdsbøger.Tilføje

Arbejdsbøger.Tilføje

Arbejdsbøger.Tilføje

For hver arbejdsbog i arbejdsbøger

arbejdsbog.Tæt

Næste arbejdsbog

Ende Sub

Ovenstående kode vil også lukke din makroprojektmappe; sørg for at du har gemt dine koder, før du kører denne kode.

Da sløjfer har flere anvendelsesmuligheder, kan du også konsolidere data fra flere projektmapper til en enkelt projektmappe.

Brug af en indlejret IF-erklæring med løkken

Ligesom ovenstående eksempel kan du bruge en IF-sætning i løkken til at tjekke for specifikke forhold. Lad os ændre cellens baggrundsfarve baseret på cellens værdier.

Der er nogle få tilfældige tal i cellerne A1:A20. Du kan skrive en løkke for at cykle gennem hver given celle i området; hvis cellens værdi er mindre end 10, skal cellefarven ændres til rød. Hvis celleværdien overstiger 10, bør den blive grøn. Brug følgende kode til dette formål:

Sub loop_w_if()

Dim c Som Rækkevidde

For hver c i ark("Sheet4").Rækkevidde("A1:A20")

Hvisc.Værdi < 10 Derefter

c. Indre. ColorIndex = 3

Andet: c. Indre. ColorIndex = 4

EndeHvis

Næste c

Ende Sub

Sådan ser outputtet ud:

Brug af loops i Excel VBA

Excel VBA er ikke begrænset til kun for hver sløjfe. Der er en række nyttige loops, som lader dig udføre forskellige funktioner med lethed. Byd ad på hverdagsagtige, manuelle opgaver, da VBA's loops som for loop, gør mens og gør indtil loops træder ind for at gøre dit liv lettere.