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 znova 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 sadja 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:
- Zanke s fiksnim številom ponovitev ( nasprotne zanke).
- 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 dejanja izvajati samo 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 izvaja 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) telo zanke (Stavek 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