A következő vba excelhez lépjen a következőre. Loop utasítások VBA-ban. Projekt "Betétbevétel"

Vannak helyzetek, amikor egy VBA-programnak ugyanazt a műveletsort többször egymás után végre kell hajtania (vagyis többször meg kell ismételnie ugyanazt a kódblokkot). Ezt VBA hurkok segítségével lehet megtenni.

Loop utasításhoz a Visual Basicben

Loop utasítás szerkezete Mert a Visual Basicben kétféle formában szervezhető: ciklusként A… Továbbra vagy mint egy ciklus Az egyes.

Ciklus "A következőre..."

Ciklus A… Továbbra olyan változót használ, amely szekvenciálisan veszi az értékeket egy adott tartományból. A változó értékének minden változásával a ciklus törzsében szereplő műveletek végrehajtásra kerülnek. Ez könnyen érthető egy egyszerű példából:

Ha i = 1-től 10-ig Összesen = Összesen + iArray(i) Következő i

Ebben az egyszerű hurokban A… Továbbra változót használjuk én, amely egymás után felveszi az 1, 2, 3, ... 10 értékeket, és ezeknek az értékeknek mindegyikére végrehajtódik a cikluson belüli VBA-kód. Így ez a ciklus összegzi a tömb elemeit iArray változóban Teljes.

A fenti példában a hurok növekedési lépése nincs megadva, ezért a változó növeléséhez én 1-től 10-ig az alapértelmezett a növekmény 1 . Bizonyos esetekben azonban különböző növekményértékeket kell használni a hurokhoz. Ezt a kulcsszó használatával lehet megtenni Lépés, amint azt a következő egyszerű példa mutatja.

d = 0-tól 10-ig 0.1 lépés dÖssz = dÖssz + d Következő d

Mivel a fenti példában a növekmény lépése a következőre van állítva 0.1 , majd a változót dÖsszesen a ciklus minden ismétléséhez 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0 értékeket vesz fel.

A huroklépés meghatározásához a VBA-ban negatív értéket használhat, például így:

Ha i = 10-től 1-hez lépés -1 iArray(i) = i Következő i

Itt van a növekmény lépése -1 , tehát a változó én a ciklus minden ismétlésével 10, 9, 8, ... 1 értékeket vesz fel.

Minden hurokhoz

Ciklus Az egyes ciklusnak tűnik A… Továbbra, hanem ahelyett, hogy végigpörgetné a számlálóváltozó értéksorát Az egyes műveleteket hajt végre minden egyes objektumhoz egy meghatározott objektumcsoportban. A következő példában hurkot használva Az egyes Felsorolja az aktuális Excel-munkafüzet összes lapját:

Dim wSheet munkalapként minden wSheet a Worksheetsben MsgBox "Sheet Found: " & wSheet.Name Next wSheet

Kilépés a hurokmegszakítás operátorból

Operátor Kilépés erre: a ciklus megszakítására szolgál. Amint ez az utasítás megjelenik a kódban, a program befejezi a ciklus végrehajtását, és közvetlenül a ciklus után végrehajtja a kódban található utasításokat. Ez használható például egy adott érték keresésére egy tömbben. Ehhez használjon egy ciklust a tömb egyes elemeinek áttekintésére. Ha megtalálta a kívánt elemet, nem kell átnézni a többit - a ciklus megszakad.

Kezelői alkalmazás Kilépés erre: a következő példában mutatjuk be. Itt a ciklus 100 tömbbejegyzésen keresztül hurkol, és mindegyiket összehasonlítja a változó értékével dVal. Ha talál egyezést, a ciklus megszakad:

Ha i = 1-től 100-ig Ha dÉrtékek(i) = dVal, akkor IndexVal = i Kilépés a végére, ha következő i

Végezze el a While Loop műveletet a Visual Basicben

Ciklus Csinálni, miközben kódblokkot hajt végre, amíg egy adott feltétel teljesül. A következő példa az eljárásra Alatti, amelyben egy hurok segítségével Csinálni, miközben Az 1000-et meg nem haladó Fibonacci-számok sorban jelennek meg:

"A Sub eljárás 1000-nél nem nagyobb Fibonacci számokat nyomtat ki Sub Fibonacci() Dim i As Integer "egy számláló, amely jelzi egy elem pozícióját a Dim iFib As Integer sorozatban "tárolja a sorozat aktuális értékét Dim iFib_Next As Integer "tárolja a a sorozat következő értéke Dim iStep As Integer "tárolja a következő növekmény méretét "inicializálja az i és iFib_Next változókat i = 1 iFib_Next = 0 "a Do While ciklus addig hajtódik végre, amíg az "aktuális Fibonacci szám értéke nem haladja meg az 1000 Do értéket Míg az 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

A megadott példában a feltétel iFib_Next< 1000 a ciklus elején ellenőrizni kell. Ezért, ha az első érték iFib_Next Ha több, mint 1000, akkor a ciklus még egyszer sem kerül végrehajtásra.

A hurok megvalósításának másik módja Csinálni, miközben– a feltételt ne a ciklus elejére, hanem a végére helyezzük. Ebben az esetben a ciklus legalább egyszer végrehajtásra kerül, függetlenül attól, hogy a feltétel igaz-e.

Sematikusan egy ilyen ciklus Csinálni, miközben a végén a feltétel ellenőrzésével így fog kinézni:

Do...Loop While iFib_Next< 1000

Végezze el az Until Loop műveletet a Visual Basicben

Ciklus Tedd Amíg nagyon hasonlít egy ciklushoz Csinálni, miközben: A ciklus törzsében lévő kódblokk újra és újra lefut, amíg a megadott feltétel teljesül (a feltételes kifejezés eredménye Igaz). A következő eljárásban Alatti hurok segítségével Tedd Amíg kivonja az értékeket egy oszlop összes cellájából A munkalapot, amíg üres cellát nem talál az oszlopban:

IRow = 1 Do Til IsEmpty(Cells(iRow, 1)) "Az aktuális cella értéke a dCellValues ​​tömbben van tárolva. dCellValues(iRow) = Cells(iRow, 1). Value iRow = iRow + 1 Loop

A fenti példában a feltétel Üres (Cellák (iRow, 1)) a szerkezet elején található Tedd Amíg, ezért a ciklus legalább egyszer végrehajtásra kerül, ha az első cella nem üres.

Azonban, amint az a hurokpéldákban látható Csinálni, miközben, bizonyos helyzetekben azt szeretné, hogy a ciklus legalább egyszer végrehajtásra kerüljön, függetlenül a feltételes kifejezés kezdeti eredményétől. Ebben az esetben a feltételes kifejezést a ciklus végére kell helyezni, így:

Csináljon... Hurok az ürességig (Cellák(iRow, 1))

Loop kijelentések

VBA-ban A ciklusoknak két fő típusa van: számlálós (paraméteres) és feltételes (iteratív) hurkok.

A számlálóhurkokat olyan esetekben használják, amikor bizonyos műveleteket bizonyos számú alkalommal kell végrehajtani.

Feltételes ciklusokat használunk, amikor a program bizonyos műveleteit meg kell ismételni, amíg egy bizonyos feltétel nem teljesül.

Hurok paraméterekkel A… Továbbra

Ciklus felépítése:

Mert Cycle_parameter = Kezdeti_érték Nak nek Végső_érték

[Step Step]

Üzemeltetők

[Kilépés ide:]

Következő [Cycle_parameter]

ahol For kulcsszó VBA (tól), jelzi a ciklus kezdetét;

loop_parameter változó, amely hurokszámlálóként van definiálva;

Initial_Value egy szám, amely a ciklusparaméter kezdeti értékét adja meg;

A kulcsszóhoz VBA (előtte), felosztás

Kezdeti_érték és végső_tudás;

Final_Value a hurokparaméter értékét meghatározó szám,

Ahol a ciklus véget ér;

Lépés kulcsszó VBA (lépés) használt

Cikklépés specifikációk, opcionális argumentum;

Lépés a ciklus lépését meghatározó szám, azaz. az érték, amellyel

Növeli (vagy csökkenti) a paraméter értékét

Kerékpározzon minden lépésnél. Ez a szám lehet

Negatív;

Kilépés ehhez a hurokból való korai kilépés operátora (opcionális);

Következő kulcsszó VBA (következő) jelölő

A ciklus vége.

Ciklikus munka:

1. lépés Először meg kell határozni a hurokparamétert, és kiszámítani és tárolni ennek a változónak a kezdeti és végső értékét.

2. lépés A hurokparaméterhez egy kezdeti érték van hozzárendelve.

3. lépés A hurokparaméter kezdeti értékét összehasonlítja a végső értékkel.

Ha a ciklusparaméter nagyobb, mint a végső érték, a program azonnal kilép a ciklusból, és a ciklust követő kódsorra ugrik.

4. lépés A ciklus törzse végrehajtásra kerül.

5. lépés A ciklus törzsének végrehajtása után a következő értéket rendeljük a ciklusparaméterhez. Folytassák a 3. lépéssel.

Jegyzet.

1. Ha kulcsszót használunk Lépés , akkor a ciklusparaméter a szó után megadott szám szerint változik. Ha a szó Lépés hiányzik, akkor a lépésérték egyenlő eggyel.

1. példa

Ha I = 0–10, 2. lépés (I. érték 2-vel nő)

2. For...Következő ciklus bármely feltétel elérésekor idő előtt leállítható. Ehhez a hurokban a megfelelő helyre kell elhelyezni az operátort Kilépés ehhez.

2. példa

Dim S As Integer

Dim j Egész számként

S=2

Ha j = 1–10

S = S + j

Ha S > 6 Akkor

Kilépés ehhez (Lépjen ki a ciklusból, ha az érték S > 6)

Vége Ha

Következő j

MsgBox(S)

Feltételes hurkok (iteratív)

Ha valamilyen műveletet (több műveletet) többször kell végrehajtani, de nem ismert előre, hogy hányszor, és ez valamilyen feltételtől függ, akkor elő- vagy utófeltételes ciklust kell használni.

VBA-ban két fő hurok van DO...LOOP kulcsszó által beírt feltétellel Míg , és a kulcsszó által megadott feltétellel Amíg . Mindkettő lehet elő- vagy utófeltételes.

Szintaxis:

hol Do kulcsszó (do);

Míg kulcsszó (még);

Amíg kulcsszó (ig);

Hurok a ciklus végét jelző kulcsszó;

<условие>egy logikai kifejezés, amelynek igazságát ellenőrizzük

A huroktest minden egyes végrehajtásának elején;

<тело_цикла>operátorok tetszőleges sorrendje;

Csináld... Építés közben így szól: csináld, amíg a feltétel teljesül. A tervezésben Do...Míg For

A Do...Amíg az építkezés így szól: addig csináld, amíg a feltétel teljesül. A tervezésben Tedd...Addig A lépés növeléséhez írjon egy speciális operátort, mert benne, a dizájntól eltérően Mert , ez nem történik meg automatikusan.

A kulcsszó után írt állapot Amíg , minden iteráció végén (a ciklustörzs végrehajtása után) ellenőrzésre kerül. Vegye figyelembe, hogy ez nem pontosan úgy működik, mint a ciklusban Míg . Ha a feltétel igaz ( Igaz ), akkor a hurok véget ér. Ha a feltétel nem teljesül (hamis Hamis ), akkor a ciklus törzse ismét végrehajtásra kerül.

1. példa

A probléma megfogalmazása. Számítsa ki egy véges sorozat összegét egy szubrutin eljárással.

Feladat végrehajtási technológia:

1. Kiinduló adatok: i  Z

Eredmény: S  R .

2. Írja be a következő egyéni eljárást a szabványos projektmodulba egy előfeltételes hurok használatával Míg:

Sub summa()

Dim S As Integer

Dim i As Integer

S=0

i = 1

Do Míg i<= 10

S = S + i^2

i = i + 1

Hurok

MsgBox(S)

Vége Sub

3. Írja be a következő egyéni eljárást a szabványos projektmodulba egy előfeltételes hurok használatával Amíg:

Sub summa()

Dim S As Integer

Dim i As Integer

S=0

i = 1

Addig csináld, amíg i > 10

S = S + i^2

i = i + 1

Hurok

MsgBox(S)

Vége Sub

4 Írja be a következő egyéni eljárást a szabványos projektmodulba egy utófeltételes hurok használatával Míg:

Sub summa()

Dim S As Integer

Dim i As Integer

S=0

i = 1

S = S + i^2

i = i + 1

Hurok Míg i<= 10

MsgBox(S)

Vége Sub

5 Írja be a következő egyéni eljárást a szabványos projektmodulba egy utófeltételes hurok használatával Amíg:

Sub summa()

Dim S As Integer

Dim i As Integer

S=0

i = 1

S = S + i^2

i = i + 1

Hurok addig, amíg i > 10

MsgBox(S)

Vége Sub

Előfordulhat olyan helyzet, amikor egy kódblokkot többször kell végrehajtania. Általánosságban elmondható, hogy az utasításokat szekvenciálisan hajtják végre: először az első utasítást hajtják végre egy függvényben, majd a másodikat stb.

A programozási nyelvek különböző vezérlési struktúrákat biztosítanak, amelyek bonyolultabb végrehajtási utakat tesznek lehetővé.

A loop utasítás lehetővé teszi, hogy egy utasítást vagy utasításcsoportot többször hajtsunk végre. Az alábbiakban egy VBA ciklusutasítás általános nézete látható.

A VBA a következő huroktípusokat biztosítja a hurkolási követelmények kezelésére. Kattintson a következő linkekre a részletek megtekintéséhez.

hurokhoz

A for ciklus egy ismétlésvezérlő struktúra, amely lehetővé teszi a fejlesztő számára, hogy hatékonyan írjon egy ciklust, amelyet bizonyos számú alkalommal végre kell hajtani.

Szintaxis

Alább látható a for ciklus szintaxisa VBA-ban.

Számláló esetén = kezdet Vége .... .... Következő

Folyamatábra

Az alábbiakban látható a vezérlési folyamat hurok módban -

  • Az első lépés befejeződött. Ez a lépés lehetővé teszi bármely hurokvezérlő változó inicializálását és a lépésszámláló változó növelését.
  • Másodszor, az állapotot értékelik. Ha igaz, akkor a ciklus törzse végrehajtódik. Ha hamis, a ciklus törzse nem kerül végrehajtásra, és a vezérlőfolyam közvetlenül a For ciklus után következő utasításra lép.
  • A For hurok végrehajtása után a vezérlési folyamat a következő utasításra lép. Ez az utasítás lehetővé teszi bármely hurokvezérlő változó frissítését. A lépésszámláló értéke alapján frissül.
  • Az állapot most ismét kiértékelésre kerül. Ha igaz, akkor a ciklus végrehajtásra kerül, és a folyamat megismétlődik (hurok törzse, majd lépésnövekedés, majd újra feltétel). Ha a feltétel hamis lesz, a For ciklus véget ér.

példa

Adjon hozzá egy gombot, és adja hozzá a következő funkciót.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 A 2. lépéshez MsgBox "Az i érték: " & i Következő End Sub

Amikor a fenti kódot lefordítják és végrehajtják, a következő kimenetet állítja elő.

Az i értéke: 0
Az i értéke: 2
Az i értéke: 4
Az i értéke: 6
Az i értéke: 8
Az i értéke: 10

Egy utasítássorozatot többször végrehajt, és lerövidíti a ciklusváltozót vezérlő kódot.

... hurokhoz

Minden ciklus egy utasítás vagy utasításcsoport végrehajtására szolgál egy tömb vagy gyűjtemény minden elemén.

Minden ciklushoz hasonló a For Loop; azonban a ciklus a tömb vagy csoport minden elemére végrehajtódik. Ezért a lépésszámláló nem fog létezni az ilyen típusú hurokban. Főleg tömbökkel vagy objektumkontextusban használatos fájlrendszer rekurzívan dolgozni.

Szintaxis

Az alábbiakban látható a For Every ciklus szintaxisa a VBA-ban.

Minden elemhez a csoportban....Következő

példa

Private Sub Constant_demo_Click() "gyümölcsök egy tömb fruits = Array("alma", "narancs", "cseresznye") Dim gyümölcsnevek Változatként "iterálva minden ciklushoz. Minden egyes tételhez a gyümölcsökben gyümölcsnevek = gyümölcsnevek & cikkek és Chr(10) Következő Üzenetdoboz gyümölcsnevek End Sub

A fenti kód végrehajtásakor kiírja az összes gyümölcs nevét, minden sorba egy elemmel.

alma
narancs
cseresznye

Ez akkor hajtódik végre, ha legalább egy elem van a csoportban, és megismétlődik a csoport minden elemére.

míg..wend hurok

A While While... Wend ciklusban, ha a feltétel True, minden utasítás végrehajtásra kerül, amíg a Wend kulcsszót meg nem találjuk.

Ha a feltétel hamis, a ciklus véget ér, és a vezérlő a Wend kulcsszó után következő utasításra lép.

Szintaxis

Alább látható a While..Wend ciklus szintaxisa VBA-ban.

Míg feltétel(ek) ... Wend

Folyamatábra

példa

Privát Sub Constant_demo_Click() Dim számláló: számláló = 10 miközben számláló< 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

A fenti kód végrehajtása után a következőt írja ki az üzenetmezőbe.

A számláló jelenlegi értéke: 11
A számláló jelenlegi értéke: 12
A számláló jelenlegi értéke: 13
A számláló jelenlegi értéke: 14
A számláló jelenlegi értéke: 15

Ez ellenőrzi a feltételt a ciklustörzs végrehajtása előtt.

do..while loop

A Do ... while ciklust akkor használjuk, ha meg akarunk ismételni egy utasításkészletet, miközben egy feltétel igaz. A feltétel a ciklus elején vagy a ciklus végén ellenőrizhető.

Szintaxis

Alább látható a Do...While ciklus szintaxisa VBA-ban.

Do While feltétel......Loop

Folyamatábra

példa

A következő példa a Do ... while ciklust használja a ciklus elején lévő állapot ellenőrzésére. A cikluson belüli utasítások csak akkor hajtódnak végre, ha a feltétel igaz lesz.

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

Az i értéke: 1
Az i értéke: 2
Az i értéke: 3
Az i értéke: 4
Az i értéke: 5

Alternatív szintaxis

Van egy alternatív szintaxis a Do ... while ciklushoz is, amely ellenőrzi a ciklus végén lévő állapotot. A két szintaxis közötti fő különbséget a következő példa ismerteti.

Do ... ... Loop Amíg állapot

példa

A következő példa a Do ... while ciklust használja a ciklus végének állapotának ellenőrzésére. A cikluson belüli utasítások legalább egyszer végrehajtásra kerülnek, még akkor is, ha a feltétel False.

Privát Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "Az i értéke: " & i Loop While i< 3 "Condition is false.Hence loop is executed once. End Sub

A fenti kód végrehajtásakor a következő kimenetet nyomtatja ki egy üzenetablakban.

Az i értéke: 11

A do..While utasítások mindaddig végrehajtásra kerülnek, amíg a feltétel igaz. (Azaz) A ciklust addig kell ismételni, amíg a feltétel False lesz.

do..intil loop

A do ... intil ciklus nem használható, ha meg akarunk ismételni egy utasításkészletet, miközben a feltétel hamis. A feltétel a ciklus elején vagy a ciklus végén ellenőrizhető.

Szintaxis

Alább látható a Do..Until ciklus szintaxisa a VBA-ban.

Tedd Amíg a feltétel ... ... Hurok

Folyamatábra

példa

A következő példa a Do... Before Loop parancsot használja egy feltétel tesztelésére a ciklus elején. A cikluson belüli utasítások csak akkor hajtódnak végre, ha a feltétel hamis. Kilép a ciklusból, amikor a feltétel igaz lesz.

Private Sub Constant_demo_Click() i = 10 Do Until i>15 "A feltétel hamis. Ennélfogva a ciklus végrehajtásra kerül i = i + 1 msgbox ("i értéke: " & i) Cikkvégi al

A fenti kód végrehajtásakor a következő kimenetet nyomtatja ki egy üzenetablakban.

Az i értéke: 11
Az i értéke: 12
Az i értéke: 13
Az i értéke: 14
Az i értéke: 15
Az i értéke: 16

Alternatív szintaxis

Van egy alternatív szintaxis is, a Do... Before Loop, amely a ciklus végén lévő feltételt teszteli. A két szintaxis közötti fő különbséget a következő példa magyarázza.

Végezze el ... ... Hurok állapotig

Folyamatábra

példa

A következő példa a Do...Before a ciklust használja a ciklus végén lévő feltétel tesztelésére. A cikluson belüli utasítások legalább egyszer végrehajtásra kerülnek, még akkor is, ha a feltétel igaz.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox "Az i értéke: " & i Loop Until i more15 "A feltétel igaz. Ezért a ciklus egyszer végrehajtásra kerül. End Sub

A fenti kód végrehajtásakor a következő kimenetet nyomtatja ki egy üzenetablakban.

Az i értéke: 11

A do..Until utasítások mindaddig végrehajtásra kerülnek, amíg a feltétel False. (Azaz) A ciklust addig kell ismételni, amíg a feltétel igaz.

Ciklusvezérlési rekordok

A ciklusvezérlő utasítások megváltoztatják a végrehajtást a normál sorrendjükből. Amikor a végrehajtás elhagyja a hatókört, az összes többi ciklusutasítás nem hajtódik végre.

Ellenőrzési nyilatkozat és leírás

Kezelői kimenet

Az Exit for akkor használható, ha bizonyos feltételek alapján ki akarunk lépni a For Loopból. Az Exit For végrehajtásakor a vezérlő közvetlenül a For ciklus után következő utasításra lép.

Szintaxis

Az alábbiakban látható az Exit For Statement szintaxisa VBA-ban.

Folyamatábra

példa

A következő példa az Exit For-t használja. Ha a számláló eléri a 4-et, a For Loop véget ér, és a vezérlő közvetlenül a For Loop után következő utasításra lép.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 i = 0 esetén a 2. lépéshez "i a számlálóváltozó, és 2-vel növekszik MsgBox ("Az érték i: " & i) Ha i = 4, akkor i = i * 10 "Ez csak akkor kerül végrehajtásra, ha i=4 MsgBox ("Az érték i: " & i) Kilépés a következőhöz: "Kilépés, ha i=4 End If Next End Sub

A fenti kód végrehajtásakor a következő kimenetet írja ki az üzenetmezőbe.

Az i értéke: 0
Az i értéke: 2
Az i értéke: 4
Az i értéke: 40

Megszakítja a For ciklus utasítást, és a végrehajtást közvetlenül a ciklus után átviszi az utasításra

Kilépés a Do

Az Exit Do utasítás akkor használatos, ha bizonyos feltételek alapján ki akarunk lépni a Do Loopsból. Mind a Do Do...While, mind a Do...Before ciklusokban használható.

Az Exit Do végrehajtásakor a vezérlés közvetlenül a Do ciklus után következő utasításra kerül.

Szintaxis

Alább látható az Exit Do utasítás szintaxisa a VBA-ban.

példa

A következő példa az Exit Do parancsot használja. Ha a számláló eléri a 10-et, a Do kimeneti sor véget ér, és a vezérlés közvetlenül a For ciklus után következő utasításra lép.

Privát Sub Constant_demo_Click() i = 0 Do While i<= 100 If i >10 Akkor kilépés Do " A hurok kilép, ha i>10 vége, ha MsgBox ("i értéke: " & i) i = i + 2 hurok vége al

A fenti kód végrehajtásakor a következő kimenetet nyomtatja ki egy üzenetablakban.

Az i értéke: 0
Az i értéke: 2
Az i értéke: 4
Az i értéke: 6
Az i értéke: 8
Az i értéke: 10

Befejez egy Do While utasítást, és közvetlenül a ciklus után viszi át a végrehajtást az utasításra

Laboratóriumi munka a programozás alapjairól

2.1. Az analitikusan ábrázolt függvények táblázata
és a közelben összefolyva

A munka célja

· Elméleti ismeretek megszilárdítása az elágazási és ciklikus struktúrák szervezésének alapjairól.

· Gyakorlati programozási ismeretek elsajátítása elágazó és ciklikus struktúrák segítségével a Visual Basic rendszerben.

A VB-ben háromféle ciklusutasítás létezik:

számláló ciklus: For...To...Tovább

ciklusok előfeltételekkel: Do While...Loop, Do Until...Loop, While...WEend

· hurkok utófeltételekkel: Do...Loop While, Do...Loop Until.

Számláló hurok – lehetővé teszi, hogy meghatározott számú alkalommal lépkedjen végig az utasításokon. A szintaxisa a következő:

Mert számláló = Rajt Nak nek vége

[operátorok]

[operátorok]

Következő [ számláló]

Paraméter számláló egy numerikus változó (egész, valós típus vagy dátum, változat, pénznem típus), amely minden ismétlés után automatikusan növekszik. Kezdő érték számláló paraméterrel egyenlő Rajt,és a végső paraméter - vége. Ha nincs megadva, a lépés 1-nek tekintendő; a lépés értéke módosítható. Ez lehet pozitív vagy negatív szám.

A Do.... ciklusnak négy szintaktikai konstrukciója van:

A Do... Loop kulcsszavak közötti utasítások a feltételtől függően meghatározott számú alkalommal kerülnek végrehajtásra. Például a következő programrészletben, amikor C = 100, a feltétel teljesül, és a ciklus bekerül. A cikluson belül meghívjuk az eljárást, és a C értékét 1-gyel csökkentjük. Ezután ismét ellenőrizzük a feltételt (C > 0), és ismét végrehajtjuk a ciklusoperátorokat (összesen 100-szor lesznek végrehajtva), amíg C = 0. Amikor a C > 0 feltétel hamis lesz, és a ciklus leáll.

Csináld, amíg C > 0

Ugyanez a programrészlet egy ciklussal végrehajtva a 2. szintaxis előfeltételével:

Ebben az esetben a ciklus addig fut, amíg a feltétel hamis, az előző esettől eltérően, azaz folytatódik előtt C = 0 feltétel teljesülése.

A 3. és 4. ciklusutasítás szintaxisában nagyon hasonló az első kettőhöz, kivéve a feltételt Nem addig számítódik, amíg a ciklus legalább egyszer le nem hajtódik.

Ezek a hurokszintaxisok az Exit For és az Exit Do feltétel nélküli cikluskilépési utasításokat használhatják a vezérlés átadására a ciklus mögötti operátornak. Például a következő programrészletben, ha a C kezdeti értéke >50, akkor a ciklus azonnal leáll.



C-ig csináld<= 0

MsgBox "Start" érték nagyobb az elfogadhatónál”, „Beviteli hiba”

A While...Wend hurkot a Visual Basic korai verzióiban használták. A szintaxisa a következő:

Míg<условие>

<Операторы>

A Do..Loop hurokkal ellentétben a While ..Wend ciklusnak nincs második opciója, amelyben a feltétel a ciklus végén kerül ellenőrzésre. Ráadásul nincs hozzá hurokkilépési utasítás, mint például az Exit Do.

VBA. Ciklusok szervezése.

A hurokutasítások egy művelet vagy műveletcsoport meghatározott számú ismétlésére szolgálnak. Az ismétlések (hurokiterációk) száma előre meghatározható vagy kiszámítható.

A VBA kétféle hurkolt konstrukciót támogat:

  1. Rögzített ismétlésszámú hurkok ( ellentétes hurkok).
  2. Hurok határozatlan számú ismétléssel ( feltételes hurkok).

Minden típusú ciklus esetében ezt a koncepciót használják huroktest , amely a ciklus kezdő és záró utasításai közé zárt utasítások blokkját határozza meg. A ciklus törzsének utasításai végrehajtásának minden ismétlődése meghívásra kerül ismétlés

Fix ciklusok

A VBA két vezérlőstruktúrát biztosít a rögzített hurok szervezéséhez: For ... Next (hurok számlálóval) és For Every ... Next (hurok felsorolással).

Operator For...Next Ez egy tipikus számlálóhurok, amely meghatározott számú iterációt hajt végre. A For...Next utasítás szintaxisa a következő:

Mert<счетчик> = <начЗначение>Hogy<конЗначение>

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

Következő [<счетчик>]

Példa a For...Next operátor használatára.

Listing 1. … Következő operátorhoz

‘ FELADAT: Hozzon létre egy programot, amely két számot kap a felhasználótól.

‘ Összeadja az e két szám által meghatározott tartományban lévő összes számot, majd

‘ megjeleníti a kapott összeget.

Alminta7()

Dim i As Integer ‘ciklusszámláló

Dim sStart ‘kezdeti számlálóérték

Dim sEnd ‘végszámláló értéke

Dim sSum As Long ‘eredményes összeg

sStart = InputBox ("Írja be az első számot:")

sEnd = InputBox ("Írja be a második számot:")

sSum = 0

i esetén = CInt(sStart) - CInt(sEnd)

sSum = sSum + i

Következő i

MsgBox „A „ & sStart & ” és az „ & sEnd & ” közötti számok összege: „ & sSum

Vége Sub

Loop utasítás For Each...Nextobjektum típusú operátorok kategóriájába tartozik, azaz. elsősorban a gyűjteményekre vonatkozik objektumok, valamint tömbök . A ciklus törzse meghatározott számú alkalommal kerül végrehajtásra, a tömb vagy gyűjtemény elemeinek számának megfelelően. Minden...Következő nyilatkozat formátumhoz:

Az egyes<элемент>Ban ben<группа> <блок операторов>Következő [<элемент>]

Feltételes hurkok (meghatározatlan hurkok)

Feltételes hurkok akkor használatosak, ha ismételt műveleteket csak bizonyos feltételek mellett kell végrehajtani. Az iterációk száma nincs meghatározva, és általában egyenlő lehet nullával (különösen az előfeltételes hurkok esetében). A VBA számos vezérlőstruktúrát kínál a fejlesztőknek a feltételes hurkok szervezéséhez:

  • Négy típusú Do..Loops, amelyek különböznek az ellenőrzött állapot típusától és az ellenőrzés befejezéséhez szükséges időtől.
  • Folyamatos hurok Míg... Wend.

A Do While... Loop tipikus hurok előfeltétellel. A feltételt a ciklus törzsének végrehajtása előtt ellenőrizzük. A ciklus addig folytatja munkáját<условие>végrehajtásra kerül (azaz True értéke van). Mivel az ellenőrzést az elején hajtják végre, előfordulhat, hogy a ciklus törzse soha nem kerül végrehajtásra. Do While... Loop formátum:

Csinálni, miközben<условие>

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

Hurok

Listing 2. Do While... Loop

' FELADAT: Hozzon létre egy programot, amely felhasználói bevitelt igényel

’egy tetszőleges számsor. A bevitelt meg kell szakítani

‘ csak akkor, ha a beírt páratlan számok összege meghaladja a 100-at.

Alminta8()

Dim OddSum As Integer ‘páratlan számok összege

Dim OddStr As String ‘egy karakterlánc páratlan számokkal

Dim Num ‘beírt számok elfogadásához

OddStr = "" 'kimeneti karakterlánc inicializálása

OddSum = 0 ‘OddSum inicializálása

Do While OddSum< 100 ‘начало цикла

Num = InputBox ("Írjon be egy számot: ")

Ha (Num Mod 2)<>0 Ezután a „paritásellenőrzés”.

OddSum = OddSum + Num ‘páratlan számok összegének halmozódása

OddStr = OddStr & Num & ”

Vége Ha

Hurok

‘nyomtasson ki egy karakterláncot páratlan számokkal

MsgBox prompt:=”Páratlan számok: ” & OddStr

Vége Sub

Do...Loop While utasításszervezésre terveztékhurok utófeltétellel. A feltétel ellenőrzése azután történik, hogy a ciklus törzsét legalább egyszer végrehajtották. A ciklus addig folytatja munkáját<условие>igaz marad. Végezze el... Formázás közben:

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

Listázás 3. Hurok utófeltétellel

FELADAT: Készítsen programot a „Találd ki a számot” játékhoz. A programnak véletlenszerűnek kell lennie

1 és 1000 közötti szám létrehozásának módja, a felhasználónak kell

‘Találd ki ezt a számot. A program minden beírt számhoz utalást jelenít meg

' "többé-kevésbé".

Alminta8()

Randomize Timer ‘inicializálja a véletlenszám-generátort

Dim msg As String ‘ üzenetkarakterlánc

Dim SecretNumber As Long, UserNumber As Variant

Kezdés: SecretNumber = Round(Rnd * 1000) ‘ számítógép által generált szám

UserNumber = Üres ‘ a felhasználó által beírt szám

Csinálj játékot

Válassza az Igaz kis- és nagybetű lehetőséget

Case IsEmpty(UserNumber): msg = "Írjon be egy számot"

Case UserNumber > SecretNumber: msg = "Túl sok!"

Felhasználói szám eset< SecretNumber: msg = “Слишком мало!”

Vége kijelölés

UserNumber = InputBox(prompt:=msg, Title:="Találd ki a számot")

Loop While UserNumber<>Titkosszám

' vizsgálat

Ha MsgBox ("Játssz újra?", vbYesNo + vbQuestion, "Kitaláltad!") = vbYes Akkor

GoTo Begin

Vége Ha

Vége Sub

Hurok Csináld Amíg... Hurok és csináld... Loop Amíg a korábban tárgyalt feltételes hurkok inverziói. Általában hasonlóan működnek, kivéve, hogy a ciklus törzse végrehajtódik, ha a feltétel hamis (pl.<условие>=Hamis). Csináld addig... Cikkformátum:

Tedd Amíg<условие> <блок операторов>Hurok

Végezze el... Loop Until ciklus formátuma:

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

Loop Amíg<условие>

Gyakorlati feladat:Írja át a 10-es és 11-es listák programjait fordított ciklusú utasításokkal.

Loop While...Wend feltételes ciklusokra is vonatkozik. Ez az operátor teljes mértékben összhangban van a Do While... Loop szerkezettel. Míg...Wend hurokformátum:

Míg<условие>

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

Irányít

Ennek a kezelőnek a megkülönböztető jellemzője a lehetetlenség kényszerű felmondás(megszakítva) a hurok törzsét (az Exit Do operátor nem működik a While ... Wend hurokban).

Egy ciklus megszakítása

Az iteráció korai befejezéséhez és a ciklusból való kilépéshez az Exit utasítást kell használni. Ez az operátor minden ciklikus struktúrában alkalmazható, kivéve a While... Wend. Az Exit ciklus megszakítására használatos általános szintaxisa a következő:

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

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

Kilépés (For | Csinál)

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

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

Az Exit utasítás végrehajtásakor a ciklus megszakad, és a vezérlés átkerül az utasítást követő utasításra<конец_цикла>. Egy ciklus törzsében több kilépési utasítás is lehet.

Lista 4. Kényszerített kilépés a hurokból

Alminta9()

Ha i = 1 - 10000000

Ha i = 10, akkor Exit For ‘ kilép a ciklusból, amikor a számláló eléri a 10-et

Következő




Top