För nästa vba excel gå till nästa. Loop uttalanden i VBA. Projekt "Inkomst på insättning"

Det finns situationer när ett VBA-program krävs för att utföra samma uppsättning åtgärder flera gånger i rad (det vill säga upprepa samma kodblock flera gånger). Detta kan göras med VBA-loopar.

För Loop Statement i Visual Basic

Loop statement struktur För i Visual Basic kan organiseras i en av två former: som en loop För nästa eller som en cykel För varje.

Cykla "För...Nästa"

Cykel För nästa använder en variabel som sekventiellt tar värden från ett givet intervall. Med varje förändring av variabelns värde utförs de åtgärder som finns i slingans kropp. Detta är lätt att förstå från ett enkelt exempel:

För i = 1 Till 10 Totalt = Totalt + iArray(i) Nästa i

I denna enkla slinga För nästa variabel används i, som sekventiellt tar värdena 1, 2, 3, ... 10, och för vart och ett av dessa värden exekveras VBA-koden inuti slingan. Således summerar denna loop elementen i arrayen iArray i en variabel Total.

I exemplet ovan specificeras inte loopinkrementsteget, så att inkrementera variabeln i Från 1 till 10 är standardinställningen inkrement 1 . Men i vissa fall är det nödvändigt att använda olika inkrementvärden för slingan. Detta kan göras med hjälp av nyckelordet Steg, som visas i följande enkla exempel.

För d = 0 Till 10 Steg 0.1 dTotal = dTotal + d Nästa d

Eftersom inkrementsteget i exemplet ovan är satt till 0.1 , sedan variabeln dTotalt för varje upprepning av cykeln tar värdena 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0.

För att bestämma loopsteget i VBA kan du använda ett negativt värde, till exempel så här:

För i = 10 Till 1 Steg -1 iArray(i) = i Nästa i

Här är steget steg -1 , alltså variabeln i med varje upprepning av cykeln antar den värdena 10, 9, 8, ... 1.

För varje slinga

Cykel För varje ser ut som en cykel För nästa, men istället för att gå igenom sekvensen av värden för räknarvariabeln För varje utför en uppsättning åtgärder för varje objekt i en specificerad grupp av objekt. I följande exempel använder du en loop För varje Listar alla ark i den aktuella Excel-arbetsboken:

Dim wSheet Som kalkylblad för varje wSheet i kalkylblad MsgBox "Sheet Found: " & wSheet.Name Nästa wSheet

Avsluta för slingavbrottsoperatör

Operatör Avsluta för används för att avbryta cykeln. Så snart denna sats påträffas i koden, avslutar programmet exekveringen av slingan och fortsätter att exekvera satserna som finns i koden omedelbart efter denna slinga. Detta kan till exempel användas för att söka efter ett specifikt värde i en array. För att göra detta, använd en slinga för att titta igenom varje element i arrayen. När det nödvändiga elementet har hittats finns det ingen anledning att titta igenom resten - cykeln avbryts.

Operatörsapplikation Avsluta för visas i följande exempel. Här går slingan genom 100 arrayposter och jämför var och en med värdet på variabeln dVal. Om en matchning hittas avbryts slingan:

För i = 1 Till 100 Om dValues(i) = dVal Then IndexVal = i Exit For End If Next i

Gör medan loop i Visual Basic

Cykel Göra medan exekverar ett kodblock så länge som ett givet villkor är uppfyllt. Följande är ett exempel på proceduren Sub, i vilken, med hjälp av en slinga Göra medan Fibonacci-tal som inte överstiger 1000 visas sekventiellt:

"Subproceduren skriver ut Fibonacci-tal som inte överstiger 1000 Sub Fibonacci() Dim i As Integer "en räknare för att indikera positionen för ett element i sekvensen Dim iFib As Integer "lagrar det aktuella värdet för sekvensen Dim iFib_Next As Integer "lagrar nästa värde i sekvensen Dim iStep As Integer "lagrar storleken på nästa inkrement "initiera variablerna i och iFib_Next i = 1 iFib_Next = 0 "Do While-slingan kommer att exekveras tills värdet på det "aktuella Fibonacci-talet överstiger 1000 Do Medan iFib_Next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

I det angivna exemplet är villkoret iFib_Nästa< 1000 kontrolleras i början av cykeln. Därför, om det första värdet iFib_Nästa Om det var fler än 1000, skulle loopen inte exekveras ens en gång.

Ett annat sätt att implementera en loop Göra medan– placera villkoret inte i början, utan i slutet av slingan. I det här fallet kommer loopen att exekveras minst en gång, oavsett om villkoret är sant.

Schematiskt en sådan cykel Göra medan med tillståndet som kontrolleras i slutet kommer det att se ut så här:

Gör... Loop medan iFib_Next< 1000

Gör tills loop i Visual Basic

Cykel Gör tills mycket lik en cykel Göra medan: Kodblocket i slingans kropp exekveras om och om igen tills det angivna villkoret är uppfyllt (resultatet av det villkorliga uttrycket är Sann). I följande procedur Sub med hjälp av en slinga Gör tills extraherar värden från alla celler i en kolumn A kalkylblad tills en tom cell påträffas i kolumnen:

IRow = 1 Do Until IsEmpty(Cells(iRow, 1)) "Värdet för den aktuella cellen lagras i dCellValues-arrayen dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

I exemplet ovan är villkoret IsEmpty(Cells(iRow, 1)) ligger i början av strukturen Gör tills, därför kommer slingan att exekveras minst en gång om den första cellen som tas inte är tom.

Men som visades i loop-exemplen Göra medan, i vissa situationer vill du att loopen ska köras minst en gång, oavsett det initiala resultatet av det villkorliga uttrycket. I det här fallet bör det villkorliga uttrycket placeras i slutet av slingan, så här:

Gör ... Loop Till IsEmpty(Cells(iRow, 1))

Loop uttalanden

I VBA Det finns två huvudtyper av loopar: loopar med en räknare (parametrisk) och loopar med ett villkor (iterativ).

Räknarslingor används i de fall det är nödvändigt att utföra vissa åtgärder ett visst antal gånger.

Villkorsslingor används när vissa åtgärder i ett program måste upprepas tills ett visst villkor är uppfyllt.

Slingor med parameter För nästa

Cykelstruktur:

För Cycle_parameter = Initial_Value Till Final_Value

[Steg Steg]

Operatörer

[Avsluta för]

Nästa [Cycle_parameter]

var för nyckelord VBA (från), som indikerar början av cykeln;

loop_parameter variabel definierad som en loopräknare;

Initial_Value ett tal som anger startvärdet för loopparametern;

Till nyckelord VBA (före), delning

Initial_Value och Final_Knowledge;

Final_Value ett tal som anger värdet på loopparametern,

Vid vilken cykeln slutar;

Steg nyckelord VBA (steg) används för

Slingstegsspecifikationer, valfritt argument;

Steg ett nummer som anger cykelsteget, dvs. värdet med vilket

Ökar (eller minskar) parametervärdet

Cykla vid varje steg. Detta nummer kan vara

Negativ;

Avsluta för operatör av tidigt utträde från slingan (valfritt);

Nästa nyckelord VBA (nästa) betecknar

Slutet på cykeln.

Cykelarbete:

Steg 1 Först bestäms loopparametern och de initiala och slutliga värdena för denna variabel beräknas och lagras.

Steg 2 Slingparametern tilldelas ett initialt värde.

Steg 3 Startvärdet för loopparametern jämförs med slutvärdet.

Om loop-parametern är större än det slutliga värdet, lämnar programmet omedelbart loopen och hoppar till kodraden som följer loopen.

Steg 4 Slingans kropp exekveras.

Steg 5 Efter exekvering av slingans kropp tilldelas nästa värde till loopparametern. Gå till steg 3.

Notera.

1. Om ett nyckelord används Steg , då ändras loopparametern enligt numret som anges efter detta ord. Om ordet Steg är frånvarande, är stegvärdet lika med ett.

Exempel 1.

För I = 0 Till 10 Steg 2 (Värde I kommer att öka med 2)

2. För...Nästa slinga kan avslutas i förtid när något tillstånd uppnås. För att göra detta, på rätt plats i slingan måste du placera operatören Avsluta för.

Exempel 2.

Dim S Som heltal

Dim j Som heltal

S=2

För j = 1 till 10

S = S + j

Om S > 6 Då

Avsluta för (Avsluta slingan om värdet S > 6)

Avsluta om

Nästa j

MsgBox(S)

Villkorliga loopar (Iterativ)

Om någon åtgärd (flera handlingar) behöver utföras många gånger, men det inte är känt i förväg hur många gånger och detta beror på något tillstånd, så ska du använda en loop med en precondition eller en postcondition.

I VBA det finns två huvudslingor GÖR...LOOP med ett villkor som anges av ett nyckelord Medan , och med villkoret som anges av nyckelordet Fram tills . Båda kan vara med precondition eller postcondition.

Syntax:

var gör nyckelord (göra);

Medan nyckelord (ännu);

Fram tills nyckelord (tills);

Slinga ett nyckelord som indikerar slutet av cykeln;

<условие>ett logiskt uttryck vars sanning kontrolleras

I början av varje utförande av slingkroppen;

<тело_цикла>godtycklig sekvens av operatörer;

Gör...Medan byggandet lyder: gör medan villkoret är uppfyllt. I design Gör...Medan För

The Do...Tills konstruktion lyder: gör tills villkoret är uppfyllt. I design Gör...Tills För att öka steget bör du skriva en speciell operatör, eftersom i den, till skillnad från designen För , detta görs inte automatiskt.

Skick skrivet efter nyckelordet Fram tills , kontrolleras i slutet av varje iteration (efter att loopkroppen exekveras). Observera att det inte fungerar exakt på samma sätt som i slingan Medan . Om villkoret är sant ( Sann ), sedan slutar slingan. Om villkoret inte är uppfyllt (är falskt Falsk ), sedan exekveras slingans kropp igen.

Exempel 1.

Formulering av problemet. Beräkna summan av en ändlig serie med hjälp av en subrutinprocedur.

Uppgiftsexekveringsteknik:

1. Inledande data: i  Z

Resultat: S  R .

2.Skriv in följande anpassade procedur i standardprojektmodulen med en loop med en förutsättning Medan:

Sub summa()

Dim S Som heltal

Dim i As Integer

S = 0

i = 1

Gör medan jag<= 10

S = S + i^2

i = i + 1

Slinga

MsgBox(S)

Avsluta Sub

3. Skriv in följande anpassade procedur i standardprojektmodulen med en loop med en förutsättning Fram tills:

Sub summa()

Dim S Som heltal

Dim i As Integer

S = 0

i = 1

Gör tills i > 10

S = S + i^2

i = i + 1

Slinga

MsgBox(S)

Avsluta Sub

4 Skriv in följande anpassade procedur i standardprojektmodulen med en loop med ett postcondition Medan:

Sub summa()

Dim S Som heltal

Dim i As Integer

S = 0

i = 1

S = S + i^2

i = i + 1

Slinga medan jag<= 10

MsgBox(S)

Avsluta Sub

5 Skriv in följande anpassade procedur i standardprojektmodulen med en loop med ett postcondition Fram tills:

Sub summa()

Dim S Som heltal

Dim i As Integer

S = 0

i = 1

S = S + i^2

i = i + 1

Slinga tills i > 10

MsgBox(S)

Avsluta Sub

Det kan finnas en situation där du behöver köra ett kodblock flera gånger. I allmänhet exekveras satser sekventiellt: den första satsen i en funktion exekveras först, sedan den andra osv.

Programmeringsspråk tillhandahåller olika kontrollstrukturer som möjliggör mer komplexa exekveringsvägar.

Loopsatsen låter oss köra en sats eller grupp av satser flera gånger. Nedan är en allmän bild av en loop-sats i VBA.

VBA tillhandahåller följande looptyper för att hantera loopingkrav. Klicka på följande länkar för att kontrollera deras detaljer.

för slinga

En for loop är en upprepningskontrollstruktur som tillåter en utvecklare att effektivt skriva en loop som behöver exekveras ett visst antal gånger.

Syntax

Nedan är syntaxen för för loop i VBA.

För räknare = start Till slut .... .... Nästa

Flödesdiagram

Nedan är kontrollflödet i loop-läge -

  • Det första steget är genomfört. Detta steg låter dig initiera valfri loopkontrollvariabler och öka stegräknarens variabel.
  • För det andra utvärderas tillståndet. Om det är sant, exekveras slingans kropp. Om det är falskt exekveras inte loopens brödtext och kontrollflödet flyttas till nästa programsats omedelbart efter For-loopen.
  • Efter att For-loopen har körts går kontrollflödet vidare till nästa programsats. Denna sats låter dig uppdatera alla loopkontrollvariabler. Den uppdateras baserat på stegräknarens värde.
  • Tillståndet utvärderas nu igen. Om sant, exekveras loopen och processen upprepas (loopkropp, sedan steg inkrement, sedan villkor igen). När villkoret blir falskt avslutas For-loopen.

exempel

Lägg till en knapp och lägg till följande funktion.

Privat Sub Constant_demo_Click() Dim a Som heltal a = 10 För i = 0 Till ett steg 2 MsgBox "Värdet är i är: " & i Next End Sub

När ovanstående kod kompileras och exekveras, producerar den följande utdata.

Värdet är i är: 0
Värdet är i är: 2
Värdet är i är: 4
Värdet är i är: 6
Värdet är i är: 8
Värdet är i är: 10

Kör en sekvens av satser flera gånger och förkortar koden som styr loopvariabeln.

för ... slinga

Varje loop används för att exekvera en sats eller grupp av satser på varje element i en array eller samling.

För varje slinga liknar For Loop; loopen exekveras dock för varje element i arrayen eller gruppen. Därför kommer stegräknaren inte att existera i denna typ av loop. Det används huvudsakligen med arrayer eller används i objektsammanhang filsystem att arbeta rekursivt.

Syntax

Nedan är syntaxen för For Every loop i VBA.

För varje element i grupp....Nästa

exempel

Private Sub Constant_demo_Click() "frukter är en array frukter = Array("äpple", "orange", "körsbär") Dim fruktnamn Som Variant "itererar med För varje slinga. För varje objekt i frukter fruktnamn = fruktnamn & föremål & Chr(10) Nästa MsgBox fruktnamn End Sub

När ovanstående kod exekveras, skriver den ut alla namn på frukterna med ett element på varje rad.

äpple
orange
körsbär

Detta utförs om det finns minst ett element i gruppen och upprepas för varje element i gruppen.

medan..wend loop

In a While While ... Wend loop, om villkoret är True, exekveras alla satser tills nyckelordet Wend påträffas.

Om villkoret är falskt slutar loopen och kontrollen flyttas till nästa sats efter nyckelordet Wend.

Syntax

Nedan är syntaxen för While..Wend loop i VBA.

Medan tillstånd (er) ... Wend

Flödesdiagram

exempel

Privat Sub Constant_demo_Click() Dim räknare: Räknare = 10 medan räknare< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

När ovanstående kod exekveras kommer den att mata ut följande i meddelandefältet.

Räknarens nuvarande värde är: 11
Räknarens nuvarande värde är: 12
Räknarens nuvarande värde är: 13
Räknarens nuvarande värde är: 14
Räknarens nuvarande värde är: 15

Detta kontrollerar tillståndet innan loopkroppen exekveras.

gör.. medan loop

En Do ... while loop används när vi vill upprepa en uppsättning påståenden medan ett villkor är sant. Tillståndet kan kontrolleras i början av slingan eller i slutet av slingan.

Syntax

Nedan är syntaxen för Do...While loop i VBA.

Gör medan skick......Loop

Flödesdiagram

exempel

Följande exempel använder en Do ... while-loop för att kontrollera tillståndet i början av loopen. Satserna inuti loopen exekveras endast om villkoret blir True.

Privat Sub Constant_demo_Click() Gör medan i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

Värdet på i är: 1
Värdet på i är: 2
Värdet på i är: 3
Värdet på i är: 4
Värdet på i är: 5

Alternativ syntax

Det finns också en alternativ syntax för Do ... while loop som kontrollerar tillståndet i slutet av loopen. Huvudskillnaden mellan dessa två syntaxer förklaras i följande exempel.

Gör ... ... Loop While-tillstånd

exempel

Följande exempel använder en Do ... while-loop för att kontrollera status i slutet av loopen. Påståenden inom en loop exekveras minst en gång, även om villkoret är falskt.

Private Sub Constant_demo_Click() i = 10 Gör i = i + 1 MsgBox "Värdet på i är: " & i Loop While i< 3 "Condition is false.Hence loop is executed once. End Sub

När ovanstående kod exekveras, skriver den ut följande utdata i en meddelanderuta.

Värdet på i är: 11

Do..While-satserna kommer att köras så länge villkoret är sant. (dvs.) Slingan måste upprepas tills villkoret är falskt.

gör..intil loop

En do ... intil loop kommer inte att användas när vi vill upprepa en uppsättning satser medan villkoret är falskt. Tillståndet kan kontrolleras i början av slingan eller i slutet av slingan.

Syntax

Nedan är syntaxen för Do..Until loop i VBA.

Gör tills skick ... ... Slinga

Flödesdiagram

exempel

Följande exempel använder Do... Before Loop för att testa ett villkor i början av loopen. Satserna inuti loopen exekveras endast om villkoret är falskt. Den lämnar slingan när villkoret blir sant.

Private Sub Constant_demo_Click() i = 10 Gör tills i>15 "Villståndet är falskt. Därför kommer loopen att exekveras i = i + 1 msgbox ("Värdet på i är: " & i) Loop End Sub

När ovanstående kod exekveras, skriver den ut följande utdata i en meddelanderuta.

Värdet på i är: 11
Värdet på i är: 12
Värdet på i är: 13
Värdet på i är: 14
Värdet på i är: 15
Värdet på i är: 16

Alternativ syntax

Det finns också en alternativ syntax, Do... Before Loop, som testar villkoret i slutet av loopen. Huvudskillnaden mellan dessa två syntaxer förklaras av följande exempel.

Gör ... ... Loop Tills skick

Flödesdiagram

exempel

Följande exempel använder Do...Before a loop för att testa ett villkor i slutet av loopen. Påståenden inom en loop exekveras minst en gång, även om villkoret är True.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "Värdet på i är: " & i Loop Till i more15 "Villkor är sant. Därför körs loopen en gång. End Sub

När ovanstående kod exekveras, skriver den ut följande utdata i en meddelanderuta.

Värdet på i är: 11

Do..Until-satserna kommer att köras så länge villkoret är falskt. (dvs.) Slingan måste upprepas tills villkoret är sant.

Cycle Control Records

Slingkontrollsatser ändrar exekveringen från sin normala sekvens. När exekveringen lämnar räckvidden exekveras inte alla andra loop-satser.

Kontrollutlåtande och beskrivning

Operatörens utgång

Exit for används när vi vill avsluta For Loop baserat på vissa kriterier. När Exit For exekveras flyttas kontrollen till nästa programsats omedelbart efter For Loop.

Syntax

Nedan är syntaxen Exit For Statement i VBA.

Flödesdiagram

exempel

Följande exempel använder Exit For. Om räknaren når 4, slutar For Loop och kontrollen flyttas till nästa programsats omedelbart efter For Loop.

Privat Sub Constant_demo_Click() Dim a Som heltal a = 10 För i = 0 Till ett steg 2 "i är räknarvariabeln och den ökas med 2 MsgBox ("Värdet är i är: " & i) Om i = 4 Då i = i * 10 "Detta exekveras endast om i=4 MsgBox ("Värdet är i är: " & i) Exit For "Exited when i=4 End If Next End Sub

När ovanstående kod körs skrivs följande ut i meddelanderutan.

Värdet är i är: 0
Värdet är i är: 2
Värdet är i är: 4
Värdet är i är: 40

Avslutar en For loop-sats och överför exekvering till satsen omedelbart efter loopen

Avsluta Do

Exit Do Statement används när vi vill avsluta Do Loops baserat på vissa kriterier. Den kan användas i både Do Do...While och Do...Before loopar.

När Exit Do exekveras, övergår kontrollen till nästa programsats omedelbart efter Do-loopen.

Syntax

Nedan är syntaxen för Exit Do-satsen i VBA.

exempel

Följande exempel använder Exit Do. Om räknaren når 10, avslutas Do-utgångsraden och kontrollen övergår till nästa programsats omedelbart efter For Loop.

Privat Sub Constant_demo_Click() i = 0 Gör medan i<= 100 If i >10 Avsluta sedan Gör " Loop Exits if i>10 End If MsgBox ("Värdet på i är: " & i) i = i + 2 Loop End Sub

När ovanstående kod exekveras, skriver den ut följande utdata i en meddelanderuta.

Värdet på i är: 0
Värdet på i är: 2
Värdet på i är: 4
Värdet på i är: 6
Värdet på i är: 8
Värdet på i är: 10

Slutför en Do While-sats och överför exekvering till satsen omedelbart efter loopen

Laborationer på grunderna i programmering

2.1. Tabellering av funktioner representerade analytiskt
och konvergerar i närheten

Målet med arbetet

· Konsolidering av teoretiska kunskaper om grunderna för att organisera förgrenings- och cykliska strukturer.

· Förvärv av praktiska programmeringsfärdigheter med hjälp av förgrenings- och cykliska strukturer i Visual Basic-systemet.

Det finns tre typer av loop-satser i VB:

räknecykel: För...Till...Nästa

loopar med förutsättningar: Do While...Loop, Do Until...Loop, While...WEnd

· slingor med eftervillkor: Do...Loop While, Do...Loop Tills.

Räkneslinga – låter dig gå igenom en uppsättning satser ett visst antal gånger. Dess syntax är följande:

För disken = Start Till slutet

[operatörer]

[operatörer]

Nästa [ disken]

Parameter diskenär en numerisk variabel (heltal, reell typ eller Datum, Variant, Valutatyp) som automatiskt inkrementeras efter varje upprepning. Ursprungligt värde disken lika med parameter Start, och den sista parametern - slutet. Om det inte anges anses steget vara lika med 1; stegvärdet kan ändras. Det kan vara ett positivt eller negativt tal.

Det finns fyra syntaktiska konstruktioner av Do....loopen:

Satserna mellan nyckelorden Do... Loop exekveras ett specificerat antal gånger beroende på villkoret. Till exempel, i följande programfragment, när C = 100, kommer villkoret att vara uppfyllt och slingan kommer att gå in. Inuti slingan anropas proceduren och värdet på C minskas med 1. Därefter kontrolleras villkoret (C > 0) igen och slingoperatorerna exekveras igen (de kommer att exekveras 100 gånger totalt), tills C = 0. När villkoret C > 0 blir falskt och slingan stannar.

Gör medan C > 0

Samma programfragment exekveras med en loop med en förutsättning i syntax 2:

I det här fallet löper slingan så länge villkoret är falskt, till skillnad från det tidigare fallet, det vill säga den fortsätter innan uppfyllelse av villkor C = 0.

Loop-satserna 3 och 4 är mycket lika i syntax som de två första förutom att villkoret Inte beräknas tills loopen exekveras minst en gång.

Dessa loopsyntaxer kan använda Exit For och Exit Do ovillkorliga loop exit-satser för att överföra kontrollen till operatören bakom loopen. Till exempel, i följande programfragment, om det initiala värdet för C är >50, kommer slingan omedelbart att stoppa.



Gör tills C<= 0

MsgBox "Start" värdet är större än acceptabelt", "Inmatningsfel"

While...Wend-loopen användes i tidiga versioner av Visual Basic. Dess syntax är följande:

Medan<условие>

<Операторы>

Till skillnad från Do..Loop-loopen har While ..Wend-loopen inte ett andra alternativ där villkoret kontrolleras i slutet av loopen. Dessutom finns det ingen loop exit-sats för det, som Exit Do.

VBA. Organisering av cykler.

Loop-satser används för att upprepa en åtgärd eller grupp av åtgärder ett visst antal gånger. Antalet repetitioner (loopiterationer) kan förutbestäms eller beräknas.

VBA stöder två typer av looping-konstruktioner:

  1. Slingor med ett fast antal repetitioner ( motverkade slingor).
  2. Slingor med ett obegränsat antal repetitioner ( villkorliga loopar).

För alla typer av cykler används konceptetöglekropp , som definierar ett block av satser inneslutna mellan start- och slutsatserna för loopen. Varje upprepning av utförandet av uttalandena i slingans kropp anropas iteration

Fasta cykler

VBA tillhandahåller två kontrollstrukturer för att organisera en fast loop: For ... Next (loop med en räknare) och For Every ... Next (loop med en uppräkning).

Operatör för...Nästa Detta är en typisk räknarslinga som exekverar ett specificerat antal iterationer. Syntaxen för For...Next-satsen är:

För<счетчик> = <начЗначение>Den där<конЗначение>

<блок операторов>

Nästa [<счетчик>]

Ett exempel på att använda operatorn For...Next.

Lista 1. För … Nästa operatör

' UPPGIFT: Skapa ett program som tar emot två nummer från användaren.

‘ Lägger till alla siffror i intervallet som anges av dessa två siffror, och sedan

' visar den resulterande mängden.

Sub sample7()

Dim i As Integer 'cykelräknare

Dim sStart 'initialt räknarvärde

Dim sEnd 'sluträknarevärde

Dim sSum As Long ’resulterande summa

sStart = InputBox(“Ange den första siffran:”)

sEnd = InputBox(”Ange det andra numret:”)

sSum = 0

För i = CInt(sStart) Till CInt(sEnd)

sSum = sSum + i

Nästa i

MsgBox "Summan av siffrorna från " & sStart & " till " & sEnd & " är: " & sSum

Avsluta Sub

Loop statement för varje...Nästatillhör kategorin objekttypsoperatorer, dvs. gäller i första hand samlingar objekt, såväl som arrayer . Slingans kropp exekveras ett fast antal gånger, motsvarande antalet element i arrayen eller samlingen. För varje...Nästa uttalandeformat:

För varje<элемент>I<группа> <блок операторов>Nästa [<элемент>]

Villkorsslingor (odefinierade loopar)

Villkorsslingor används när upprepade åtgärder endast behöver utföras under vissa förhållanden. Antalet iterationer är inte definierat och kan i allmänhet vara lika med noll (i synnerhet för loopar med en förutsättning). VBA erbjuder utvecklare flera kontrollstrukturer för att organisera villkorliga loopar:

  • Fyra typer av Do..Loops, som skiljer sig i vilken typ av tillstånd som kontrolleras och den tid det tar att slutföra denna kontroll.
  • Kontinuerlig slinga Medan... Vänd.

Do While...-slingan är typisk slinga med förutsättning. Villkoret kontrolleras innan loopens kropp exekveras. Cykeln fortsätter sitt arbete tills den<условие>exekveras (dvs. har värdet True). Eftersom kontrollen utförs i början kan slingans body aldrig utföras. Gör medan... Slingformat:

Göra medan<условие>

<блок операторов>

Slinga

Lista 2. Gör medan... Loop

' UPPGIFT: Skapa ett program som kräver användarinmatning

"en godtycklig talföljd. Ingången måste avslutas

’ först efter att summan av de angivna udda talen överstiger 100.

Sub sample8()

Dim OddSum Som heltal ’summan av udda tal

Dim OddStr As String 'en sträng med udda nummer

Dim Num 'för att acceptera inmatade nummer

OddStr = "" 'utgångsstränginitiering

OddSum = 0 ‘initiera OddSum

Gör medan OddSum< 100 ‘начало цикла

Num = InputBox("Ange ett nummer: ")

If (Num Mod 2)<>0 Sedan 'paritetskontroll

OddSum = OddSum + Num ’ackumulering av summan av udda tal

OddStr = OddStr & Num & ” ”

Avsluta om

Slinga

"skriv ut en sträng med udda nummer

MsgBox prompt:=”Uda nummer: ” & OddStr

Avsluta Sub

Gör ... Loop While Statementdesignad för organisationslinga med postcondition. Villkoret kontrolleras efter att slingans kropp har exekverats minst en gång. Cykeln fortsätter sitt arbete fram till<условие>förblir sant. Gör... Slinga medan Format:

Do<блок операторов>Loop While<условие>

Notering 3. Slinga med postcondition

' UPPGIFT: Skapa ett program för spelet "Gissa numret." Programmet måste vara slumpmässigt

' sätt att generera ett tal i intervallet från 1 till 1000, måste användaren

’ gissa detta nummer. Programmet visar ett tips för varje inmatat nummer

' "mer eller mindre".

Sub sample8()

Randomize Timer 'initiera slumptalsgeneratorn

Dim msg As String ' meddelandesträng

Dim SecretNumber As Long, User Number Som Variant

Börja: SecretNumber = Round(Rnd * 1000) ' datorgenererat nummer

UserNumber = Tomt nummer angett av användaren

Spela

Välj Case True

Case IsEmpty(UserNumber): msg = "Ange ett nummer"

Case UserNumber > SecretNumber: msg = "För många!"

Case User Number< SecretNumber: msg = “Слишком мало!”

Avsluta Välj

UserNumber = InputBox(prompt:=msg, Titel:=”Gissa numret”)

Slinga medan användarnummer<>Hemligt nummer

' undersökning

If MsgBox(“Spela igen?”, vbYesNo + vbQuestion, “Du gissade rätt!”) = vbYes Then

Gå Till Börja

Avsluta om

Avsluta Sub

Slingor Gör tills... Slingor och gör... Slingor tills är inversioner av de tidigare diskuterade villkorsslingorna. I allmänhet fungerar de på liknande sätt, förutom att slingans kropp exekveras om villkoret är falskt (dvs.<условие>=Falskt). Gör tills... Slingformat:

Gör tills<условие> <блок операторов>Slinga

Gör... Loop Till loop format:

<блок операторов>

Slinga tills<условие>

Praktisk uppgift:Skriv om programmen i listorna 10 och 11 med inverterade loop-satser.

Loop While...Wend gäller även villkorsslingor. Denna operatöröverensstämmer helt med Do While... Loop-strukturen. While...Wend loop format:

Medan<условие>

<блок операторов>

Wend

En utmärkande egenskap hos denna operatör är omöjligheten påtvingad uppsägning(avbryter) loopens kropp (Exit Do-operatorn fungerar inte i While ... Wend-loopen).

Att avbryta en cykel

För att avsluta en iteration tidigt och lämna loopen används Exit-satsen. Denna operatör är tillämplig i alla cykliska strukturer utom While... Wend. Den allmänna syntaxen för att använda Exit för att bryta en loop är:

<начало_цикла>

[<блок операторов1>]

Avsluta (för | Gör)

[<блок операторов2>]

<конец_цикла>

När Exit-satsen exekveras avbryts loopen och kontrollen överförs till satsen efter satsen<конец_цикла>. Det kan finnas flera Exit-satser i brödtexten i en loop.

Lista 4. Tvinga utgång från slingan

Sub sample9()

För i = 1 Till 10000000

Om i = 10, avsluta för ' lämna slingan när räknaren når 10

Nästa




Topp