För nästa loop i Excel VBA - En nybörjarguide med exempel

Innehållsförteckning

I VBA används looping när du behöver utföra samma uppgift flera gånger tills ett villkor är uppfyllt (eller tills ett villkor är sant).

I den här självstudien lär du dig hur du använder For Next Loop i Excel VBA.

Om du är intresserad av att lära dig VBA på det enkla sättet, kolla in min Online Excel VBA -utbildning.

Använda FOR NEXT Loop i Excel VBA

'For Next' Loop fungerar genom att köra slingan det angivna antalet gånger.

Till exempel, om jag ber dig att lägga till heltal från 1 till 10 manuellt, skulle du lägga till de två första talen, sedan lägga till det tredje numret i resultatet, sedan lägga till det fjärde talet i resultatet, som så …

Är det inte?

Samma logik används i For Next -slingan i VBA.

Du anger hur många gånger du vill att slingan ska köras och anger också vad du vill att koden ska göra varje gång slingan körs.

Här är For Next loop -formatet du måste använda i VBA för att lägga till de första 10 hela talen.

För i = 1 till 10 [lägg till det positiva heltalet i resultatet] Nästa i

Låt oss nu titta på några exempel på hur du använder For Next -slingan.

Exempel 1: Lägga till de första 10 positiva heltalen

Nedan finns koden som kommer att lägga till de första 10 positiva heltalen med en For Next -slinga. Det kommer då att visa en meddelanderuta som visar summan av dessa nummer.

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 den här koden är värdet på Total satt till 0 innan du går in i For Next -slingan.

När den väl kommer in i slingan håller den det totala värdet efter varje slinga. Så efter den första slingan, när räknaren är 1, blir 'Totalt' värde 1, och efter den andra slingan blir det 3 (1+2), och så vidare.

Och slutligen, när slingan slutar och när Total har summan av de första 10 positiva heltalen, visar en MsgBox helt enkelt resultatet i en meddelanderuta.

Klicka här för att ladda ner exempelfilen

Exempel 2: Lägga till de första 5 jämna positiva heltalen

För att summera de första fem jämna positiva heltalen (dvs 2,4,6,8 och 10) behöver du en liknande kod med ett villkor för att bara betrakta jämna tal och ignorera udda tal.

Här är en kod som gö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

Observera att vi startade Count -värdet från 2 och även använde steg 2 i syntaxen För.

Steg 2 skulle berätta för koden att öka "Count" -värdet med 2 varje gång slingan körs. Så räknevärdet börjar från 2 och blir sedan 4, 6, 8 och 10 när slingan inträffar.

OBS: Ett annat sätt att göra detta kan vara att köra slingan från 1 till 10 och i slingan kontrollera om talet är jämnt eller udda. Att använda Step, i det här fallet, är dock ett mer effektivt sätt eftersom det inte kräver att slingan ska köras 10 gånger, utan bara 5 gånger.

Klicka här för att ladda ner exempelfilen.

Exempel 3: Hämta den numeriska delen från en alfanumerisk sträng

'For Next' loop kan också användas för att gå igenom varje tecken i en sträng.

Om du till exempel har en lista med alfanumeriska strängar kan du använda For Next -slingan för att extrahera siffrorna från den (som visas nedan):

Här är en kod som skapar en anpassad funktion i VBA som kan användas som alla andra kalkylbladsfunktioner.

Den extraherar den numeriska delen från den alfanumeriska strängen.

Funktion 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 = Resultatavslutningsfunktion

I den här koden är antalet gånger slingan körs beroende på den alfanumeriska strängens längd (den använder LEN -funktionen för att hitta strängens längd).

Du måste placera den här funktionen i modulkodfönstret, och sedan kan du använda den som alla andra kalkylbladsfunktioner.

Klicka här för att ladda ner exempelfilen.

Exempel 4: Få slumpmässiga nummer i det valda intervallet

Antag att du snabbt vill ange slumptal i de markerade cellerna, här är koden som gör 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 Nästa j Nästa i Avsluta Sub

Detta är ett exempel på kapslad For Next -slinga där en For -loop används inom en For Loop.

Antag att du gör ett urval av 10 rader och 4 kolumner, värdet på i varierar från 1 till 4 och värdet på j varierar från 1 till 10.

När den första For -slingan körs är värdet på i 1. Den flyttas sedan till den andra For -loop som körs 10 gånger (för varje rad).

När den andra For -slingan har körts 10 gånger går den tillbaka till den första For -slingan där nu värdet på i blir 2. Återigen kör nästa For -loop 10 gånger.

Så här fungerar den kapslade For Next -slingan.

Klicka här för att ladda ner exempelfilen.

Du kanske också gillar följande Excel VBA -självstudier:

  • Arbeta med celler och intervall i Excel VBA.
  • Arbeta med kalkylblad i Excel VBA.
  • Arbeta med arbetsböcker med VBA.
  • Använda IF Then Else Statements i VBA.
  • Excel VBA Select Case.
  • Skapa en användardefinierad funktion i Excel.
  • Excel VBA -evenemang - En enkel (och komplett) guide
  • Hur man spelar in ett makro i Excel.
  • Hur man kör ett makro i Excel.
  • Hur man skapar ett tillägg i Excel.
  • Hur man sparar och återanvänder makro med hjälp av Excel Personal Macro Workbook.
  • Användbara Excel -makroexempel för nybörjare.
  • Använda InStr -funktionen i VBA.
wave wave wave wave wave