VBA ciklusok - a következő, és minden az Excel, exceltip

VBA ciklusok - a következő, és minden az Excel, exceltip

A For Loop VBA - az egyik legnépszerűbb ciklusokat Excel. Ez a ciklus két formája - a következő, és így mindegyik gombra. Ezek az operátorok használhatjuk, hogy sorban haladjon a listában az elemek vagy egészek. tudjuk bármikor használhatja az exit parancsot, hogy megszünteti a ciklust. Vessünk egy közelebbi pillantást mindegyik ciklusban.







VBA a következő ciklus

A következő ciklus szintaxisa a következő:

A számláló = nachalo_schetchika To konets_schetchika
„Milyen intézkedéseket
Következő counter

Mit csinálunk mi itt, lényegében ez létrehoz egy hurkot, amely a változó számlálót időmérő. Állítsa be az értéket nachalo_schetchika. és növekszik (vagy csökken) 1 minden egyes fordulata alatt. A ciklus végrehajtásra kerül, amíg a számláló értéke egyenlővé válik konets_schetchika. Ha mindkét érték egyezik, a ciklus végrehajtódik utoljára, majd megáll.

Sub primer_tsikla1 ()
A számláló értéke 1 és 10
J = mérő
Következő counter
MsgBox „A számláló értéke az utolsó tekercs” - számláló
End Sub

Az utolsó érték a változó számláló egyenlő 11

VBA fordított ciklusban For Loop utasítás STEP

Ha kell mozgatni egy nagyobb érték a kisebb - akkor egy hurok az ellenkező irányba. Itt egy példa a fordított ciklus:

Sub primer_tsikla2 ()
A számláló értéke 1 és 10 lépés -1
J = mérő
Következő counter
MsgBox „A számláló értéke az utolsó tekercs” - számláló
End Sub

Az utolsó érték a változó számláló egyenlő 1.

Mint látható, tudjuk használni Stepn utasításokat ciklus előre és hátra irányban. Lépés alapértelmezett értéke 1, de lehet módosítani, ha szükséges, hogy bármilyen értéket, akkor az n értéke nagyobb, mint egy, vagy mozgassa a fordított irányban, akkor n értéke negatív.







VBA hurok For Each ... Next

Ciklus For Each ... Next ciklus a következő:

For Each element_gruppy A gruppa_elementov
„Milyen intézkedéseket
Következő element_gruppy

Itt element_gruppy változó tartozik gruppe_elementov (vas logika.). Úgy értem, hogy gruppa_elementov tárgy legyen objektumok gyűjteménye. Nem lehet futtatni egy Mindegyik hurok az egyes tárgyak (Microsoft azonnal értesíti a felhasználót az 438-hiba).

VBA ciklusok - a következő, és minden az Excel, exceltip

Ez ciklus végigmegy az összes eleme a gyűjtemény, kezdve az első. Akkor használja ezt a ciklust, ha kell, például, hogy megkerülje az összes lap a könyvben, a tárgyakat a munkalapon, táblázatok, stb

Sub primer_tsikla4 ()
For Each sht A ActiveWorkbook.Worksheets
MsgBox sht.Name
Következő sht
End Sub

... vagy az összes Kimutatás egy lapon

Sub primer_tsikla ()
For Each PVT A ActiveSheet.PivotTables
MsgBox pvt.Name
Következő pVT
End Sub

VBA ciklus megszakítása

Ha kell, hogy ki a ciklus tart az idő elérte a ciklus vége állapota, használata EndFor csapat együtt az IF utasítás. Az alábbi példában, akkor hagyja a hurok, amíg el nem éri a befejezés feltétele, a kimenet ebben a ciklusban kerül sor azzal a feltétellel, ha a változó számláló egyenlő 3.

Sub primer_tsikla5 ()
A számláló = 0 és 5
MsgBox counter
Ha (számláló = 3), majd kijárat
Következő counter
End Sub

Ugrás a ciklus részeként a For Each

Ugrás a ciklus részeként, majd visszamenni - a rossz gyakorlat. Azonban nézzük meg egy példát:

Sub primer_tsikla6 ()
Dim j As Integer
I = 0 és 5
b:
Ha (j = 3) Ezután GoTo egy:
j = i
Következő i
a:
J = 4
GoTo b:
MsgBox ( "érték J =" - j)
End Sub

Mi hiányzott egy iterációja (ha j = 3). Gondolod, hogy mi lesz az eredmény, hogy a program? 3? 5? Nos ... valóban, sem a lehetőség nem igaz. A ciklus korlátlan ideig tart, amíg a számítógép memóriájában túlcsordult.

Ugyanakkor képes ugrani egy lépést ciklus minden következmény nélkül van. Növelheti a számláló értéke 1 (vagy más érték), akkor hagyja műveleteket, amelyek között ezek az értékek. Itt egy példa:

Sub primer_tsikla7 ()
I = 0 és 5
i = i + 1
MsgBox i
Következő i
End Sub

De aztán megint, ez egy rossz gyakorlat, hogy írjon kódot, és vezethet nemkívánatos következmények írásakor kódot a jövőben. Ehelyett, ha szükséges, át néhány iteráció, próbálja Amennyiben vagy a Select Case funkciót.

Ön is érdekelt a következő cikkek

Üdvözlünk! Mondd, hogy lehet-e tenni valamit, hogy ciklus mozog az oszlopra, és kerestem a legkisebb érték, törölni, és újra keresni, és ismét eltávolítani. Abba kell hagyni, ha a értékek összege ebben az oszlopban nem lesz egyenlő vagy kisebb, mint amit a bázis értéket.




Kapcsolódó cikkek