For neste vba excel gå til neste. Løkkeuttalelser i VBA. Prosjekt "Inntekt på innskudd"

Det er situasjoner når et VBA-program kreves for å utføre det samme settet med handlinger flere ganger på rad (det vil si gjenta den samme kodeblokken flere ganger). Dette kan gjøres ved hjelp av VBA-løkker.

For Loop Statement i Visual Basic

Løkkeutsagnsstruktur Til i Visual Basic kan organiseres i en av to former: som en loop For ... Neste eller som en syklus For hver.

Syklus "For...Next"

Syklus For ... Neste bruker en variabel som sekvensielt tar verdier fra et gitt område. Med hver endring i verdien av variabelen, utføres handlingene i løkkens kropp. Dette er lett å forstå fra et enkelt eksempel:

For i = 1 til 10 Totalt = Totalt + iArray(i) Neste i

I denne enkle løkken For ... Neste variabel brukes Jeg, som sekvensielt tar verdiene 1, 2, 3, ... 10, og for hver av disse verdiene kjøres VBA-koden inne i løkken. Dermed summerer denne løkken elementene i matrisen iArray i en variabel Total.

I eksemplet ovenfor er trinnet for løkkeøkning ikke spesifisert, så for å øke variabelen Jeg Fra 1 til 10 er standard inkrement 1 . I noen tilfeller er det imidlertid nødvendig å bruke forskjellige inkrementverdier for løkken. Dette kan gjøres ved å bruke nøkkelordet Steg, som vist i følgende enkle eksempel.

For d = 0 Til 10 Trinn 0.1 dTotal = dTotal + d Neste d

Siden i eksemplet ovenfor er inkrementtrinnet satt til 0.1 , deretter variabelen dTotalt for hver repetisjon av syklusen tar verdiene 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0.

For å bestemme løkketrinnet i VBA, kan du bruke en negativ verdi, for eksempel slik:

For i = 10 til 1 trinn -1 iArray(i) = i Neste i

Her er inkrementtrinnet -1 , så variabelen Jeg med hver repetisjon av syklusen får den verdiene 10, 9, 8, ... 1.

For hver sløyfe

Syklus For hver ser ut som en syklus For ... Neste, men i stedet for å gå gjennom sekvensen av verdier for tellervariabelen For hver utfører et sett med handlinger for hvert objekt i en spesifisert gruppe objekter. I følgende eksempel, bruk av en løkke For hver Viser alle ark i gjeldende Excel-arbeidsbok:

Dim wSheet som regneark for hvert wSheet i regneark MsgBox "Ark funnet: " & wSheet.Name Neste wSheet

Avslutt for sløyfeavbrudd operatør

Operatør Avslutt for brukes til å avbryte syklusen. Så snart denne setningen påtreffes i koden, avslutter programmet utførelsen av løkken og fortsetter med å utføre setningene som finnes i koden umiddelbart etter denne løkken. Dette kan for eksempel brukes til å søke etter en bestemt verdi i en matrise. For å gjøre dette, bruk en løkke for å se gjennom hvert element i matrisen. Når det nødvendige elementet er funnet, er det ikke nødvendig å se gjennom resten - syklusen blir avbrutt.

Operatørapplikasjon Avslutt for vist i følgende eksempel. Her går løkken gjennom 100 array-oppføringer og sammenligner hver med verdien til variabelen dVal. Hvis en match blir funnet, avbrytes loopen:

For i = 1 Til 100 Hvis dValues(i) = dVal Then IndexVal = i Exit For End If Next i

Gjør mens du looper i Visual Basic

Syklus Gjør mens utfører en kodeblokk så lenge en gitt betingelse er oppfylt. Følgende er et eksempel på fremgangsmåten Under, der, ved hjelp av en løkke Gjør mens Fibonacci-tall som ikke overstiger 1000 vises sekvensielt:

"Sub-prosedyren skriver ut Fibonacci-tall som ikke overstiger 1000 Sub Fibonacci() Dim i As Integer "en teller for å indikere posisjonen til et element i sekvensen Dim iFib As Integer "lagrer gjeldende verdi av sekvensen Dim iFib_Next As Integer "lagrer neste verdi av sekvensen Dim iStep As Integer "lagrer størrelsen på neste inkrement "initialiser variablene i og iFib_Next i = 1 iFib_Next = 0 "Do While-løkken vil bli utført til verdien av det "gjeldende Fibonacci-tallet overstiger 1000 Do Mens 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 eksemplet gitt, betingelsen iFib_Next< 1000 sjekket i begynnelsen av syklusen. Derfor, hvis den første verdien iFib_Next Hvis det var mer enn 1000, ville ikke loopen blitt utført en gang.

En annen måte å implementere en loop Gjør mens– plasser betingelsen ikke i begynnelsen, men på slutten av løkken. I dette tilfellet vil løkken bli utført minst én gang, uavhengig av om betingelsen er sann.

Skjematisk en slik syklus Gjør mens med tilstanden som kontrolleres på slutten, vil det se slik ut:

Gjør...Loop mens iFib_Next< 1000

Gjør til Loop i Visual Basic

Syklus Gjør til veldig lik en syklus Gjør mens: Kodeblokken i løkkens kropp utføres om og om igjen til den spesifiserte betingelsen er oppfylt (resultatet av det betingede uttrykket er ekte). I følgende prosedyre Under ved hjelp av en løkke Gjør til trekker ut verdier fra alle cellene i en kolonne EN regneark inntil en tom celle oppdages i kolonnen:

IRow = 1 Do Until IsEmpty(Cells(iRow, 1)) "Verdien til gjeldende celle er lagret i dCellValues-arrayen dCellValues(iRow) = Cells(iRow, 1). Verdi iRow = iRow + 1 Loop

I eksemplet ovenfor tilstanden IsEmpty(Cells(iRow, 1)) plassert i begynnelsen av strukturen Gjør til, derfor vil sløyfen bli utført minst én gang hvis den første cellen som tas ikke er tom.

Imidlertid, som det ble vist i løkkeeksemplene Gjør mens, i noen situasjoner vil du at løkken skal kjøres minst én gang, uavhengig av det første resultatet av det betingede uttrykket. I dette tilfellet bør det betingede uttrykket plasseres på slutten av løkken, slik:

Gjør ... Loop Til IsEmpty(Cells(iRow, 1))

Løkkeuttalelser

I VBA Det er to hovedtyper av løkker: løkker med en teller (parametrisk) og løkker med en betingelse (iterativ).

Tellerløkker brukes i tilfeller der det er nødvendig å utføre visse handlinger et visst antall ganger.

Betingede løkker brukes når visse handlinger i et program må gjentas til en viss betingelse er oppfylt.

Løkker med parameter For ... Neste

Syklusstruktur:

Til Syklus_parameter = Initial_Value Til Endelig_verdi

[Trinn trinn]

Operatører

[Avslutt for]

Neste [Syklus_parameter]

hvor For søkeord VBA (fra), som indikerer begynnelsen av syklusen;

loop_parameter variabel definert som en loop teller;

Initial_Value et tall som spesifiserer startverdien til loop-parameteren;

Til nøkkelord VBA (før), dele

Initial_Value og Final_Knowledge;

Final_Value et tall som spesifiserer verdien av loop-parameteren,

Ved hvilken syklusen slutter;

Step nøkkelord VBA (trinn) brukes til

Loop step spesifikasjoner, valgfritt argument;

Trinn et tall som spesifiserer syklustrinnet, dvs. verdien som

Øker (eller reduserer) parameterverdien

Sykle på hvert trinn. Dette tallet kan være

Negativ;

Avslutt for operatør av tidlig utgang fra løkken (valgfritt);

Neste søkeord VBA (neste) angir

Slutt på syklusen.

Syklusarbeid:

Trinn 1 Først bestemmes løkkeparameteren, og start- og sluttverdiene til denne variabelen beregnes og lagres.

Trinn 2 Sløyfeparameteren tildeles en startverdi.

Trinn 3 Startverdien til loop-parameteren sammenlignes med sluttverdien.

Hvis loop-parameteren er større enn den endelige verdien, går programmet umiddelbart ut av loopen og hopper til kodelinjen som følger loopen.

Trinn 4 Broppen til løkken utføres.

Trinn 5 Etter å ha utført hoveddelen av løkken, tildeles neste verdi til løkkeparameteren. Gå til trinn 3.

Merk.

1. Hvis et nøkkelord brukes Steg , så endres loop-parameteren i henhold til tallet spesifisert etter dette ordet. Hvis ordet Steg er fraværende, er trinnverdien lik én.

Eksempel 1.

For I = 0 til 10 trinn 2 (verdi I vil øke med 2)

2. For...Neste sløyfe kan avsluttes tidlig når en hvilken som helst tilstand er nådd. For å gjøre dette, på rett sted i løkken må du plassere operatøren Avslutt for.

Eksempel 2.

Dim S Som heltall

Dim j Som heltall

S=2

For j = 1 til 10

S = S + j

Hvis S > 6 Da

Avslutt for (Gå ut av loopen hvis verdien S > 6)

Slutt om

Neste j

MsgBox(S)

Betingede sløyfer (iterativ)

Hvis en handling (flere handlinger) må utføres mange ganger, men det er ikke kjent på forhånd hvor mange ganger og dette avhenger av en tilstand, så bør du bruke en løkke med en forutsetning eller en postbetingelse.

I VBA det er to hovedløkker GJØR...LOOP med en betingelse angitt av et nøkkelord Samtidig som , og med betingelsen angitt av nøkkelordet Før . Begge kan være med precondition eller postcondition.

Syntaks:

hvor gjør nøkkelord (gjør);

Samtidig som nøkkelord (ennå);

Før nøkkelord (til);

Løkke et nøkkelord som indikerer slutten av syklusen;

<условие>et logisk uttrykk hvis sannhet kontrolleres

Ved begynnelsen av hver utførelse av løkkelegemet;

<тело_цикла>vilkårlig sekvens av operatører;

Gjør...Mens bygging lyder: gjør mens vilkåret er oppfylt. I design Gjør ... Mens For

Do...Til konstruksjonen lyder: gjøre til vilkåret er oppfylt. I design Gjør...Til For å øke trinnet, bør du skrive en spesiell operatør, fordi i den, i motsetning til designet Til , dette gjøres ikke automatisk.

Tilstand skrevet etter nøkkelordet Før , er sjekket på slutten av hver iterasjon (etter at loop-kroppen er utført). Merk at det ikke fungerer helt på samme måte som i loopen Samtidig som . Hvis betingelsen er sann ( ekte ), så slutter løkken. Hvis betingelsen ikke er oppfylt (er usann Falsk ), så utføres løkkens kropp igjen.

Eksempel 1.

Formulering av problemet. Beregn summen av en endelig rekke ved å bruke en subrutineprosedyre.

Oppgaveutførelsesteknologi:

1. Opprinnelige data: i  Z

Resultat: S  R .

2.Skriv inn følgende egendefinerte prosedyre i standard prosjektmodul ved å bruke en sløyfe med en forutsetning Samtidig som:

Sub summa()

Dim S Som heltall

Dim i As Integer

S=0

i = 1

Gjør mens jeg<= 10

S = S + i^2

i = i + 1

Løkke

MsgBox(S)

End Sub

3. Skriv inn følgende egendefinerte prosedyre i standard prosjektmodul ved å bruke en sløyfe med en forutsetning Før:

Sub summa()

Dim S Som heltall

Dim i As Integer

S=0

i = 1

Gjør til jeg > 10

S = S + i^2

i = i + 1

Løkke

MsgBox(S)

End Sub

4 Skriv inn følgende egendefinerte prosedyre i standard prosjektmodul ved å bruke en løkke med en postcondition Samtidig som:

Sub summa()

Dim S Som heltall

Dim i As Integer

S=0

i = 1

S = S + i^2

i = i + 1

Loop Mens jeg<= 10

MsgBox(S)

End Sub

5 Skriv inn følgende egendefinerte prosedyre i standard prosjektmodul ved å bruke en sløyfe med en postcondition Før:

Sub summa()

Dim S Som heltall

Dim i As Integer

S=0

i = 1

S = S + i^2

i = i + 1

Loop til i > 10

MsgBox(S)

End Sub

Det kan være en situasjon der du må utføre en kodeblokk flere ganger. Generelt utføres setninger sekvensielt: den første setningen i en funksjon utføres først, deretter den andre osv.

Programmeringsspråk gir forskjellige kontrollstrukturer som muliggjør mer komplekse utførelsesveier.

Loop-setningen lar oss utføre en setning eller gruppe setninger flere ganger. Nedenfor er en generell oversikt over en loop-setning i VBA.

VBA tilbyr følgende sløyfetyper for å håndtere sløyfekrav. Klikk på følgende lenker for å sjekke detaljene deres.

for løkke

En for loop er en repetisjonskontrollstruktur som lar en utvikler effektivt skrive en loop som må utføres et visst antall ganger.

Syntaks

Nedenfor er syntaksen til for loop i VBA.

For teller = start Til slutt .... .... Neste

Flytdiagram

Nedenfor er kontrollflyten i sløyfemodus -

  • Det første trinnet er fullført. Dette trinnet lar deg initialisere alle sløyfekontrollvariabler og øke trinntellervariabelen.
  • For det andre blir tilstanden vurdert. Hvis det er sant, utføres sløyfens brødtekst. Hvis den er usann, kjøres ikke hoveddelen av løkken, og kontrollflyten flyttes til neste setning umiddelbart etter For-løkken.
  • Etter at For-løkken er utført, går kontrollflyten videre til neste setning. Denne setningen lar deg oppdatere alle sløyfekontrollvariabler. Den oppdateres basert på trinntellerverdien.
  • Tilstanden er nå evaluert igjen. Hvis det er sant, utføres løkken og prosessen gjentas (sløyfetekst, deretter trinnøkning, så betingelse igjen). Når betingelsen blir usann, avsluttes For-løkken.

eksempel

Legg til en knapp og legg til følgende funksjon.

Private Sub Constant_demo_Click() Dim a Som heltall a = 10 For i = 0 Til et trinn 2 MsgBox "Verdien er i er: " & i Next End Sub

Når koden ovenfor er kompilert og utført, produserer den følgende utgang.

Verdien er i er: 0
Verdien er i er: 2
Verdien er i er: 4
Verdien er i er: 6
Verdien er i er: 8
Verdien er i er: 10

Utfører en sekvens med setninger flere ganger og forkorter koden som styrer sløyfevariabelen.

for ... løkke

Hver sløyfe brukes til å utføre en setning eller gruppe setninger på hvert element i en matrise eller samling.

For hver sløyfe ligner på For Loop; loopen utføres imidlertid for hvert element i matrisen eller gruppen. Derfor vil trinntelleren ikke eksistere i denne typen loop. Den brukes hovedsakelig med arrays eller brukes i objektsammenheng filsystemå jobbe rekursivt.

Syntaks

Nedenfor er syntaksen til For Every loop i VBA.

For hvert element i gruppe....Neste

eksempel

Private Sub Constant_demo_Click() "frukter er en rekke frukter = Array("eple", "oransje", "kirsebær") Dim fruktnavn Som Variant "iterering ved å bruke For hver løkke. For hvert element i frukt fruktnavn = fruktnavn & element & Chr(10) Neste MsgBox fruktnavn End Sub

Når koden ovenfor er utført, skriver den ut alle navnene på fruktene med ett element på hver linje.

eple
oransje
kirsebær

Dette utføres hvis det er minst ett element i gruppen og gjentas for hvert element i gruppen.

mens..wend loop

In a While While ... Wend loop, hvis betingelsen er True, utføres alle setninger til nøkkelordet Wend blir påtruffet.

Hvis betingelsen er usann, avsluttes loopen og kontrollen flyttes til neste setning etter nøkkelordet Wend.

Syntaks

Nedenfor er syntaksen til While..Wend loop i VBA.

Mens tilstand(er) ... Wend

Flytdiagram

eksempel

Private Sub Constant_demo_Click() Dim Counter: Counter = 10 While Counter< 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 koden ovenfor er utført, vil den sende ut følgende i meldingsfeltet.

Gjeldende verdi av telleren er: 11
Gjeldende verdi av telleren er: 12
Gjeldende verdi av telleren er: 13
Gjeldende verdi av telleren er: 14
Gjeldende verdi av telleren er: 15

Dette sjekker tilstanden før løkkekroppen utføres.

gjør.. mens loop

En Do ... while-løkke brukes når vi ønsker å gjenta et sett med utsagn mens en betingelse er sann. Tilstanden kan kontrolleres i begynnelsen av sløyfen eller på slutten av sløyfen.

Syntaks

Nedenfor er syntaksen til Do...While loop i VBA.

Do While condition......Loop

Flytdiagram

eksempel

Følgende eksempel bruker en Do ... while-løkke for å sjekke tilstanden i begynnelsen av loopen. Utsagnene inne i loopen utføres bare hvis betingelsen blir True.

Private Sub Constant_demo_Click() Gjør mens i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

Verdien av i er: 1
Verdien av i er: 2
Verdien av i er: 3
Verdien av i er: 4
Verdien av i er: 5

Alternativ syntaks

Det er også en alternativ syntaks for Do ... while loop som sjekker tilstanden på slutten av loopen. Hovedforskjellen mellom disse to syntaksene er forklart i følgende eksempel.

Gjør ... ... Loop mens tilstand

eksempel

Følgende eksempel bruker en Do ... while-løkke for å sjekke statusen på slutten av løkken. Utsagn i en loop utføres minst én gang, selv om betingelsen er falsk.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "Verdien av i er: " & i Loop Mens i< 3 "Condition is false.Hence loop is executed once. End Sub

Når koden ovenfor er utført, skriver den ut følgende utdata i en meldingsboks.

Verdien av i er: 11

Do..While-setningene vil bli utført så lenge betingelsen er True. (Dvs.) Løkken må gjentas til tilstanden er falsk.

gjør..inntil loop

En do ... intil-løkke vil ikke bli brukt når vi ønsker å gjenta et sett med utsagn mens betingelsen er usann. Tilstanden kan kontrolleres i begynnelsen av sløyfen eller på slutten av sløyfen.

Syntaks

Nedenfor er syntaksen til Do..Until loop i VBA.

Gjør til tilstand ... ... Loop

Flytdiagram

eksempel

Følgende eksempel bruker Do... Before Loop for å teste en betingelse i begynnelsen av loopen. Utsagnene i løkken utføres bare hvis betingelsen er falsk. Den går ut av loopen når betingelsen blir sann.

Private Sub Constant_demo_Click() i = 10 Gjør til i>15 "Betingelsen er falsk. Derfor vil løkke bli utført i = i + 1 msgbox ("Verdien av i er: " & i) Loop End Sub

Når koden ovenfor er utført, skriver den ut følgende utdata i en meldingsboks.

Verdien av i er: 11
Verdien av i er: 12
Verdien av i er: 13
Verdien av i er: 14
Verdien av i er: 15
Verdien av i er: 16

Alternativ syntaks

Det er også en alternativ syntaks, Do... Before Loop, som tester tilstanden på slutten av loopen. Hovedforskjellen mellom disse to syntaksene er forklart av følgende eksempel.

Gjør ... ... Loop Inntil tilstand

Flytdiagram

eksempel

Følgende eksempel bruker Do...Before a loop for å teste en betingelse på slutten av loopen. Utsagn i en loop utføres minst én gang, selv om betingelsen er True.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "Verdien av i er: " & i Loop Inntil i more15 "Betingelsen er sann. Derfor kjøres loopen én gang. End Sub

Når koden ovenfor er utført, skriver den ut følgende utdata i en meldingsboks.

Verdien av i er: 11

Do..Until-setningene vil bli utført så lenge betingelsen er falsk. (Dvs.) Løkken må gjentas til betingelsen er sann.

Cycle Control Records

Sløyfekontrollsetninger endrer utførelsen ut av sin normale sekvens. Når utførelse forlater omfanget, blir ikke alle andre loop-setninger utført.

Kontrollerklæring og beskrivelse

Operatørutgang

Exit for brukes når vi ønsker å avslutte For Loop basert på visse kriterier. Når Exit For utføres, flytter kontrollen til neste setning umiddelbart etter For Loop.

Syntaks

Nedenfor er Exit For Statement-syntaksen i VBA.

Flytdiagram

eksempel

Følgende eksempel bruker Exit For. Hvis telleren når 4, avsluttes For Loop og kontrollen går til neste setning umiddelbart etter For Loop.

Private Sub Constant_demo_Click() Dim a Som heltall a = 10 For i = 0 Til et trinn 2 "i er tellervariabelen og den økes med 2 MsgBox ("Verdien er i er: " & i) Hvis i = 4 Da i = i * 10 "Dette utføres bare hvis i=4 MsgBox ("Verdien er i er: " & i) Exit For "Exited when i=4 End If Next End Sub

Når koden ovenfor er utført, skriver den ut følgende utdata i meldingsboksen.

Verdien er i er: 0
Verdien er i er: 2
Verdien er i er: 4
Verdien er i er: 40

Avslutter en For loop-setning og overfører utførelse til setningen umiddelbart etter loopen

Avslutt Do

Exit Do Statement brukes når vi ønsker å avslutte Do Loops basert på visse kriterier. Den kan brukes i både Do Do...While og Do...Before loops.

Når Exit Do utføres, går kontrollen over til neste setning umiddelbart etter Do Loop.

Syntaks

Nedenfor er syntaksen til Exit Do-setningen i VBA.

eksempel

Følgende eksempel bruker Exit Do. Hvis telleren når 10, avsluttes Do-utgangslinjen og kontrollen går over til neste setning umiddelbart etter For Loop.

Private Sub Constant_demo_Click() i = 0 Gjør mens i<= 100 If i >10 Gå deretter ut Gjør " Loop Exits if i>10 End If MsgBox ("Verdien av i er: " & i) i = i + 2 Loop End Sub

Når koden ovenfor er utført, skriver den ut følgende utdata i en meldingsboks.

Verdien av i er: 0
Verdien av i er: 2
Verdien av i er: 4
Verdien av i er: 6
Verdien av i er: 8
Verdien av i er: 10

Fullfører en Do While-setning og overfører utførelse til setningen umiddelbart etter loopen

Laboratoriearbeid med grunnleggende programmering

2.1. Tabell over funksjoner representert analytisk
og konvergerer i nærheten

Målet med arbeidet

· Konsolidering av teoretisk kunnskap om grunnleggende organisering av forgreninger og sykliske strukturer.

· Tilegnelse av praktiske programmeringsferdigheter ved å bruke forgrenings- og sykliske strukturer i Visual Basic-systemet.

Det er tre typer loop-setninger i VB:

tellesyklus: For...Til...Neste

løkker med forutsetninger: Do While...Loop, Do Until...Loop, While...WEnd

· løkker med postbetingelser: Do...Loop While, Do...Loop Until.

Telleløkke – lar deg bla gjennom et sett med utsagn et spesifisert antall ganger. Syntaksen er som følger:

Til disk = Start Til slutt

[operatører]

[operatører]

Neste [ disk]

Parameter disk er en numerisk variabel (heltall, reell type eller dato, variant, valutatype) som automatisk økes etter hver repetisjon. Opprinnelig verdi disk lik parameter Start, og den siste parameteren - slutt. Hvis det ikke er spesifisert, anses trinnet som lik 1; trinnverdien kan endres. Det kan være et positivt eller negativt tall.

Det er fire syntaktiske konstruksjoner av Do....-løkken:

Utsagnene mellom nøkkelordene Do... Loop utføres et spesifisert antall ganger avhengig av betingelsen. For eksempel, i det følgende programfragmentet, når C = 100, vil betingelsen være oppfylt og løkken legges inn. Inne i loopen kalles prosedyren og verdien av C reduseres med 1. Deretter sjekkes betingelsen (C > 0) igjen og loopoperatorene utføres på nytt (de vil bli utført 100 ganger totalt), til C = 0. Når betingelsen C > 0 blir falsk og sløyfen stopper.

Gjør mens C > 0

Det samme programfragmentet utført ved hjelp av en løkke med en forutsetning i syntaks 2:

I dette tilfellet kjører løkken så lenge tilstanden er falsk, i motsetning til det forrige tilfellet, det vil si at den fortsetter før oppfyllelse av betingelse C = 0.

Loop-setningene 3 og 4 er veldig like i syntaks til de to første, bortsett fra at betingelsen Ikke beregnes til sløyfen er utført minst én gang.

Disse loop-syntaksene kan bruke Exit For og Exit Do ubetinget loop exit-setninger for å overføre kontroll til operatøren bak loopen. For eksempel, i det følgende programfragmentet, hvis startverdien til C er >50, vil løkken stoppe umiddelbart.



Gjør til C<= 0

MsgBox "Start" verdien er større enn akseptabelt", "Inndatafeil"

While...Wend-løkken ble brukt i tidlige versjoner av Visual Basic. Syntaksen er som følger:

Samtidig som<условие>

<Операторы>

I motsetning til Do..Loop-løkken, har While ..Wend-løkken ikke et ekstra alternativ der betingelsen sjekkes på slutten av loopen. I tillegg er det ingen loop exit-setning for den, som Exit Do.

VBA. Organisering av sykluser.

Loop-setninger brukes til å gjenta en handling eller gruppe av handlinger et spesifisert antall ganger. Antall repetisjoner (loopiterasjoner) kan forhåndsbestemmes eller beregnes.

VBA støtter to typer looping-konstruksjoner:

  1. Løkker med et fast antall repetisjoner ( motvirkede løkker).
  2. Løkker med et ubestemt antall repetisjoner ( betingede løkker).

For alle typer sykluser brukes konseptet løkkekropp , som definerer en blokk med setninger innelukket mellom start- og sluttsetningene til løkken. Hver repetisjon av utførelsen av uttalelsene til løkkens kropp kalles iterasjon

Faste sykluser

VBA gir to kontrollstrukturer for å organisere en fast sløyfe: For ... Neste (løkke med en teller) og For Hver ... Neste (løkke med en oppregning).

Operatør For...Neste Dette er en typisk tellersløyfe som utfører et spesifisert antall iterasjoner. Syntaksen til For...Next-setningen er:

Til<счетчик> = <начЗначение>At<конЗначение>

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

Neste [<счетчик>]

Et eksempel på bruk av For...Next-operatoren.

Oppføring 1. For … Neste operatør

OPPGAVE: Lag et program som mottar to tall fra brukeren.

‘ Legger til alle tallene i området spesifisert av disse to tallene, og deretter

' viser den resulterende mengden.

Sub sample7()

Dim i As Integer 'syklusteller

Dim sStart 'innledende tellerverdi

Dim sEnd 'sluttellerverdi

Dim sSum As Long ‘resulterende sum

sStart = InputBox(“Skriv inn det første tallet:”)

sEnd = InputBox(“Skriv inn det andre tallet:”)

sSum = 0

For i = CInt(sStart) Til CInt(sEnd)

sSum = sSum + i

Neste i

MsgBox "Summen av tallene fra " & sStart & " til " & sEnd & " er: " & sSum

End Sub

Loop statement for hver...Nestetilhører kategorien objekttype-operatorer, dvs. gjelder først og fremst samlinger objekter, så vel som matriser . Hoveddelen av loopen utføres et fast antall ganger, tilsvarende antall elementer i matrisen eller samlingen. For hver...Neste utsagnsformat:

For hver<элемент>I<группа> <блок операторов>Neste [<элемент>]

Betingede løkker (udefinerte løkker)

Betingede løkker brukes når gjentatte handlinger bare må utføres under visse forhold. Antall iterasjoner er ikke definert og kan generelt være lik null (spesielt for løkker med en forutsetning). VBA tilbyr utviklere flere kontrollstrukturer for organisering av betingede løkker:

  • Fire typer Do..Loops, som er forskjellige i typen tilstand som kontrolleres og tiden det tar å fullføre denne kontrollen.
  • Kontinuerlig loop Mens... Vend.

Do While...-løkken er typisk sløyfe med forutsetning. Tilstanden kontrolleres før hoveddelen av løkken utføres. Syklusen fortsetter arbeidet til den<условие>er utført (dvs. har verdien True). Siden kontrollen utføres i begynnelsen, kan det hende at selve sløyfen aldri blir utført. Gjør mens... Sløyfeformat:

Gjør mens<условие>

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

Løkke

Oppføring 2. Gjør mens... Loop

OPPGAVE: Lag et program som krever brukerinndata

'en vilkårlig rekkefølge av tall. Inndata må avsluttes

' bare etter at summen av de angitte oddetallene overstiger 100.

Sub sample8()

Dim OddSum As Integer ‘summen av oddetall

Dim OddStr As String 'en streng med oddetall

Dim Num 'for å godta angitte tall

OddStr = "" 'initialisering av utgangsstreng

OddSum = 0 ‘initialiser OddSum

Gjør mens OddSum< 100 ‘начало цикла

Num = InputBox("Skriv inn et tall: ")

If (Num Mod 2)<>0 Deretter 'paritetssjekk

OddSum = OddSum + Num ‘akkumulering av summen av oddetall

OddStr = OddStr & Num & ” ”

Slutt om

Løkke

'skriv ut en streng med oddetall

MsgBox prompt:=”Oddetall: ” & OddStr

End Sub

Do ... Loop While Statementdesignet for organisasjonløkke med postcondition. Tilstanden kontrolleres etter at sløyfen er utført minst én gang. Syklusen fortsetter sitt virke til<условие>forblir sant. Gjør... Loop mens Format:

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

Oppføring 3. Løkke med postcondition

OPPGAVE: Lag et program for spillet "Gjett nummeret." Programmet må være tilfeldig

' måte å generere et tall i området fra 1 til 1000, må brukeren

' gjett dette tallet. Programmet viser et hint for hvert tall som legges inn

' "mer eller mindre".

Sub sample8()

Randomize Timer 'initialiser tilfeldig tallgenerator

Dim msg As String ' meldingsstreng

Dim SecretNumber As Long, UserNumber Som Variant

Begynn: SecretNumber = Round(Rnd * 1000) ' datagenerert tall

UserNumber = Tomt ’ nummer angitt av brukeren

Spill

Velg Sak sann

Case IsEmpty(UserNumber): msg = "Skriv inn et tall"

Sak UserNumber > SecretNumber: msg = "For mange!"

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

Avslutt Velg

UserNumber = InputBox(prompt:=msg, Title:=”Gjett nummeret”)

Løkke mens brukernummer<>Hemmelig nummer

' undersøkelse

If MsgBox(“Spill igjen?”, vbYesNo + vbQuestion, “Du gjettet det!”) = vbYes Then

Gå til start

Slutt om

End Sub

Loops Do Until... Loop og Do... Loop Til er inversjoner av de tidligere diskuterte betingede løkkene. Generelt fungerer de på samme måte, bortsett fra at hoveddelen av loopen utføres hvis betingelsen er falsk (dvs.<условие>= Usann). Gjør til... Loop Format:

Gjør til<условие> <блок операторов>Løkke

Gjør... Loop Til loop-format:

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

Løkke til<условие>

Praktisk oppgave:Skriv om programmene i lister 10 og 11 ved å bruke inverterte loop-setninger.

Loop Mens...Vend gjelder også betingede løkker. Denne operatøren er helt i samsvar med Do While... Loop-strukturen. Mens...Vend loop-format:

Samtidig som<условие>

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

Wend

Et særtrekk ved denne operatøren er umuligheten tvungen oppsigelse(avbryter) sløyfens kropp (Exit Do-setningen fungerer ikke i While ... Wend-løkken).

Avbryte en syklus

For å avslutte en iterasjon tidlig og gå ut av loopen, brukes Exit-setningen. Denne operatøren kan brukes i alle sykliske strukturer bortsett fra Mens... Wend. Den generelle syntaksen for å bruke Exit for å bryte en sløyfe er:

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

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

Avslutt (For | Gjør)

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

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

Når Exit-setningen utføres, avbrytes løkken og kontrollen overføres til setningen etter setningen<конец_цикла>. Det kan være flere Exit-setninger i brødteksten i en loop.

Oppføring 4. Tving ut av loop

Sub sample9()

For i = 1 til 10000000

Hvis i = 10, gå ut av løkken når telleren når 10

Neste




Topp