Excel VBA-slingor

Loops kan betraktas som den mest fungerande komponenten i VBA och kan också betraktas som hjärtat i makron. De hjälper dig vanligtvis att minska antalet rader i din kod och göra arbetet på några minuter vilket kan ta timmar för en människa.

I det dagliga livet kommer en programmerare fram med sådana fall där han måste köra samma uppsättning kod om och om igen. Det kallas looping. Självklart kommer varje gång att köra samma kod att ge ungefär samma resultat med viss bråkändring i variabeln. Looping har en stor uppsättning fördelar, men det viktigaste av allt är automatisering. Det hjälper till att automatisera saker.

Om du inte har använt VBA-skript tidigare kan du bara öppna en Excel-arbetsbok och slå Alt + F11 . Det kommer att öppna ett VBA-projekt.

Låt oss gå djupare inuti.

Anta att vi ville skriva ut 1 till 10 nummer med en enda bild. Vi kan göra det med följande kod.

Koda:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Om du kan komma igenom koden snabbt har jag lagt till Debug.Print en efter en för att skriva ut nummer från 1 till 10. Efter att ha kört koden kan vi se utdata i omedelbart fönster. För att öppna Omedelbart fönster, tryck Ctrl + G var som helst i Excel.

Kör koden med F5-tangenten eller manuellt enligt bilden nedan. Så låt oss kontrollera utgången för den här koden.

Typer av VBA-slingor i Excel

Som programmerare kommer du aldrig att vilja skriva repetitiva rader som håller på att ge samma resultat. Du vill automatisera det. Därför kommer vi att se olika Excel VBA-loopar och hur man använder dem med hjälp av några exempel.

Typ nr 1 - VBA för nästa slinga

För nästa VBA-slinga tillåter oss att gå igenom cellområdet och utföra samma uppgift för varje cell som anges i slingan. Startnummer & slutnummer måste anges här.

koda:

 Sub loop1 () För i = 1 till 10 celler (i, 1) .Värde = i Nästa i End Sub 

Den här koden ger exakt samma utgång som den föregående. Det mest anmärkningsvärda i denna kod är dock minskningen av ett antal rader. Vi har minskat 12-radskoden till bara en kod med 5-linjer.

I den här koden är loop1 namnet på makro. For-loopen startar från i = 1, den skriver ut värdet på i (dvs 1) under excelcellen och vid nästa gång går det igen till början av for-loopen och gör att i = 2 skriver ut värdet på i (dvs. 2) i nästa cell och så vidare tills koden når sitt sista värde, dvs 10. Så snart koden når det sista värdet på i (10), avslutas koden själv på grund av att det inte finns något heltal över 10.

Kör koden med F5-tangenten eller manuellt. Så du kan se utgången enligt nedan.

Typ # 2 - VBA för slinga med framåtsteg

Som ni har sett i det föregående slingexemplet hade jag en ökning i 1 steg. Som standard betraktas stegvärdet som 1 i VBA. Men är det möjligt att sätta ett eget steg? Anta att du bara vill se jämna siffror mellan 1 och 20. Hur kan det göras?

Som allmän matematik antyder, betraktas siffrorna som ligger på avståndet 2 från varandra (från en första jämn nummer 2) som jämna siffror, eller hur?

Vi kommer att tillämpa samma logik. Se koden nedan för din referens.

Koda:

 Sub ForwardStep () För i = 2 till 20 Steg 2-celler (i, 1) .Value = i Next i End Sub 

För de värden som börjar från 2 möjliggör denna slinga att skriva ut 2, 4, 6, 8 … 20 i efterföljande excelceller. Steg 2 har uttryckligen gett så att från och med nummer 2 kommer koden att hoppa till nästa nummer med steg 2 (dvs. 4 kommer att skrivas ut) och så vidare. Denna process kommer att fortsätta tills 20 inträffar i en cell. Så snart 20 inträffar i en cell avslutas slingan automatiskt.

Kör koden med F5-tangenten eller manuellt. Så du kan se utgången enligt nedan.

Typ # 3 - VBA för slinga med bakåtsteg

På samma sätt som för slinga med framåtsteg kan vi använda för slinga med ett bakåtsteg. Till exempel, vad händer om vi ställer vårt bakåtsteg som -2 och kör en for-loop från värdena 20 till 2?

Vi får se hur det fungerar.

koda:

 Sub BackwardStep () För i = 20 till 2 Steg -2 Debug.Print i Next i End Sub 

Efter att ha kört koden kan vi se utdata i omedelbart fönster. För att öppna Omedelbart fönster, tryck Ctrl + G var som helst i Excel.

Eftersom vi har gett en startpunkt för slingan som 20 och slutpunkten som 2 med steg -2, börjar slingan från 20 och i steget -2 fortsätter den till nästa nummer som är -18 och så vidare. Så snart slingan når värdet 2 avslutas den automatiskt och det sista värdet skrivs ut som 2.

Typ 4 - VBA Nested For Loop

Vi kan också häcka theFor-loopen. Det föreslås emellertid inte att göra häckning av samma slinga mer än tre gånger i en kod (Det kan betraktas som felet i logiken).

Se koden nedan för kapslad för slinga.

Koda:

 Sub NestedFor () För i = 1 till 10 För j = 1 till 2 celler (i, j) .Värde = i * j Nästa j Nästa i slutet Sub 

I detta exempel, i i = 1 och j = 1, sätter makro värdet på i * j (1 * 1) i skärningspunkten mellan rad i = 1 och kolumn j = 1 (dvs. cell A1) och går för nästa värde på j (2) hålla i = 1. I skärningspunkten mellan rad i = 1 och kolumn j = 2 (dvs cell B1) matar makro in värdet på I * j (1 * 2). Loop ignorerar nästa värde på j eftersom j endast varierar från 1 till 2 och går till nästa värde på i.

För i = 2 och j = 1 anger makro värdet på i * j (2 * 1) i skärningspunkten mellan andra raden och 1: a kolumnen (dvs. cell A2) och fortsätter. Fram till intervallet i och j.

Kör koden med F5-tangenten eller manuellt enligt bilden nedan. Så du kan se utgången enligt nedan.

Typ # 5 - VBA Do While Loop

Do While loop är en av de mest intressanta slingorna i VBA. Det tillåter dig att kontrollera villkoret och skriva utdata (DO), när ett visst villkor eller uppsättning villkor uppfylls (eller villkoret / ärna är Sanna).

Se koden nedan:

Koda:

 Sub do_whileloop () Dim i som heltal i = 1 Gör medan jag <= 10 celler (i, 1). Värde = i * ii = i + 1 Loop End Sub 

Den här slingan fungerar som nedan:

För värdena på i från 1 (i = 1 initialt) till 10, beräknar det, i * i (dvs kvadratvärde för varje heltal för i) och matar in det under cell 1 till 10. Utgången är inget annat än de kvadratiska värdena för heltal 1 till 10. Titta närmare på Loop under den här koden. Det är obligatoriskt att lägga till det, annars kommer systemet att skjuta ett fel.

Kör koden med F5-tangenten eller manuellt. Så du kan se utgången enligt nedan.

Detta är några av VBA-loopexemplen som jag har försökt ta hand om i den här artikeln. Hoppas att det kommer att vara noggrant för att rensa några begrepp.

Saker att komma ihåg

  • När du använder för loop med ett bakåtsteg, se till att ditt startnummer måste vara större än ditt slutnummer och vice versa.
  • Under Do while loop ska du se till att du använder Loop för att stänga do medan du slutar hela VBA-koden. Annars kastar systemet ett kompilatorfel med felmeddelandet "Do Without Loop".

Du kan ladda ner denna VBA Loops Excel-mall här - VBA Loops Excel-mall

Rekommenderade artiklar

Detta har varit en guide till Excel VBA Loops. Här diskuterade vi typer av Excel VBA-slingor och hur man använder dem tillsammans med några praktiska exempel och nedladdningsbara excelmall. Du kan också gå igenom våra andra föreslagna artiklar–

  1. VBA-funktion i Excel
  2. VBA VLOOKUP-funktion
  3. Kortkommandon i Excel
  4. Excel-procentuell formel

Kategori: