Vill du automatisera repetitiva uppgifter i Excel med VBA? Lär dig hur du använder For Every-loopen för att effektivt manipulera data i dina kalkylblad.

Slingor och VBA går ihop, och av en god anledning också. När du hanterar Microsoft Office-objekt som arbetsböcker, kalkylblad och intervall kan loopar hjälpa dig att växla mellan var och en av dem relativt lätt.

Medan mer eller mindre alla VBA-loopar fungerar bra med objekt, är "för varje"-loop ett av de bästa alternativen för att arbeta med objektsamlingar. Om du är ny på Excel VBA och vill bemästra för varje slinga kan du snabbt lära dig av några av dessa exempel. Här är allt du behöver veta om denna typiska loop.

För varje slingas syntax

Syntaxen för varje loop är ganska lik den vanliga för loop i Excel VBA. Här är syntaxen:

För varje variabelnamn i objektsamling

[påstående]

[påstående]

[påstående]

Nästa variabelnamn

Slingan börjar med nyckelordet "för varje"; du kan använda valfritt variabelnamn, följt av objektsamlingen. Objektet i för varje slinga kan vara celler, intervall, ark och till och med arbetsböcker. Sådan är skönheten med denna loop; det ger dig flexibiliteten att arbeta med olika Excel-samlingar.

instagram viewer

Slingan går igenom varje samlingsvärde och lagrar referensen i det definierade variabelnamnet. Efter exekvering kör VBA de lagrade satserna i slingan och flyttar till nästa objekt i samlingen (den Nästa nyckelord är användbart här). Låt oss förstå kodstrukturen med ett grundläggande exempel.

Hur man använder för varje slinga i Excel VBA

Anta att du vill skriva ut ett nummer i cellerna A1 till A10. Det bästa tillvägagångssättet är att använda för varje slinga med intervallfunktionen och låta koden göra det nödvändiga. Så här kan du göra denna enkla uppgift:

  1. Öppna VBA-kodredigeraren genom att trycka på Alt + F11.
  2. Infoga en modul genom att klicka på Modul alternativ inom Föra in flik.
  3. Skapa en underrutin med kommandot sub() i kodredigerarens modulfönster. Se till att du tilldelar subrutinen ett meningsfullt namn. För det här exemplet kan du använda namnet för_varje_slinga.

Nu när grunderna är ur vägen är det dags att börja skriva koden. Inom underrutinen skriver du in följande kommandon:

Dim cell som räckvidd

För varje cell i Lakan ("Sheet1").Räckvidd("A1:A10")

cell.value = 10

Nästa cell

När koden körs visas c variabel kommer att lagra värdet på A1. Därefter, när den går vidare till satsen i slingan, utvärderar den kommandot och matar in ett värde på 10 i den definierade cellen, dvs cell A1.

Slutligen, när den flyttar till nästa nyckelord, flyttar den till nästa värde, dvs cell A2. Slingan löper tills den når cell A10. Detta är slutresultatet:

Använda slingan med objekt: celler, ark och arbetsböcker

Excel har tre huvudobjekttyper som du arbetar med regelbundet. Dessa är celler, ark och arbetsböcker. Så här kan du använda loopen med alla tre objekttyperna.

Att arbeta med celler och loopar tillsammans

Anta att du vill lägga till ett värde och några formateringsvillkor till ett cellintervall i Sheet1. Som ett första steg måste du definiera villkoren inom loopen, följt av formateringskommandona.

Skriv in följande kod i en subrutin.

Sub for_each_loop()

Dim c Som Räckvidd

För varje c i ark("Sheet1").Räckvidd("A1:A10")

Med c

.Värde = 10

.Font. Färg = vbRöd

.Font. Fet = Sann

.Font. Genomstruken = Sann

SlutetMed

Nästa c

Slutet Sub

De med funktion är användbar när du utför flera funktioner med ett specifikt objekt. Eftersom du vill utföra en serie uppgifter med variabeln c, kan du kombinera dem alla med hjälp av en with..end with function.

Slingan likställer c: s värde med varje cellvärde och matar in värdet som 10. Dessutom ändrar den cellens färg till röd, gör värdet i fetstil och slår igenom det. När den har slutfört alla steg, flyttar den till nästa definierade värde i intervallet.

Använda loopen för att styra ark

I likhet med exemplet ovan kan du använda för varje slinga för att kontrollera ark. Vad sägs om att ändra namnet på Sheet1 till Sheet3 med VBA?

Du kan använda följande kod för att byta namn på ett befintligt kalkylblad i Excel med VBA:

Sub for_each_loop_sheets()

FörVarjeshtIDenna arbetsbok.Lakan

Om sht. Namn = "Sheet1" Sedan

sht. Namn = "Sheet3"

SlutetOm

Nästa sht

Slutet Sub

Koden går igenom varje ark i arbetsboken och kontrollerar namnet på varje ark. Om den stöter på namnet Sheet1 ändras det till Sheet3. Det går vidare genom de återstående arken, om några, i arbetsboken. När kodexekveringen når det sista arket lämnar den loopen och subrutinen.

Bland några andra vanliga användningsområden kan du slå samman flera kalkylblad med VBA och uppdatera innehållet i ett enda ark med loopar.

Växla genom arbetsböcker med loopen

Slutligen kan du använda för varje slinga för att växla mellan olika arbetsböcker och utföra specifika uppgifter. Låt oss demonstrera denna funktion med ett exempel.

Du kan använda VBA-kommandon för att lägga till tre nya arbetsböcker och stänga alla öppna tillsammans. Så här kan du göra det:

Sub loop_wrkbook()

Dim wrkbook som arbetsbok

Arbetsböcker.Lägg till

Arbetsböcker.Lägg till

Arbetsböcker.Lägg till

För varje arbetsbok i arbetsböcker

arbetsbok.Stänga

Nästa arbetsbok

Slutet Sub

Ovanstående kod kommer också att stänga din makroarbetsbok; se till att du har sparat dina koder innan du kör den här koden.

Eftersom loopar har flera användningsområden kan du också konsolidera data från flera arbetsböcker till en enda arbetsbok.

Använda ett kapslat IF-uttalande med loopen

Som exemplet ovan kan du använda en IF-sats i slingan för att kontrollera specifika förhållanden. Låt oss ändra cellens bakgrundsfärg baserat på cellens värden.

Det finns några slumpmässiga tal i cellerna A1:A20. Du kan skriva en slinga för att gå igenom varje given cell i området; om cellens värde är mindre än 10 bör cellfärgen ändras till röd. Om cellvärdet överstiger 10 ska det bli grönt. Använd följande kod för detta ändamål:

Sub loop_w_if()

Dim c Som Räckvidd

För varje c i ark("Sheet4").Räckvidd("A1:A20")

Omc.Värde < 10 Sedan

c. Interiör. ColorIndex = 3

Annan:c. Interiör. ColorIndex = 4

SlutetOm

Nästa c

Slutet Sub

Så här ser utgången ut:

Använda loopar i Excel VBA

Excel VBA är inte begränsad till bara för varje slinga. Det finns en mängd användbara slingor som låter dig utföra olika funktioner med lätthet. Bjud på vardagliga, manuella uppgifter, eftersom VBA: s loopar som for loop, gör medan och gör tills loopar kliver in för att göra ditt liv enklare.