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:

  1. Cilpas ar fiksētu atkārtojumu skaitu ( cikli ar skaitītāju).
  2. 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




Tops