A hurkok és a VBA együtt járnak, és ennek is jó oka van. Amikor Microsoft Office-objektumokkal, például munkafüzetekkel, munkalapokkal és tartományokkal foglalkozik, a hurkok segítségével viszonylag könnyen válthat közöttük.
Míg többé-kevésbé az összes VBA hurok jól működik az objektumokkal, a 'mindenkinek' ciklus az egyik legjobb lehetőség az objektumgyűjtemények kezelésére. Ha még nem ismeri az Excel VBA-t, és szeretné elsajátítani az egyes ciklusokat, gyorsan tanulhat néhány példából. Itt van minden, amit tudnod kell erről a lényegi körről.
MAKEUSEOF A NAP VIDEÓJA GÖRGÖZSEN A TARTALOM FOLYTATÁSHOZ
Minden ciklus szintaxisához
Az egyes ciklusok szintaxisa nagyon hasonló az Excel VBA-ban szokásos for ciklushoz. Íme a szintaxis:
For each variable_name in object_collection
[statement]
[statement]
[statement]
Next variable_name
A ciklus a 'mindenkinek' kulcsszóval kezdődik; használhat bármilyen változónevet, amelyet az objektumgyűjtemény követ. Az egyes ciklusokhoz tartozó objektumok cellák, tartományok, lapok és akár munkafüzetek is lehetnek. Ilyen ez a hurok szépsége; rugalmasságot biztosít a különböző Excel-gyűjtemények kezeléséhez.
A ciklus az egyes gyűjteményértékeken áthalad, és a referenciát a meghatározott változónévben tárolja. A végrehajtás után a VBA végrehajtja a hurkon belül tárolt utasításokat, és a gyűjtemény következő objektumára lép (a következő kulcsszó itt hasznos). Értsük meg a kódszerkezetet egy alappéldával.
A For Every Loop használata az Excel VBA-ban
Tegyük fel, hogy egy számot szeretne nyomtatni az A1-től A10-ig terjedő cellákba. A legjobb megoldás az, ha a for minden ciklust használja a range függvénnyel, és hagyja, hogy a kód elvégezze a szükséges műveleteket. A következőképpen hajthatja végre ezt az egyszerű feladatot:
- Nyissa meg a VBA kódszerkesztőt a gomb megnyomásával Minden + F11 .
- Szúrjon be egy modult a gombra kattintva Modul opció a Beszúrás lapon.
- Hozzon létre egy alrutint a sub() paranccsal a kódszerkesztő modul ablakában. Ügyeljen arra, hogy értelmes nevet rendeljen az alrutinhoz. Ebben a példában használhatja a nevet for_each_loop .
Most, hogy az alapok kikerültek az útból, ideje elkezdeni megírni a kódot. Az alrutinon belül írja be a következő parancsokat:
Dim cell as range
For each cell in Sheets("Sheet1").Range("A1:A10")
cell.value = 10
Next cell
Amikor a kód lefut, a c változó tárolja az A1 értékét. Ezután, ahogy a cikluson belüli utasításra lép, kiértékeli a parancsot, és 10-es értéket ír be a meghatározott cellába, azaz az A1 cellába.
Végül a Következő kulcsszóra lépve a következő értékre, azaz az A2 cellára lép. A hurok addig fut, amíg el nem éri az A10 cellát. Ez a végső kimenet:
google play gyújtogatás nélkül gyökeresedés nélkül
A hurok használata objektumokkal: cellák, lapok és munkafüzetek
Az Excel három fő objektumtípussal rendelkezik, amelyekkel rendszeresen dolgozik. Ezek cellák, lapok és munkafüzetek. Így használhatja a hurkot mindhárom objektumtípussal.
Munka cellákkal és hurkokkal együtt
Tegyük fel, hogy értéket és néhány formázási feltételt szeretne hozzáadni egy cellatartományhoz az 1. munkalapon. Első lépésként meg kell határozni a cikluson belüli feltételeket, majd a formázási parancsokat.
Írja be a következő kódot egy alrutinba.
Sub for_each_loop()
Dim c As Range
For Each c In Sheets("Sheet1").Range("A1:A10")
With c
.Value = 10
.Font.Color = vbRed
.Font.Bold = True
.Font.Strikethrough = True
End With
Next c
End Sub
A val vel A funkció akkor hasznos, ha több funkciót hajt végre egy adott objektummal. Mivel egy sor feladatot szeretne végrehajtani a c változóval, mindegyiket kombinálhatja a with..end függvény segítségével.
Az xbox one vezérlő egyáltalán nem kapcsol be
A hurok egyenlővé teszi c értékét minden cellaértékkel, és az értéket 10-ként adja meg. Ezenkívül a cella színét pirosra változtatja, az értéket félkövérre szedi, és áthúzza. Az összes lépés végrehajtása után a tartomány következő meghatározott értékére lép.
A hurok használata lapok vezérléséhez
A fenti példához hasonlóan használhatja az egyes ciklusokhoz a gombot a lapok vezérléséhez. Mit szólnál, ha VBA-val megváltoztatnád a Sheet1 nevét Sheet3-ra?
A következő kóddal átnevezhet egy meglévő munkalapot az Excelben VBA használatával:
Sub for_each_loop_sheets()
For Each sht In ThisWorkbook.Sheets
If sht.Name = "Sheet1" Then
sht.Name = "Sheet3"
End If
Next sht
End Sub
A kód végigfut a munkafüzet minden lapján, és ellenőrzi az egyes lapok nevét. Ha találkozik a Lap1 névvel, akkor azt Lap3 névre változtatja. A munkafüzeten belül a többi lapon keresztül halad, ha vannak ilyenek. Amint a kód végrehajtása eléri az utolsó lapot, kilép a ciklusból és az alrutinból.
Néhány egyéb gyakori felhasználás mellett megteheti több munkalapot egyesíthet VBA használatával és frissítse a tartalmat egyetlen lapon hurkok segítségével.
Váltás a munkafüzetek között a hurokkal
Végül az egyes ciklusokhoz használható a különböző munkafüzetek közötti váltáshoz és meghatározott feladatok végrehajtásához. Mutassuk meg ezt a függvényt egy példával.
A VBA-parancsok segítségével hozzáadhat három új munkafüzetet, és bezárhatja az összes megnyitott munkafüzetet. A következőképpen teheti meg:
Sub loop_wrkbook()
Dim wrkbook as workbook
Workbooks.Add
Workbooks.Add
Workbooks.Add
For Each wrkbook In Workbooks
wrkbook.
Next wrkbook
End Sub