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).

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.