Szeretné automatizálni az ismétlődő feladatokat az Excelben a VBA használatával? Ismerje meg, hogyan használhatja a For Every ciklust a táblázatokban lévő adatok hatékony kezeléséhez.
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.
Minden ciklus szintaxisához
Az egyes ciklusok szintaxisa nagyon hasonló az Excel VBA-ban szokásos for ciklushoz. Íme a szintaxis:
Az objektum_gyűjteményben lévő minden változó_neve esetén
[nyilatkozat]
[nyilatkozat]
[nyilatkozat]
Következő változó_neve
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 Alt + 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 írni a kódot. Az alrutinon belül írja be a következő parancsokat:
Halvány cella mint hatótávolság
Minden egyes cellához ban ben Ágynemű("1. lap").Hatótávolság("A1:A10")
cella.value = 10
Következő cella
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:
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 Mint Hatótávolság
Minden c In Sheets("1. lap").Hatótávolság("A1:A10")
Val vel c
.Érték = 10
.Betűtípus. Szín = vbRed
.Betűtípus. Félkövér = Igaz
.Betűtípus. Áthúzott = Igaz
VégeVal vel
Következő c
Vége Alatti
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.
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 vastagon 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()
MertMinden egyesshtBan benEz a munkafüzet.Ágynemű
Ha sht. Név = "1. lap" Akkor
sht. Név = "3. lap"
VégeHa
Következő sht
Vége Alatti
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()
Halvány munkafüzet mint munkafüzet
Munkafüzetek.Hozzáadás
Munkafüzetek.Hozzáadás
Munkafüzetek.Hozzáadás
Minden munkafüzethez a munkafüzetekben
munkafüzet.Bezárás
Következő munkafüzet
Vége Alatti
A fenti kód bezárja a makró-munkafüzetet is; A kód futtatása előtt győződjön meg arról, hogy elmentette a kódokat.
Mivel a hurkok többféle felhasználási területtel rendelkeznek, ezt is megteheti több munkafüzet adatait egyetlen munkafüzetbe egyesítheti.
Beágyazott IF utasítás használata hurokkal
A fenti példához hasonlóan egy IF utasítást is használhat a cikluson belül bizonyos feltételek ellenőrzésére. Változtassuk meg a cella háttérszínét a cella értékei alapján.
Néhány véletlen szám található az A1:A20 cellában. Írhat egy ciklust, amely a tartomány minden egyes celláján áthalad; ha a cella értéke 10-nél kisebb, a cella színének pirosra kell változnia. Ha a cella értéke meghaladja a 10-et, akkor zöldre kell váltania. Ehhez használja a következő kódot:
Sub loop_w_if()
Dim c Mint Hatótávolság
Minden c In Sheets("4. lap").Hatótávolság("A1:A20")
Hac.Érték < 10 Akkor
c. Belső. ColorIndex = 3
Más: c. Belső. ColorIndex = 4
VégeHa
Következő c
Vége Alatti
Így néz ki a kimenet:
Hurok használata az Excel VBA-ban
Az Excel VBA nem korlátozódik az egyes ciklusokhoz. Számos hasznos hurok létezik, amelyek segítségével könnyedén hajthat végre különféle funkciókat. Búcsút int a hétköznapi, manuális feladatoktól, mivel a VBA ciklusai, mint a for ciklus, csináld míg, és csináld, amíg be nem lépnek a ciklusok, hogy megkönnyítsék az életét.