Za naslednji vba excel se premaknite na naslednjega. Stavki zanke v VBA. Projekt "Dohodek od depozita"

Obstajajo situacije, ko mora program VBA izvesti isti nabor dejanj večkrat zaporedoma (to je, večkrat ponoviti isti blok kode). To je mogoče storiti z uporabo zank VBA.

Stavek zanke za v Visual Basicu

Struktura stavka zanke Za v Visual Basicu je mogoče organizirati v eni od dveh oblik: kot zanko Za … Naprej ali kot cikel Za vsakogar.

Kroži "Za ... Naprej"

Cikel Za … Naprej uporablja spremenljivko, ki zaporedno vzame vrednosti iz danega obsega. Z vsako spremembo vrednosti spremenljivke se izvedejo dejanja, ki jih vsebuje telo zanke. To je enostavno razumeti iz preprostega primera:

Za i = 1 do 10 Total = Total + iArray(i) Naslednji i

V tej preprosti zanki Za … Naprej spremenljivka se uporablja jaz, ki zaporedno zavzema vrednosti 1, 2, 3, ... 10 in za vsako od teh vrednosti se izvede koda VBA znotraj zanke. Tako ta zanka sešteje elemente matrike iArray v spremenljivki Skupaj.

V zgornjem primeru korak prirastka zanke ni določen, da bi povečali spremenljivko jaz Od 1 do 10 je privzeto prirast 1 . Vendar pa je v nekaterih primerih potrebno uporabiti različne vrednosti prirastka za zanko. To lahko storite s ključno besedo korak, kot je prikazano v naslednjem preprostem primeru.

Za d = 0 do 10 Korak 0.1 dTotal = dTotal + d Naslednji d

Ker je v zgornjem primeru korak povečanja nastavljen na 0.1 , nato spremenljivko dSkupaj za vsako ponovitev cikla zavzame vrednosti 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0.

Če želite določiti korak zanke v VBA, lahko uporabite negativno vrednost, na primer takole:

Za i = 10 do 1 korak -1 iArray(i) = i Naslednji i

Tukaj je korak povečanja -1 , torej spremenljivka jaz z vsako ponovitvijo cikla zavzame vrednosti 10, 9, 8, ... 1.

Za vsako zanko

Cikel Za vsakogar izgleda kot cikel Za … Naprej, vendar namesto zanke skozi zaporedje vrednosti za spremenljivko števca Za vsakogar izvede nabor dejanj za vsak predmet v določeni skupini predmetov. V naslednjem primeru z uporabo zanke Za vsakogar Navede vse liste v trenutnem Excelovem delovnem zvezku:

Zatemni wSheet kot delovni list za vsak wSheet v delovnih listih MsgBox "Sheet Found: " & wSheet.Name Next wSheet

Izhod za operaterja prekinitve zanke

Operater Izhod za uporablja za prekinitev cikla. Takoj ko v kodi naleti na ta stavek, program konča izvajanje zanke in nadaljuje z izvajanjem stavkov, ki jih najde v kodi takoj po tej zanki. To lahko uporabite na primer za iskanje določene vrednosti v matriki. Če želite to narediti, uporabite zanko, da pregledate vsak element matrike. Ko je zahtevani element najden, ni več treba brskati po preostalih - cikel je prekinjen.

Aplikacija operaterja Izhod za prikazano v naslednjem primeru. Tukaj zanka preleti 100 vnosov polja in vsakega primerja z vrednostjo spremenljivke dVal. Če se najde ujemanje, se zanka prekine:

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

Do While Loop v Visual Basicu

Cikel Naredi Medtem izvaja blok kode, dokler je izpolnjen dani pogoj. Sledi primer postopka Sub, v katerem z uporabo zanke Naredi Medtem Fibonaccijeva števila, ki ne presegajo 1000, so prikazana zaporedno:

"Postopek Sub natisne Fibonaccijeva števila, ki ne presegajo 1000. Sub Fibonacci() Dim i As Integer "števec za označevanje položaja elementa v zaporedju Dim iFib As Integer "shranjuje trenutno vrednost zaporedja Dim iFib_Next As Integer "shranjuje naslednja vrednost zaporedja Dim iStep As Integer "shrani velikost naslednjega prirastka" inicializira spremenljivki i in iFib_Next i = 1 iFib_Next = 0 "zanka Do While se bo izvajala, dokler vrednost" trenutnega Fibonaccijevega števila ne preseže 1000 Do Medtem ko 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

V navedenem primeru je pogoj iFib_Naprej< 1000 preveriti na začetku cikla. Torej, če je prva vrednost iFib_NaprejČe bi bilo več kot 1000, se zanka ne bi izvedla niti enkrat.

Drug način za izvedbo zanke Naredi Medtem– postavite pogoj ne na začetek, ampak na konec zanke. V tem primeru se bo zanka izvedla vsaj enkrat, ne glede na to, ali je pogoj resničen.

Shematsko tak cikel Naredi Medtem s pogojem, ki se preveri na koncu, bo videti takole:

Do...Loop While iFib_Next< 1000

Naredi Until Loop v Visual Basicu

Cikel Naredite do zelo podobno ciklu Naredi Medtem: Blok kode v telesu zanke se izvaja znova in znova, dokler ni izpolnjen podani pogoj (rezultat pogojnega izraza je Prav). V naslednjem postopku Sub z uporabo zanke Naredite do izvleče vrednosti iz vseh celic v stolpcu A delovni list, dokler v stolpcu ne naletite na prazno celico:

IRow = 1 Do IsEmpty(Cells(iRow, 1)) "Vrednost trenutne celice je shranjena v matriki dCellValues ​​dCellValues(iRow) = Cells(iRow, 1).Vrednost iRow = iRow + 1 Loop

V zgornjem primeru pogoj Je Prazno(Celice(iRow, 1)) ki se nahaja na začetku strukture Naredite do, zato bo zanka izvedena vsaj enkrat, če prva vzeta celica ni prazna.

Vendar, kot je bilo prikazano v primerih zanke Naredi Medtem, v nekaterih situacijah želite, da se zanka izvede vsaj enkrat, ne glede na začetni rezultat pogojnega izraza. V tem primeru je treba pogojni izraz postaviti na konec zanke, takole:

Naredi ... Zanka, dokler ni prazno (celice (iRow, 1))

Stavki zanke

V VBA Obstajata dve glavni vrsti zank: zanke s števcem (parametrične) in zanke s pogojem (iterativne).

Nasprotne zanke se uporabljajo v primerih, ko je treba določena dejanja izvesti določeno število krat.

Pogojne zanke se uporabljajo, ko je treba določena dejanja v programu ponavljati, dokler ni izpolnjen določen pogoj.

Zanke s parametrom Za … Naprej

Struktura cikla:

Za Parameter_cikla = Začetna_vrednost Za Končna_vrednost

[Korak korak]

Operaterji

[Izhod za]

Naslednji [Parameter_cikla]

kjer Za ključna beseda VBA (od), ki označuje začetek cikla;

loop_parameter spremenljivka, definirana kot števec zanke;

Initial_Value število, ki določa začetno vrednost parametra zanke;

K ključni besedi VBA (pred), delitev

Začetna_vrednost in končno_znanje;

Final_Value število, ki določa vrednost parametra zanke,

Pri kateri se cikel konča;

Ključna beseda korak VBA (korak), ki se uporablja za

Specifikacije koraka zanke, izbirni argument;

Korak številka, ki določa korak cikla, tj. vrednost, po kateri

Poveča (ali zmanjša) vrednost parametra

Kolesarite na vsakem koraku. Ta številka bi lahko bila

negativno;

Izhod za operater zgodnjega izhoda iz zanke (neobvezno);

Naslednji ključna beseda VBA (naslednji) označuje

Konec cikla.

Cikel dela:

1. korak Najprej se določi parameter zanke, izračunajo in shranijo se začetne in končne vrednosti te spremenljivke.

2. korak Parametru zanke je dodeljena začetna vrednost.

3. korak Začetna vrednost parametra zanke se primerja s končno vrednostjo.

Če je parameter zanke večji od končne vrednosti, program takoj zapusti zanko in skoči na vrstico kode, ki sledi zanki.

4. korak Izvede se telo zanke.

5. korak Po izvedbi telesa zanke se parametru zanke dodeli naslednja vrednost. Pojdite na 3. korak.

Opomba.

1. Če je uporabljena ključna beseda korak , potem se parameter zanke spremeni glede na številko, navedeno za to besedo. Če beseda korak ni, potem je vrednost koraka enaka ena.

Primer 1.

Za I = 0 do 10 2. korak (vrednost I se bo povečalo za 2)

2. Za ... Naslednja zanka se lahko prekine predčasno, ko je dosežen kakršen koli pogoj. Če želite to narediti, morate na pravo mesto v zanki postaviti operaterja Izhod za.

Primer 2.

Dim S kot celo število

Dim j kot celo število

S=2

Za j = 1 do 10

S = S + j

Če je S > 6 Potem

Izhod za (Izstopite iz zanke, če je vrednost S > 6)

Konec Če

Naprej j

MsgBox(S)

Pogojne zanke (iterativne)

Če je treba neko dejanje (več dejanj) izvesti večkrat, vendar ni vnaprej znano, kolikokrat in je to odvisno od nekega pogoja, potem uporabite zanko s predpogojem ali popogojem.

V VBA obstajata dve glavni zanki NAREDI...ZANKO s pogojem, ki ga vnese ključna beseda Medtem , in s pogojem, ki ga vnese ključna beseda dokler . Oba sta lahko s predpogojem ali popogojem.

Sintaksa:

kje Do ključna beseda (do);

Medtem ključna beseda (še);

dokler ključna beseda (do);

Zanka ključna beseda, ki označuje konec cikla;

<условие>logični izraz, katerega resničnost se preverja

Na začetku vsake izvedbe telesa zanke;

<тело_цикла>poljubno zaporedje operatorjev;

Naredi ... Med gradnjo se glasi: narediti, dokler je pogoj izpolnjen. V oblikovanju Naredi ... Medtem ko Za

Do ... Do izgradnje se glasi: storiti, dokler pogoj ni izpolnjen. V oblikovanju Naredi ... Dokler Če želite povečati korak, morate napisati poseben operater, ker v njem, za razliko od dizajna Za , to ni samodejno.

Pogoj zapisan za ključno besedo dokler , se preveri na koncu vsake iteracije (po izvedbi telesa zanke). Upoštevajte, da ne deluje povsem enako kot v zanki Medtem . Če je pogoj resničen ( Prav ), potem se zanka konča. Če pogoj ni izpolnjen (je false False ), potem se telo zanke ponovno izvede.

Primer 1.

Oblikovanje problema. Izračunajte vsoto končnega niza z uporabo podprogramskega postopka.

Tehnologija izvajanja nalog:

1. Začetni podatki: i  Z

Rezultat: S  R .

2. V standardni projektni modul vnesite naslednji postopek po meri z uporabo zanke s predpogojem Medtem:

Sub summa()

Dim S kot celo število

Dim i kot celo število

S=0

i = 1

Do Medtem ko i<= 10

S = S + i^2

i = i + 1

Zanka

MsgBox(S)

End Sub

3. V standardni projektni modul vnesite naslednji postopek po meri z uporabo zanke s predpogojem do:

Sub summa()

Dim S kot celo število

Dim i kot celo število

S=0

i = 1

Naredi, dokler i > 10

S = S + i^2

i = i + 1

Zanka

MsgBox(S)

End Sub

4 V standardni projektni modul vnesite naslednji postopek po meri z uporabo zanke s postpogojem Medtem:

Sub summa()

Dim S kot celo število

Dim i kot celo število

S=0

i = 1

S = S + i^2

i = i + 1

Loop Medtem ko i<= 10

MsgBox(S)

End Sub

5 V standardni projektni modul vnesite naslednji postopek po meri z uporabo zanke s postpogojem do:

Sub summa()

Dim S kot celo število

Dim i kot celo število

S=0

i = 1

S = S + i^2

i = i + 1

Zanka do i > 10

MsgBox(S)

End Sub

Lahko pride do situacije, ko boste morali blok kode izvesti večkrat. Na splošno se stavki izvajajo zaporedno: najprej se izvede prvi stavek v funkciji, nato drugi itd.

Programski jeziki zagotavljajo različne nadzorne strukture, ki omogočajo bolj zapletene poti izvajanja.

Stavek zanke nam omogoča večkratno izvedbo stavka ali skupine stavkov. Spodaj je splošen pogled stavka zanke v VBA.

VBA ponuja naslednje vrste zank za obravnavo zahtev glede zank. Kliknite naslednje povezave, da preverite njihove podrobnosti.

za zanko

Zanka for je struktura nadzora ponavljanja, ki omogoča razvijalcu, da učinkovito napiše zanko, ki jo je treba izvesti določeno število krat.

Sintaksa

Spodaj je sintaksa zanke for v VBA.

Za števec = začetek Za konec .... .... Naprej

Diagram poteka

Spodaj je kontrolni tok v načinu Loop -

  • Prvi korak je končan. Ta korak vam omogoča, da inicializirate poljubne spremenljivke za nadzor zanke in povečate spremenljivko števca korakov.
  • Drugič, stanje se oceni. Če je res, se telo zanke izvede. Če je false, se telo zanke ne izvede in krmilni tok se premakne na naslednji stavek takoj za zanko For.
  • Ko se izvede zanka zanke For, se krmilni tok premakne na naslednji stavek. Ta stavek vam omogoča posodobitev vseh spremenljivk za nadzor zanke. Posodablja se glede na vrednost števca korakov.
  • Stanje je zdaj ponovno ocenjeno. Če je res, se zanka izvede in postopek se ponovi (telo zanke, nato prirast koraka, nato znova pogoj). Ko pogoj postane napačen, se zanka For konča.

primer

Dodajte gumb in dodajte naslednjo funkcijo.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 MsgBox "Vrednost je i is: " & i Next End Sub

Ko je zgornja koda prevedena in izvedena, ustvari naslednji izhod.

Vrednost i je: 0
Vrednost i je: 2
Vrednost i je: 4
Vrednost i je: 6
Vrednost i je: 8
Vrednost i je: 10

Večkrat izvede zaporedje stavkov in skrajša kodo, ki nadzoruje spremenljivko zanke.

za ... zanko

Vsaka zanka se uporablja za izvedbo stavka ali skupine stavkov za vsak element v matriki ali zbirki.

Zanka za vsako je podobna zanki za; vendar se zanka izvede za vsak element v matriki ali skupini. Zato števec korakov v tej vrsti zanke ne bo obstajal. Uporablja se predvsem z nizi ali v kontekstu objekta datotečni sistem delati rekurzivno.

Sintaksa

Spodaj je sintaksa zanke Za vsako v VBA.

Za vsak element v skupini ... Naprej

primer

Private Sub Constant_demo_Click() "fruits je niz fruits = Array("apple", "orange", "cherries") Dim fruitnames As Variant "iteracija z uporabo vsake zanke For. Za vsak element v sadju fruitnames = fruitnames & Item & Chr(10) Next MsgBox fruitnames End Sub

Ko se zgornja koda izvede, natisne vsa imena sadežev z enim elementom v vsaki vrstici.

jabolko
oranžna
češnje

To se izvede, če je v skupini vsaj en element in se ponovi za vsak element v skupini.

while..wend zanka

V zanki While While ... Wend, če je pogoj True, se izvedejo vsi stavki, dokler ne naletimo na ključno besedo Wend.

Če je pogoj napačen, se zanka konča in kontrolnik premakne na naslednji stavek za ključno besedo Wend.

Sintaksa

Spodaj je sintaksa zanke While..Wend v VBA.

Medtem ko pogoj(i) ... Wend

Diagram poteka

primer

Private Sub Constant_demo_Click() Dim Counter: Counter = 10 Medtem ko števec< 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

Ko se zgornja koda izvede, bo v polje za sporočilo izpisalo naslednje.

Trenutna vrednost števca je: 11
Trenutna vrednost števca je: 12
Trenutna vrednost števca je: 13
Trenutna vrednost števca je: 14
Trenutna vrednost števca je: 15

To preveri pogoj pred izvedbo telesa zanke.

do..while zanka

Zanka Do ... while se uporablja, ko želimo ponoviti niz stavkov, medtem ko je pogoj resničen. Pogoj je mogoče preveriti na začetku zanke ali na koncu zanke.

Sintaksa

Spodaj je sintaksa zanke Do...While v VBA.

Do While pogoj......Zanka

Diagram poteka

primer

Naslednji primer uporablja zanko Do ... while za preverjanje stanja na začetku zanke. Stavki znotraj zanke se izvedejo le, če pogoj postane True.

Private Sub Constant_demo_Click() Do While i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

Vrednost i je: 1
Vrednost i je: 2
Vrednost i je: 3
Vrednost i je: 4
Vrednost i je: 5

Alternativna sintaksa

Obstaja tudi alternativna sintaksa za zanko Do ... while, ki preveri stanje na koncu zanke. Glavna razlika med tema sintaksama je razložena v naslednjem primeru.

Do ... ... Loop While pogoj

primer

Naslednji primer uporablja zanko Do ... while za preverjanje stanja na koncu zanke. Stavki znotraj zanke se izvedejo vsaj enkrat, tudi če je pogoj False.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "Vrednost i je: " & i Loop Medtem ko i< 3 "Condition is false.Hence loop is executed once. End Sub

Ko se zgornja koda izvede, natisne naslednji izhod v polje s sporočilom.

Vrednost i je: 11

Stavki do..While se bodo izvajali, dokler je pogoj True. (T.j.) Zanko je treba ponavljati, dokler pogoj ni False.

do..intil zanka

Zanka do ... intil ne bo uporabljena, ko želimo ponoviti niz stavkov, medtem ko je pogoj napačen. Pogoj je mogoče preveriti na začetku zanke ali na koncu zanke.

Sintaksa

Spodaj je sintaksa zanke Do..Until v VBA.

Naredi Dokler pogoj ... ... Zanka

Diagram poteka

primer

Naslednji primer uporablja Do... Pred zanko za preizkus pogoja na začetku zanke. Stavki znotraj zanke se izvedejo samo, če je pogoj napačen. Izstopi iz zanke, ko pogoj postane resničen.

Private Sub Constant_demo_Click() i = 10 Do Until i>15 "Pogoj je False. Zato se bo izvedla zanka i = i + 1 msgbox ("Vrednost i je: " & i) Loop End Sub

Ko se zgornja koda izvede, natisne naslednji izhod v polje s sporočilom.

Vrednost i je: 11
Vrednost i je: 12
Vrednost i je: 13
Vrednost i je: 14
Vrednost i je: 15
Vrednost i je: 16

Alternativna sintaksa

Obstaja tudi alternativna sintaksa, Do ... Pred zanko, ki preizkusi pogoj na koncu zanke. Glavna razlika med tema sintaksama je pojasnjena z naslednjim primerom.

Do ... ... Loop Until pogoj

Diagram poteka

primer

Naslednji primer uporablja Do...Before zanko za preizkus pogoja na koncu zanke. Stavki znotraj zanke se izvedejo vsaj enkrat, tudi če je pogoj True.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "Vrednost i je: " & i Loop Until i more15 "Pogoj je True. Zato se zanka izvede enkrat. End Sub

Ko se zgornja koda izvede, natisne naslednji izhod v polje s sporočilom.

Vrednost i je: 11

Stavki do..Until se bodo izvajali, dokler je pogoj False. (Tj.) Zanko je treba ponavljati, dokler pogoj ni resničen.

Zapisi o nadzoru cikla

Stavki za nadzor zanke spremenijo izvajanje iz običajnega zaporedja. Ko izvedba zapusti obseg, se vsi drugi stavki zanke ne izvedejo.

Nadzorna izjava in opis

Izhod operaterja

Izhod za se uporablja, ko želimo na podlagi določenih kriterijev zapustiti zanko For. Ko se izvede Exit For, se nadzor premakne na naslednji stavek takoj za For Loop.

Sintaksa

Spodaj je sintaksa Exit For Statement v VBA.

Diagram poteka

primer

Naslednji primer uporablja Exit For. Če števec doseže 4, se zanka za konča in nadzor se premakne na naslednji stavek takoj za zanko za.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 "i je spremenljivka števca in se poveča za 2 MsgBox ("Vrednost je i je: " & i) Če je i = 4 Potem i = i * 10 "To se izvede le, če i=4 MsgBox ("Vrednost je i je: " & i) Izhod Za "Izhod, ko i=4 Konec Če Naslednji Konec Sub

Ko se zgornja koda izvede, natisne naslednji izhod v polje za sporočilo.

Vrednost i je: 0
Vrednost i je: 2
Vrednost i je: 4
Vrednost i je: 40

Zaključi stavek zanke For in prenese izvedbo v stavek takoj za zanko

Izhod Do

Stavek Exit Do se uporablja, ko želimo zapustiti zanke Do na podlagi določenih kriterijev. Uporablja se lahko v obeh zankah Do Do...While in Do...Before.

Ko se izvede Exit Do, nadzor preide na naslednji stavek takoj za Do Loop.

Sintaksa

Spodaj je sintaksa stavka Exit Do v VBA.

primer

Naslednji primer uporablja Exit Do. Če števec doseže 10, se izhodna vrstica Do konča in nadzor preide na naslednji stavek takoj za zanko For.

Private Sub Constant_demo_Click() i = 0 Do While i<= 100 If i >10 Then Exit Do " Loop Exits if i>10 End If MsgBox ("The Value of i is: " & i) i = i + 2 Loop End Sub

Ko se zgornja koda izvede, natisne naslednji izhod v polje s sporočilom.

Vrednost i je: 0
Vrednost i je: 2
Vrednost i je: 4
Vrednost i je: 6
Vrednost i je: 8
Vrednost i je: 10

Dokonča stavek Do While in prenese izvedbo v stavek takoj po zanki

Laboratorijske vaje iz osnov programiranja

2.1. Tabela analitično predstavljenih funkcij
in se zbližujejo v bližini

Cilj dela

· Utrjevanje teoretičnega znanja o osnovah organiziranja razvejanih in cikličnih struktur.

· Pridobivanje praktičnih veščin programiranja z uporabo razvejanih in cikličnih struktur v sistemu Visual Basic.

V VB obstajajo tri vrste stavkov zanke:

cikel štetja: Za...Za...Naprej

zanke s predpogoji: Do While...Loop, Do Until...Loop, While...WEnd

· zanke s postpogoji: Do...Loop While, Do...Loop Until.

Zanka štetja – omogoča kroženje skozi nabor stavkov določeno število krat. Njegova sintaksa je naslednja:

Za števec = Začetek Za konec

[operaterji]

[operaterji]

Naslednji [ števec]

Parameter števec je numerična spremenljivka (celo število, realni tip ali datum, različica, tip valute), ki se samodejno poveča po vsaki ponovitvi. Začetna vrednost števec enako parametru Začetek, in končni parameter – konec.Če ni naveden, se šteje, da je korak enak 1; vrednost koraka je mogoče spremeniti. Lahko je pozitivno ali negativno število.

Obstajajo štiri sintaktične konstrukcije zanke Do....:

Stavki med ključnimi besedami Do... Loop se izvedejo določeno število krat, odvisno od pogoja. Na primer, v naslednjem fragmentu programa, ko je C = 100, bo pogoj izpolnjen in vnesena bo zanka. Znotraj zanke se postopek pokliče in vrednost C se zmanjša za 1. Nato se ponovno preveri pogoj (C > 0) in znova se izvedejo operatorji zanke (skupaj bodo izvedeni 100-krat), dokler C = 0. Ko postane pogoj C > 0 napačen in se zanka ustavi.

Naredi Medtem ko je C > 0

Isti programski fragment, izveden z uporabo zanke s predpogojem v sintaksi 2:

V tem primeru zanka teče, dokler je pogoj False, za razliko od prejšnjega primera, torej se nadaljuje prej izpolnitev pogoja C = 0.

Stavka zanke 3 in 4 sta po sintaksi zelo podobna prvima dvema, razen pogoja ne se izračuna, dokler se zanka ne izvede vsaj enkrat.

Te sintakse zanke lahko uporabljajo brezpogojne izjave za izhod iz zanke Exit For in Exit Do za prenos nadzora na operaterja za zanko. Če je na primer v naslednjem fragmentu programa začetna vrednost C >50, se bo zanka takoj ustavila.



Naredite do C<= 0

MsgBox “Začni” vrednost je večja od sprejemljive”, “Napaka pri vnosu”

Zanka While...Wend je bila uporabljena v zgodnjih različicah Visual Basica. Njegova sintaksa je naslednja:

Medtem<условие>

<Операторы>

Za razliko od zanke Do..Loop zanka While ..Wend nima druge možnosti, pri kateri se pogoj preveri na koncu zanke. Poleg tega zanj ni stavka za izhod iz zanke, kot je Exit Do.

VBA. Organizacija ciklov.

Stavki zanke se uporabljajo za ponavljanje dejanja ali skupine dejanj določeno število krat. Število ponovitev (iteracij zank) je mogoče vnaprej določiti ali izračunati.

VBA podpira dve vrsti konstrukcij zanke:

  1. Zanke s fiksnim številom ponovitev ( nasprotne zanke).
  2. Zanke z nedoločenim številom ponovitev ( pogojne zanke).

Za vse vrste ciklov se uporablja koncept telo zanke , ki definira blok stavkov, zaprtih med začetnimi in končnimi stavki zanke. Pokliče se vsaka ponovitev izvajanja stavkov telesa zanke ponovitev

Fiksni cikli

VBA ponuja dve nadzorni strukturi za organizacijo fiksne zanke: For ... Next (zanka s števcem) in For Every ... Next (zanka z oštevilčenjem).

Operater za ... Naprej To je tipična zanka števca, ki izvede določeno število ponovitev. Sintaksa stavka For...Next je:

Za<счетчик> = <начЗначение>to<конЗначение>

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

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

Primer uporabe operatorja For...Next.

Izpis 1. Za … Naslednji operator

NALOGA: Ustvarite program, ki od uporabnika prejme dve številki.

‘ Sešteje vsa števila v obsegu, ki ga določata ti dve številki, in nato

« prikaže nastali znesek.

Podvzorec7()

Dim i As Integer 'števec ciklov

Dim sStart 'začetna vrednost števca

Končna vrednost števca Dim sEnd

Dim sSum As Long 'končna vsota

sStart = InputBox(“Vnesite prvo številko:”)

sEnd = InputBox(“Vnesite drugo številko:”)

sVsota = 0

Za i = CInt(sStart) do CInt(sEnd)

sVsota = sVsota + i

Naprej i

MsgBox »Vsota števil od » & sStart & « do » & sEnd & « je: » & sSum

End Sub

Stavek zanke Za vsak...naprejspada v kategorijo operatorjev objektnega tipa, tj. velja predvsem za zbirke predmetov, kot tudi nizov . Telo zanke se izvede določeno število krat, kar ustreza številu elementov v matriki ali zbirki. Za vsak ... Naslednji format izjave:

Za vsakogar<элемент>notri<группа> <блок операторов>Naslednji [<элемент>]

Pogojne zanke (nedefinirane zanke)

Pogojne zanke se uporabljajo, ko je treba ponavljajoča se dejanja izvesti le pod določenimi pogoji. Število iteracij ni definirano in je na splošno lahko enako nič (predvsem za zanke s predpogojem). VBA razvijalcem ponuja več kontrolnih struktur za organiziranje pogojnih zank:

  • Štiri vrste Do..Loops, ki se razlikujejo po vrsti pogoja, ki se preverja, in času, ki je potreben za dokončanje tega preverjanja.
  • Neprekinjena zanka Medtem ko ... Wend.

Tipična je zanka Naredi, medtem ko... zanka s predpogojem. Pogoj se preveri, preden se izvede telo zanke. Cikel nadaljuje svoje delo, dokler ne<условие>se izvede (tj. ima vrednost True). Ker se preverjanje izvede na začetku, telo zanke morda ne bo nikoli izvedeno. Naredi medtem ... Oblika zanke:

Naredi Medtem<условие>

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

Zanka

Izpis 2. Naredi Medtem ko ... Zanka

NALOGA: Ustvarite program, ki zahteva uporabniški vnos

'poljubno zaporedje številk. Vnos je treba prekiniti

' šele potem, ko vsota vpisanih lihih števil preseže 100.

Podvzorec8()

Dim OddSum As Integer 'vsota lihih števil

Dim OddStr As String 'niz z lihimi števili

Dim Num 'za sprejem vnesenih številk

OddStr = “” ‘inicializacija izhodnega niza

OddSum = 0 'inicializiraj OddSum

Naredite Medtem ko OddSum< 100 ‘начало цикла

Num = InputBox(“Vnesite številko: “)

Če (Num Mod 2)<>0 Nato 'paritetno preverjanje

OddSum = OddSum + Num 'kopičenje vsote lihih števil

OddStr = OddStr & Num & ” ”

Konec Če

Zanka

'natisniti niz z lihimi števili

Poziv MsgBox:=”Lihe številke:” & OddStr

End Sub

Izjava Do...Loop Whilezasnovan za organizacijozanka s postpogojem. Pogoj se preveri, ko je bilo telo zanke izvedeno vsaj enkrat. Cikel nadaljuje svoje delo do<условие>ostaja res. Do ... Loop While Format:

naredi<блок операторов>Zanka Medtem<условие>

Izpis 3. Zanka s postpogojem

NALOGA: Ustvarite program za igro "Ugani število." Program mora biti naključen

' način za generiranje števila v območju od 1 do 1000, mora uporabnik

' ugani to številko. Program za vsako vneseno številko prikaže namig

' "več ali manj".

Podvzorec8()

Randomize Timer 'inicializira generator naključnih števil

Dim msg As String 'sporočilni niz

Dim SecretNumber kot dolgo, UserNumber kot različico

Začetek: SecretNumber = Round(Rnd * 1000) 'računalniško ustvarjeno število

UserNumber = Prazna številka, ki jo vnese uporabnik

Igrajte se

Izberite Case True

Case IsEmpty(UserNumber): msg = “Vnesite številko”

Case UserNumber > SecretNumber: msg = "Preveč!"

Uporabniška številka primera< SecretNumber: msg = “Слишком мало!”

Konec Izberite

UserNumber = InputBox(prompt:=msg, Title:=”Ugani številko”)

Loop While UserNumber<>SecretNumber

' pregled

Če je MsgBox(“Play again?”, vbYesNo + vbQuestion, “Ste uganili!”) = vbYes Potem

Pojdi na začetek

Konec Če

End Sub

Loops Do Until... Loop in Do... Loop Until so inverzije prej obravnavanih pogojnih zank. Na splošno delujejo podobno, le da se telo zanke izvede, če je pogoj napačen (tj.<условие>=False). Do ... Oblika zanke:

Naredite do<условие> <блок операторов>Zanka

Oblika zanke Do... Loop Until:

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

Zanka do<условие>

Praktična naloga:Prepišite programe v seznamih 10 in 11 z uporabo stavkov obrnjene zanke.

Loop While...Wend velja tudi za pogojne zanke. Ta operater je popolnoma skladen s strukturo zanke Do While.... Medtem ko ... Oblika zanke Wend:

Medtem<условие>

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

Wend

Posebnost tega operaterja je nezmožnost prisilna odpoved(prekinitev) telesa zanke (operator Exit Do ne deluje v zanki While ... Wend).

Prekinitev cikla

Za zgodnjo prekinitev iteracije in izhod iz zanke se uporabi stavek Exit. Ta operator je uporaben v kateri koli ciklični strukturi razen Medtem ko... Wend. Splošna sintaksa za uporabo Exit za prekinitev zanke je:

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

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

Izhod (Za | Naredi)

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

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

Ko se izvede stavek Exit, se zanka prekine in nadzor se prenese na stavek, ki sledi stavku<конец_цикла>. V telesu zanke je lahko več stavkov Exit.

Izpis 4. Prisilni izhod iz zanke

Podvzorec9()

Za i = 1 do 10000000

If i = 10 Then Exit For ‘ izhod iz zanke, ko števec doseže 10

Naslednji




Vrh