Nākamajam vba Excel pārejiet uz nākamo. Cilpas paziņojumi VBA. Projekts "Ienākumi no depozīta"
Pastāv situācijas, kad VBA programmai vairākas reizes pēc kārtas ir jāveic viena un tā pati darbību kopa (tas ir, vairākas reizes jāatkārto viens un tas pats koda bloks). To var izdarīt, izmantojot VBA cilpas.
"For" cilpas paziņojums programmā Visual Basic
Cilpas paziņojuma struktūra Priekš Visual Basic var organizēt vienā no diviem veidiem: kā cilpa Par … Tālāk vai kā cilpa Katram.
Cikls "Par...Next".
Cikls Par … Tālāk izmanto mainīgo, kas secīgi ņem vērtības no noteiktā diapazona. Ar katru mainīgā vērtības maiņu tiek veiktas darbības, kas ietvertas cilpas pamattekstā. To ir viegli saprast no vienkārša piemēra:
Ja i = 1 līdz 10 Kopā = Kopā + iArray(i) Nākamais i
Šajā vienkāršajā ciklā Par … Tālāk tiek izmantots mainīgais i, kas secīgi ņem vērtības 1, 2, 3, ... 10, un katrai no šīm vērtībām tiek izpildīts VBA kods cilpas iekšpusē. Tādējādi šī cilpa summē masīva elementus iArray mainīgajā Kopā.
Iepriekš minētajā piemērā cilpas pieauguma solis nav norādīts, lai palielinātu mainīgo i Noklusējuma pieaugums no 1 līdz 10 1 . Tomēr dažos gadījumos cilpai ir jāizmanto citas pieauguma vērtības. To var izdarīt ar atslēgvārdu solis, kā parādīts nākamajā vienkāršajā piemērā.
d = 0 līdz 10, darbība 0,1 dKopā = dKopā + d Nākamā d
Tā kā iepriekš minētajā piemērā pieauguma solis ir vienāds ar 0.1 , tad mainīgais dKopā katrai cilpas iterācijai ņem vērtības 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0.
Varat izmantot negatīvu vērtību, lai definētu cilpas soli VBA, piemēram:
Ja i = 10 līdz 1. solis -1 iArray(i) = i Nākamais i
Šeit ir pieaugums -1 , tātad mainīgais i ar katru cilpas atkārtojumu iegūst vērtības 10, 9, 8, ... 1.
Katrai cilpai
Cikls Katram kā cikls Par … Tālāk, bet tā vietā, lai atkārtotu skaitītāja mainīgā vērtību secību, cilpa Katram veic darbību kopu katram objektam no norādītās objektu grupas. Nākamajā piemērā, izmantojot cilpu Katram uzskaita visas pašreizējās Excel darbgrāmatas lapas:
Aptumšot wSheet kā darblapu katrai wSheet sadaļā Worksheets MsgBox "Atrasta lapa: " & wSheet.Name Next wSheet
Cilpas pārtraukuma paziņojums "Iziet uz"
Operators Iziet uz izmanto, lai pārtrauktu cilpu. Tiklīdz šis paziņojums tiek sastapts kodā, programma beidz cilpas izpildi un tūlīt pēc šīs cilpas pāriet uz priekšrakstu izpildi kodā. To var izmantot, piemēram, lai meklētu noteiktu vērtību masīvā. Lai to izdarītu, katrs masīva elements tiek apskatīts, izmantojot cilpu. Tiklīdz nepieciešamais elements ir atrasts, pārējais nav jāmeklē - cilpa tiek pārtraukta.
Operatora lietojumprogramma Iziet uz parādīts nākamajā piemērā. Šeit cilpa atkārtojas cauri 100 ierakstiem masīvā un salīdzina katru ar mainīgā vērtību dVal. Ja tiek atrasta atbilstība, cilpa pārtrauc:
Ja i = 1 līdz 100 Ja dValues(i) = dVal, tad IndexVal = i Iziet uz beigu, ja nākamais i
Veiciet cilpu programmā Visual Basic
Cikls Darīt kamēr izpilda koda bloku, līdz tiek izpildīts norādītais nosacījums. Tālāk ir sniegts procedūras piemērs Apakš, kurā ar cikla palīdzību Darīt kamēr Fibonači skaitļi, kas nepārsniedz 1000, tiek parādīti secīgi:
"Apakšprocedūra izvada Fibonači skaitļus, kas nepārsniedz 1000 Sub Fibonacci() Dim i As Integer" skaitītājs, kas norāda elementa pozīciju secībā Dim iFib As Integer "saglabā secības pašreizējo vērtību Dim iFib_Next As Integer "saglabā secības nākamā vērtība Dim iStep As Integer "saglabā nākamā pieauguma lielumu "inicializē mainīgos i un iFib_Next i = 1 iFib_Next = 0 "Do While cilpa tiks izpildīta, līdz "pašreizējā Fibonači skaitļa" vērtība pārsniegs 1000 Do Kamēr 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
Dotajā piemērā nosacījums iFib_Next< 1000 Pārbaudīts cikla sākumā. Tāpēc, ja pirmā vērtība iFib_Next Ja to būtu vairāk par 1000, tad cilpa nekad netiktu izpildīta.
Vēl viens veids, kā īstenot cilpu Darīt kamēr- novietojiet nosacījumu nevis cilpas sākumā, bet gan beigās. Šajā gadījumā cilpa tiks izpildīta vismaz vienu reizi neatkarīgi no tā, vai nosacījums ir izpildīts.
Shematiski šāds cikls Darīt kamēr ar nosacījumu, kas jāpārbauda beigās, izskatīsies šādi:
Veiciet ... Cikla, kamēr iFib_Next< 1000
Dariet līdz cilpai programmā Visual Basic
Cikls Darīt līdzļoti līdzīgs ciklam Darīt kamēr: koda bloks cilpas pamattekstā tiek izpildīts atkal un atkal, līdz tiek izpildīts norādītais nosacījums (nosacījuma izteiksmes rezultāts ir Taisnība). Nākamajā procedūrā Apakš izmantojot ciklu Darīt līdz izgūt vērtības no visām kolonnas šūnām A darblapu, līdz kolonnā ir tukša šūna:
IRow = 1 Do Til IsEmpty(Cells(iRow, 1)) "Pašreizējās šūnas vērtība tiek saglabāta masīvā dCellValues>dCellValues(iRow) = Cells(iRow, 1). Vērtība iRow = iRow + 1 Loop
Iepriekš minētajā piemērā nosacījums Ir tukšs (šūnas (iRinda, 1)) atrodas struktūras sākumā Darīt līdz, tāpēc cilpa tiks izpildīta vismaz vienu reizi, ja pirmā uzņemtā šūna nav tukša.
Tomēr, kā parādīts cilpas piemēros Darīt kamēr, dažās situācijās ir nepieciešams, lai cilpa tiktu izpildīta vismaz vienu reizi, neatkarīgi no nosacītās izteiksmes sākotnējā rezultāta. Šajā gadījumā nosacījuma izteiksme jāievieto cilpas beigās, piemēram:
Veiciet ... Apkopojiet līdz ir tukšs (šūnas (iRow, 1))
Cilpas paziņojumi
VBA Ir divi galvenie cilpu cilpu veidi ar skaitītāju (parametrisks) un cilpas ar nosacījumu (iterācija).
Cilpas ar skaitītāju izmanto gadījumos, kad ir nepieciešams veikt kādu darbību noteiktu skaitu reižu.
Nosacījumu cilpas tiek izmantotas, ja kāda darbība programmā ir jāatkārto, līdz tiek izpildīts noteikts nosacījums.
Cikli ar parametru Par … Tālāk
Cikla struktūra:
Priekš Loop_Parameter = Sākotnējā_vērtība Uz Galīgā_vērtība
[Solis solis]
Operatori
[izeja uz]
Nākamais [Cilpas_parametrs]
kur Par atslēgvārds VBA (no), apzīmē cikla sākumu;
cilpas_parametra mainīgais definēts kā cilpas skaitītājs;
Start_Value skaitlis, kas norāda cikla parametra sākotnējo vērtību;
Uz atslēgvārdu VBA (pirms) sadalīšana
Sākuma_vērtība un beigu_zināšanas;
End_Value skaitlis, kas norāda cilpas parametra vērtību,
Ar ko cikls beidzas;
Solis atslēgvārds VBA (solis), ko izmanto
Cilpas soļu uzdevumi, izvēles arguments;
Solis ir skaitlis, kas norāda cikla soli, t.i. vērtība, uz kuru
Palielina (vai samazina) parametra vērtību
Riteņojiet ik uz soļa. Šis skaitlis varētu būt
negatīvs;
Iziet uz Cikla priekšlaicīgas izejas operators (pēc izvēles);
Nākamais atslēgvārds VBA (nākamais) apzīmējot
Cikla beigas.
Darbs ar ciklu:
1. solis Vispirms tiek noteikts cilpas parametrs, un tiek aprēķinātas un saglabātas šī mainīgā sākuma un beigu vērtības.
2. darbība Cilpas parametram tiek piešķirta sākotnējā vērtība.
3. darbība Cilpas parametra sākuma vērtība tiek salīdzināta ar beigu vērtību.
Ja cilpas parametrs ir lielāks par beigu vērtību, programma nekavējoties iziet no cilpas un pāriet uz koda rindiņu, kas seko cilpai.
4. solis Tiek izpildīts cilpas korpuss.
5. solis Pēc cilpas pamatteksta izpildes cilpas parametram tiek piešķirta nākamā vērtība. Pārejiet uz 3. darbību.
Piezīme.
1. Ja tiek izmantots atslēgvārds solis , tad cikla parametrs mainās atbilstoši skaitlim, kas norādīts aiz šī vārda. Ja vārds solis trūkst, soļa vērtība ir vienāda ar vienu.
1. piemērs
Ja I = 0 līdz 10, 2. darbība (I vērtība palielināsies par 2)
2. Par...Nākamā cilpa var priekšlaicīgi pārtraukt, kad ir sasniegts kāds nosacījums. Lai to izdarītu, pareizajā cilpas vietā ir jānovieto operators Iziet uz .
2. piemērs
Dim S kā vesels skaitlis
Dim j Kā vesels skaitlis
S=2
Ja j = 1 līdz 10
S = S + j
Ja S > 6 Tad
Iziet uz (Iziet no cilpas, ja vērtība S > 6)
Beigt, ja
Nākamais j
MsgBox(S)
Nosacījuma cilpas (iteratīvas)
Ja kāda darbība (vairākas darbības) ir jāveic vairākas reizes, bet nav iepriekš zināms, cik reizes un tas ir atkarīgs no kāda nosacījuma, tad jāizmanto cilpa ar priekšnosacījumu vai pēcnosacījumu.
VBA ir divi galvenie cikli DO...CILP ar nosacījumu, kas ievadīts pēc atslēgvārda Kamēr , un ar nosacījumu, ko ievada atslēgvārds Līdz plkst . Abi var būt priekšnosacījums vai pēcnosacījums.
Sintakse:
kur atslēgvārds (darīt);
Kamēr atslēgvārds (vēl);
Līdz plkst atslēgvārds (ja vien);
cilpa atslēgvārds, kas norāda cikla beigas;
<условие>loģiskā izteiksme, kuras patiesums tiek pārbaudīts
Katras cilpas korpusa izpildes sākumā;
<тело_цикла>patvaļīga operatoru secība;
Darīt...Būvniecības laikā skan: dariet, kamēr nosacījums ir izpildīts. Dizainā Darīt… Kamēr Par
Do… Līdz konstrukcija skan: turpiniet darīt, līdz nosacījums ir izpildīts. Dizainā Dariet… Līdz lai palielinātu soli, jums vajadzētu rakstīt īpašu operatoru, jo tajā, atšķirībā no dizaina Priekš , tas netiek darīts automātiski.
Stāvoklis rakstīts aiz atslēgvārda Līdz plkst , tiek pārbaudīts katras iterācijas beigās (pēc cilpas korpusa izpildes). Ņemiet vērā, ka šeit tas nedarbojas gluži tāpat kā cilpā Kamēr . Ja nosacījums ir patiess ( Taisnība ), tad cilpa beidzas. Ja nosacījums nav izpildīts (ir nepatiess Nepatiesi ), tad cilpas pamatteksts tiek izpildīts vēlreiz.
1. piemērs
Problēmas formulēšana. Aprēķiniet ierobežotas sērijas summu, izmantojot apakšprogrammas procedūru.
Uzdevuma izpildes tehnoloģija:
1. Sākotnējie dati: es Z
Rezultāts: S R .
2. Ierakstiet projekta standarta modulī šādu lietotāja procedūru, izmantojot cilpu ar priekšnosacījumu kamēr:
subsumma()
Dim S kā vesels skaitlis
Dim i As Integer
S=0
i = 1
Dari, kamēr i<= 10
S=S+i^2
i = i + 1
cilpa
MsgBox(S)
beigu apakš
3. Ievadiet projekta standarta modulī šādu lietotāja procedūru, izmantojot cilpu ar priekšnosacījumu Līdz:
subsumma()
Dim S kā vesels skaitlis
Dim i As Integer
S=0
i = 1
Darīt līdz i > 10
S=S+i^2
i = i + 1
cilpa
MsgBox(S)
beigu apakš
4 Ievadiet projekta standarta modulī šādu lietotāja procedūru, izmantojot cilpu ar pēcnosacījumu kamēr:
subsumma()
Dim S kā vesels skaitlis
Dim i As Integer
S=0
i = 1
S=S+i^2
i = i + 1
Cilpa, kamēr i<= 10
MsgBox(S)
beigu apakš
5 Ierakstiet projekta standarta modulī šādu lietotāja procedūru, izmantojot cilpu ar pēcnosacījumu Līdz:
subsumma()
Dim S kā vesels skaitlis
Dim i As Integer
S=0
i = 1
S=S+i^2
i = i + 1
Cilpa līdz i > 10
MsgBox(S)
beigu apakš
Var rasties situācija, kad koda bloks ir jāizpilda vairākas reizes. Parasti priekšraksti tiek izpildīti secīgi: vispirms tiek izpildīts pirmais priekšraksts funkcijā, tad otrais utt.
Programmēšanas valodas nodrošina dažādas vadības struktūras, kas nodrošina sarežģītākus izpildes ceļus.
Cilpas priekšraksts ļauj izpildīt paziņojumu vai paziņojumu grupu vairākas reizes. Tālāk ir sniegts vispārīgs cilpas priekšraksta skats VBA.
VBA nodrošina šādus cilpu veidus, lai apstrādātu cilpas prasības. Noklikšķiniet uz tālāk norādītajām saitēm, lai pārbaudītu to informāciju.
cilpai
For cilpa ir atkārtojuma kontroles struktūra, kas ļauj izstrādātājam efektīvi uzrakstīt cilpu, kas jāizpilda noteiktu skaitu reižu.
Sintakse
Tālāk ir norādīta for cilpas sintakse VBA.
Skaitītājam = sākums Līdz beigām .... .... Tālāk
plūsmas diagramma
Tālāk ir norādīta vadības plūsma cilpas režīmā -
- Pirmais solis tiek veikts. Šis solis ļauj inicializēt visus cilpas vadības mainīgos un palielināt soļu skaitītāja mainīgo.
- Otrkārt, tiek novērtēts stāvoklis. Ja tā ir patiesa, tiek izpildīts cilpas pamatteksts. Ja tas ir nepatiess, cilpas pamatteksts netiek izpildīts un vadības plūsma turpinās uz nākamo paziņojumu tūlīt pēc For cilpas.
- Pēc cilpas for izpildes vadības plūsma pāriet uz nākamo priekšrakstu. Šis paziņojums ļauj atjaunināt visus cilpas vadības mainīgos. Tas tiek atjaunināts, pamatojoties uz soļu skaitītāja vērtību.
- Tagad stāvoklis tiek vēlreiz novērtēts. Ja tā ir taisnība, cilpa tiek izpildīta un process tiek atkārtots (cilpas pamatteksts, pēc tam solis tiek palielināts un pēc tam vēlreiz nosacījums). Kad nosacījums kļūst nepatiess, cilpa For beidzas.
piemērs
Pievienojiet pogu un pievienojiet šādu funkciju.
Private Sub Constant_demo_Click() Aptumšot a As Integer a = 10 Ja i = 0 uz 2. darbību MsgBox "Vērtība ir i ir: " & i Next End Sub
Kad iepriekš minētais kods tiek apkopots un izpildīts, tas rada šādu rezultātu.
Vērtība ir i: 0
Vērtība i ir: 2
Vērtība i ir: 4
Vērtība i ir: 6
Vērtība ir i: 8
Vērtība ir i: 10
Vairākas reizes izpilda paziņojumu secību un saīsina kodu, kas kontrolē cilpas mainīgo.
par...cilpu
Katrai cilpai tiek izmantots, lai izpildītu paziņojumu vai paziņojumu grupu katram masīva vai kolekcijas elementam.
Katrai cilpai ir līdzīga For Loop; tomēr cilpa tiek izpildīta katram masīva vai grupas elementam. Tāpēc soļu skaitītājs šajā cilpas tipā nepastāvēs. To galvenokārt izmanto ar masīviem vai objektu kontekstā failu sistēma strādāt rekursīvi.
Sintakse
Tālāk ir norādīta katrai cilpai VBA sintakse.
Katram elementam grupā .... Tālāk
piemērs
Private Sub Constant_demo_Click() "augļi ir masīvs augļi = Array("ābols", "apelsīns", "ķirši") Dim augļu nosaukumi Kā variants "iterējot, izmantojot katrai cilpai. Katrai vienībai augļos augļu nosaukumi = augļu nosaukumi & vienums & Chr(10) Nākamais MsgBox augļu nosaukumi Beigas Apakš
Kad iepriekš minētais kods tiek izpildīts, tas izdrukā visus augļu nosaukumus ar vienu elementu katrā rindā.
ābolu
apelsīns
ķirsis
Tas tiek izpildīts, ja grupā ir vismaz viens elements, un tas tiek atkārtots katram elementam grupā.
kamēr..wend cilpa
Ciklā While While... Wend, ja nosacījums ir True, visi priekšraksti tiek izpildīti, līdz tiek atrasts Wend atslēgvārds.
Ja nosacījums ir nepatiess, cilpa beidzas un vadīkla pāriet uz nākamo paziņojumu pēc atslēgvārda Wend.
Sintakse
Tālāk ir norādīta cilpas While..Wend sintakse VBA.
Kamēr nosacījums(-i) ... Wend
plūsmas diagramma
piemērs
Privāts Sub Constant_demo_Click() Dim skaitītājs: skaitītājs = 10 kamēr skaitītājs< 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
Kad iepriekš minētais kods tiek izpildīts, tas ziņojuma laukā izvadīs sekojošo.
Pašreizējā skaitītāja vērtība ir: 11
Pašreizējā skaitītāja vērtība ir: 12
Pašreizējā skaitītāja vērtība ir: 13
Pašreizējā skaitītāja vērtība ir: 14
Pašreizējā skaitītāja vērtība ir: 15
Tas pārbauda stāvokli pirms cilpas korpusa izpildes.
darīt..kamēr cilpa
Cilpa do...while tiek izmantota, ja vēlamies atkārtot paziņojumu kopu, kamēr nosacījums ir patiess. Stāvokli var pārbaudīt cilpas sākumā vai cilpas beigās.
Sintakse
Tālāk ir norādīta cilpas Do...While sintakse VBA.
Darīt, kamēr nosacījums ... ... Cilpa
plūsmas diagramma
piemērs
Nākamajā piemērā tiek izmantota cilpa Do ... while, lai pārbaudītu statusu cilpas sākumā. Paziņojumi cilpas iekšpusē tiek izpildīti tikai tad, ja nosacījums kļūst par True.
Privāts Sub Constant_demo_Click() Do While i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub
i vērtība ir: 1
I vērtība ir: 2
I vērtība ir: 3
I vērtība ir: 4
I vērtība ir: 5
Alternatīva sintakse
Ir arī alternatīva sintakse cilpai Do ... while, kas pārbauda stāvokli cilpas beigās. Galvenā atšķirība starp šīm divām sintaksēm ir izskaidrota nākamajā piemērā.
Veiciet ... ... Apkopojiet, kamēr nosacījums
piemērs
Nākamajā piemērā tiek izmantota cilpa Do ... while, lai pārbaudītu statusu cilpas beigās. Paziņojumi cilpas iekšpusē tiek izpildīti vismaz vienu reizi, pat ja nosacījums ir False.
Privāts Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "I vērtība ir: " & i cilpa, kamēr i< 3 "Condition is false.Hence loop is executed once. End Sub
Kad iepriekš minētais kods tiek izpildīts, tas ziņojuma lodziņā izdrukā šādu izvadi.
I vērtība ir: 11
darīt..Kamēr paziņojumi tiks izpildīti tik ilgi, kamēr nosacījums ir True. (t.i.) Cilpa ir jāatkārto, līdz nosacījums ir False.
darīt..intil cilpa
Do... līdz cilpa netiks izmantota, ja vēlamies atkārtot paziņojumu kopu, kamēr nosacījums ir nepatiess. Stāvokli var pārbaudīt cilpas sākumā vai cilpas beigās.
Sintakse
Tālāk ir norādīta cilpas Do..Until sintakse VBA.
Darīt Līdz nosacījumam ... ... Cilpa
plūsmas diagramma
piemērs
Nākamajā piemērā tiek izmantots Do... Before Loop, lai pārbaudītu nosacījumu cilpas sākumā. Paziņojumi cilpas iekšpusē tiek izpildīti tikai tad, ja nosacījums ir nepatiess. Tas iziet no cilpas, kad nosacījums kļūst patiess.
Private Sub Constant_demo_Click() i = 10 Do Until i>15 "Nosacījums ir False.Tāpēc tiks izpildīta cilpa i = i + 1 msgbox ("I vērtība ir: " & i) Cikla beigu apakšgrupa
Kad iepriekš minētais kods tiek izpildīts, tas ziņojuma lodziņā izdrukā šādu izvadi.
I vērtība ir: 11
I vērtība ir: 12
I vērtība ir: 13
I vērtība ir: 14
I vērtība ir: 15
I vērtība ir: 16
Alternatīva sintakse
Ir arī alternatīva Do ... Before Loop sintakse, kas pārbauda nosacījumu cilpas beigās. Galvenā atšķirība starp šīm divām sintaksēm ir izskaidrota ar šādu piemēru.
Vai ... ... Cilpa līdz nosacījumam
plūsmas diagramma
piemērs
Nākamajā piemērā tiek izmantots Do... Before Loop, lai pārbaudītu nosacījumu cilpas beigās. Cilpas iekšējie paziņojumi tiek izpildīti vismaz vienu reizi, pat ja nosacījums ir True.
Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "I vērtība ir: " & i Loop Until i more15 "Nosacījums ir True.Tāpēc cilpa tiek izpildīta vienreiz. Beigt apakšā
Kad iepriekš minētais kods tiek izpildīts, tas ziņojuma lodziņā izdrukā šādu izvadi.
I vērtība ir: 11
do..Līdz paziņojumi tiks izpildīti tik ilgi, kamēr nosacījums ir False. (t.i.) Cilpa ir jāatkārto, līdz nosacījums ir patiess.
Cilpas kontroles ieraksti
Cilpas vadības paziņojumi maina izpildi no to parastās secības. Kad izpilde ir ārpus darbības jomas, visi pārējie cilpas priekšraksti netiek izpildīti.
Kontroles paziņojums un apraksts
Operatora izeja
Izeja for tiek izmantota, ja mēs vēlamies iziet no For Loop, pamatojoties uz noteiktiem kritērijiem. Kad tiek izpildīts Exit For, vadība tiek pārsūtīta uz nākamo priekšrakstu tūlīt pēc For Loop.
Sintakse
Tālāk ir norādīta VBA paziņojuma Exit For State sintakse.
plūsmas diagramma
piemērs
Nākamajā piemērā tiek izmantota opcija Exit For . Ja skaits sasniedz 4, For Loop beidzas un kontrole pāriet uz nākamo paziņojumu tūlīt pēc For Loop.
Private Sub Constant_demo_Click() Aptumšot a Kā veselu skaitli a = 10 Ja i = 0 uz 2. soli "i ir skaitītāja mainīgais, un tas tiek palielināts par 2 MsgBox ("Vērtība ir i ir: " & i) Ja i = 4, tad i = i * 10 "Tas tiek izpildīts tikai tad, ja i=4 MsgBox ("Vērtība ir i ir: " & i) Exit For "Iziet, ja i=4 Beigas Ja Nākamā Beigas Apakš
Kad iepriekš minētais kods tiek izpildīts, tas ziņojuma lodziņā izdrukā šādu izvadi.
Vērtība ir i: 0
Vērtība i ir: 2
Vērtība i ir: 4
Vērtība ir i: 40
Pabeidz For cilpas priekšrakstu un pārsūta izpildi uz priekšrakstu tūlīt pēc cilpas
Iziet Do
Exit Do paziņojums tiek izmantots, ja mēs vēlamies iziet no Do Loop, pamatojoties uz noteiktiem kritērijiem. To var izmantot gan Do Do ... While un Do ... Pirms cilpas.
Kad tiek izpildīts Exit Do, vadība pāriet uz nākamo paziņojumu tūlīt pēc Do Loop.
Sintakse
Tālāk ir norādīta VBA priekšraksta Exit Do sintakse.
piemērs
Nākamajā piemērā tiek izmantota opcija Exit Do . Ja skaitītājs sasniedz 10, Do izvades līnija beidzas un kontrole pāriet uz nākamo paziņojumu tūlīt pēc For Loop.
Privāts Sub Constant_demo_Click() i = 0 Darīt, kamēr i<= 100 If i >10 Tad iziet Do " Cilpa iziet, ja i>10 beigas, ja MsgBox ("I vērtība ir: " & i) i = i + 2 cilpas beigu apakšgrupa
Kad iepriekš minētais kods tiek izpildīts, tas ziņojuma lodziņā izdrukā šādu izvadi.
i vērtība ir: 0
I vērtība ir: 2
I vērtība ir: 4
I vērtība ir: 6
I vērtība ir: 8
I vērtība ir: 10
Pabeidz Do While priekšrakstu un pārsūta izpildi uz priekšrakstu tūlīt pēc cilpas
Laboratorijas darbi par programmēšanas pamatiem
2.1. Analītiski attēloto funkciju tabula
un saplūst tuvumā
Darba mērķis
· Teorētisko zināšanu nostiprināšana par zarojošo un ciklisko struktūru organizācijas pamatiem.
· Praktisku programmēšanas iemaņu apgūšana, izmantojot zarojošās un cikliskās struktūras Visual Basic sistēmā.
VB ir trīs veidu cilpas paziņojumi:
skaitīšanas cikls: Par...Līdz...Nākamais
Cilpas ar priekšnosacījumiem: Do While...Cilpa, Do Until...Cilpa, While...WEend
Cilpas ar pēcnosacījumiem: Do...Cilpa kamēr, Do...Cilpa līdz.
Skaitīšanas cikls — ļauj pārslēgt paziņojumu kopu noteiktu skaitu reižu. Tās sintakse ir šāda:
Priekš skaitītājs = Sākt Uz beigas
[operatoriem]
[operatoriem]
Nākamais[ skaitītājs]
Parametrs skaitītājs ir skaitlisks mainīgais (vesels skaitlis, reāls vai datums, variants, valūta), kas tiek automātiski palielināts pēc katras iterācijas. Sākotnējā vērtība skaitītājs vienāds ar parametru Sākt, un pēdējais parametrs ir beigas. Ja nav norādīts, tad solis tiek uzskatīts par vienādu ar 1, soļa vērtību var mainīt. Tas var būt pozitīvs vai negatīvs skaitlis.
Do….Cilpai ir četras sintaktiskās konstrukcijas:
Paziņojumi starp Do...Loop atslēgvārdiem tiek izpildīti noteiktu reižu skaitu atkarībā no nosacījuma. Piemēram, nākamajā programmas fragmentā, kad C = 100, nosacījums tiks izpildīts un cilpa tiks ievadīta. Cilpas iekšpusē tiek izsaukta procedūra un C vērtība samazinās par 1. Pēc tam vēlreiz tiek pārbaudīts nosacījums (C > 0) un vēlreiz izpildīti cilpas priekšraksti (kopā tiks izpildīti 100 reizes), līdz C = 0. Kad nosacījums C > 0 kļūst nepatiess un cilpa apstājas.
Dariet, kamēr C > 0
Tas pats programmas fragments, kas izpildīts, izmantojot priekšnosacījuma cilpu 2. sintaksē:
Šajā gadījumā cilpa tiek izpildīta, kamēr nosacījums ir False, atšķirībā no iepriekšējā gadījuma, tas ir, tā turpinās pirms tam nosacījuma izpilde C = 0.
Cilpas priekšraksti 3. un 4. sintaksē ir ļoti līdzīgi pirmajiem diviem, izņemot nosacījumu Nav tiek novērtēts, līdz cilpa ir izpildīta vismaz vienu reizi.
Šo cilpu sintaksēs var izmantot beznosacījuma izejas no cilpas Exit For un Exit Do operatorus, kas ļauj pārsūtīt vadību operatoram aiz cilpas. Piemēram, nākamajā programmas fragmentā, ja C sākotnējā vērtība ir >50, tad cilpa nekavējoties apstāsies.
Dariet līdz C<= 0
MsgBox "Sākt. vērtība ir lielāka par atļauto”, “Ievades kļūda”
Cilpa While...Wend tika izmantota sākotnējās Visual Basic versijās. Tās sintakse ir šāda:
Kamēr<условие>
<Операторы>
Atšķirībā no Do..Loop cilpai While ..Wend nav otrās opcijas, kurā stāvokļa pārbaude tiek veikta cilpas beigās. Turklāt tam nav tāda cilpas izejas paziņojuma kā Exit Do.
VBA. Ciklu organizēšana.
Cikla paziņojumi tiek izmantoti, lai noteiktu darbību vai darbību grupas izpildi atkārtotu noteiktu skaitu reižu. Atkārtojumu (cilpas iterāciju) skaitu var iepriekš definēt vai aprēķināt.
VBA atbalsta divu veidu cilpas konstrukcijas:
- Cilpas ar fiksētu atkārtojumu skaitu ( cikli ar skaitītāju).
- Cilpas ar nenoteiktu atkārtojumu skaitu ( nosacījuma cilpas).
Visu veidu cikliem tiek izmantots jēdziens cilpas korpuss A, kas definē paziņojumu bloku, kas atrodas starp cilpas sākuma un beigu priekšrakstiem. Katrs apgalvojumu atkārtojums cilpas pamattekstā tiek izsaukts iterācija .
Fiksētie cikli
VBA nodrošina divas kontroles struktūras fiksētas cilpas organizēšanai: For... Next (cilpa ar skaitītāju) un For Every... Next (cilpa ar uzskaitījumu).
Par… Nākamajam paziņojumam tā ir tipiska cilpa ar skaitītāju, kas veic noteiktu iterāciju skaitu. For… Nākamā priekšraksta sintakse ir šāda:
Priekš<счетчик> = <начЗначение>Tas<конЗначение>
<блок операторов>
Nākamais[<счетчик>]
Paziņojuma For … Next izmantošanas piemērs.
Uzskaitījums 1. Par … Nākamais paziņojums
‘ MĒRĶIS: uzrakstiet programmu, kas no lietotāja saņem divus skaitļus.
“ Saskaita visus skaitļus diapazonā, ko dod šie divi skaitļi, un pēc tam
‘ Parāda iegūto summu.
Apakšparaugs7()
Dim i As Integer ‘cilpu skaitītājs
Dim sStart ‘sākuma skaitītāja vērtība
Dim sEnd ' skaitītāja beigu vērtība
Dim sSum As Long ‘rezultātā summa
sStart = InputBox("Ievadiet pirmo numuru:")
sEnd = InputBox("Ievadiet otro numuru:")
sSum = 0
Ja i = CInt(sStart) To CInt(sEnd)
sSum = sSum + i
Nākamais i
MsgBox “Ciparu summa no ” & sStart & ” līdz ” & sEnd & ” ir: ” & sSum
beigu apakš
Katram … nākamā cikla paziņojumampieder objektu tipa operatoru kategorijai, t.i. galvenokārt attiecas uz kolekcijām objektus, kā arī masīvus . Cilpas pamatteksts tiek izpildīts noteiktu reižu skaitu, kas atbilst elementu skaitam masīvā vai kolekcijā. For Every… Nākamā paziņojuma formāts ir šāds:
Katram<элемент>In<группа> <блок операторов>Nākamais[<элемент>]
Nosacījuma cilpas (nenoteiktas cilpas)
Nosacījuma cilpas tiek izmantotas, ja atkārtotas darbības ir jāveic tikai noteiktos apstākļos. Iterāciju skaits nav definēts un vispārīgā gadījumā var būt vienāds ar nulli (jo īpaši cilpām ar priekšnosacījumu). VBA piedāvā izstrādātājiem vairākas kontroles struktūras nosacījumu cilpu organizēšanai:
- Četru veidu cilpas Do..Loop, kas atšķiras ar pārbaudāmā nosacījuma veidu un šīs pārbaudes izpildes laiku.
- Nepārtraukts kamēr … cilpa.
Darīt, kamēr... Cilpa — tipiski cilpa ar priekšnosacījumu. Nosacījums tiek pārbaudīts, pirms tiek izpildīts cilpas pamatteksts. Cikls turpina savu darbu līdz tam<условие>tiek izpildīts (t.i., ir patiess). Tā kā pārbaude tiek veikta sākumā, cilpas pamattekstu var nekad izpildīt. Cilpas Do While… formāts:
Darīt kamēr<условие>
<блок операторов>
cilpa
Listing 2. Do While … Loop
MĒRĶIS: uzrakstiet programmu, kas pieņem lietotāja ievadi
‘patvaļīga skaitļu secība. Ieeja ir jāpārtrauc
tikai pēc tam, kad ievadīto nepāra skaitļu summa pārsniedz 100.
Apakšparaugs8()
Dim OddSum kā vesels skaitlis
Dim OddStr As String 'virkne ar nepāra skaitļiem
Dim Num, lai pieņemtu ievadītos skaitļus
OddStr = "" 'izvades virknes inicializācija
OddSum = 0 ‘OddSum summas inicializācija
Darīt, kamēr OddSum< 100 ‘начало цикла
Skaitlis = InputBox ("Ievadiet numuru: ")
Ja (2. mod.)<>0 Tad “vienmērīga paritāte”.
OddSum = OddSum + Skaitlis ‘nepāra skaitļu summas uzkrāšanās
OddStr = OddStr & Skaitlis & ”
Beigt, ja
cilpa
‘izvadiet virkni ar nepāra skaitļiem
MsgBox prompt:=”Nepāra skaitļi: ” & OddStr
beigu apakš
Do...Cilpas kamēr paziņojumsparedzēts organizēšanaicilpa ar pēcnosacījumu. Nosacījums tiek pārbaudīts pēc tam, kad cilpas pamatteksts ir izpildīts vismaz vienu reizi. Cikls turpinās līdz<условие>paliek patiess. Do...Cilpas kamēr formāts:
Dariet<блок операторов>cilpa, kamēr<условие>
Saraksts 3. Cilpa ar pēcnosacījumu
‘ MĒRĶIS: izveidojiet programmu spēlei “Uzmini numuru”. Programmai jābūt nejauši
Lai ģenerētu skaitli diapazonā no 1 līdz 1000, lietotājam tas ir jādara
‘Uzmini šo skaitli. Programma parāda mājienu par katru ievadīto numuru.
' "vairāk vai mazāk".
Apakšparaugs8()
Randomize Timer — nejaušo skaitļu ģeneratora inicializācija
Dim msg As String ‘ ziņojuma virkne
Dim SecretNumber Tik ilgi, UserNumber kā variants
Sākt: SecretNumber = Round(Rnd * 1000)' datora ģenerēts numurs
UserNumber = Tukšs' lietotāja ievadītais numurs
Do' spēle
Izvēlieties True
Case IsEmpty(UserNumber): msg = "Lūdzu, ievadiet numuru"
Case UserNumber > SecretNumber: msg = "Pārāk daudz!"
Lieta UserNumber< SecretNumber: msg = “Слишком мало!”
Beigu atlase
UserNumber = InputBox(prompt:=msg, Title:="Uzmini numuru")
Cilpa, kamēr lietotāja numurs<>slepenais numurs
'pārbaude
Ja MsgBox ("Vai vēlaties spēlēt vēlreiz?", vbYesNo + vbQuestion, "Tu uzminēji pareizi!") = vbYes Tad
Iet uz sākumu
Beigt, ja
beigu apakš
Darīt līdz… cilpa un darīt… cilpa līdz cilpām ir iepriekš uzskatīto nosacījumu cilpu inversijas. Kopumā tie darbojas līdzīgi, izņemot to, ka cilpas pamatteksts tiek izpildīts nepatiesā stāvoklī (t.i.<условие>=Nepatiesi). Cilpas Darīt līdz... formāts ir šāds:
Darīt līdz<условие> <блок операторов>cilpa
Cilpas Do... Loop Until formāts ir:
<блок операторов>
Cilpa līdz<условие>
Praktiskais uzdevums:Pārrakstiet programmas 10. un 11. sarakstā, izmantojot apgrieztās cilpas paziņojumus.
Kamēr Loop ... Wend attiecas arī uz nosacījumu cilpām. Šis operators pilnībā atbilst Do While … Loop struktūrai. Cilpas While… Wend formāts ir šāds:
Kamēr<условие>
<блок операторов>
Wend
Šī operatora atšķirīga iezīme ir neiespējamība piespiedu izbeigšana(pārtraukumi) cilpas pamattekstā (Iziet Do paziņojums nedarbojas cilpā While ... Wend).
Cilpas pārtraukums
Paziņojums Exit tiek izmantots, lai beigtu iterāciju un izietu no cikla. Šis apgalvojums ir piemērojams jebkurā cikliskā struktūrā, izņemot While ... Wend. Vispārējā sintakse, lai izmantotu Exit, lai pārtrauktu cilpu, ir:
<начало_цикла>
[<блок операторов1>]
Iziet (par | Darīt)
[<блок операторов2>]
<конец_цикла>
Kad tiek izpildīts paziņojums Exit, cilpa tiek pārtraukta un vadība tiek nodota priekšrakstam, kas seko paziņojumam<конец_цикла>. Cilpas pamattekstā var būt vairāki Exit priekšraksti.
Uzskaitījums 4. Piespiedu cilpas izeja
Apakšparaugs9()
Ja i = 1 līdz 10000000
Ja i = 10, tad Exit For ' izejiet no cilpas, kad skaitītājs sasniedz 10
Nākamais