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.

instagram viewer

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:

  1. Nyissa meg a VBA kódszerkesztőt a gomb megnyomásával Alt + F11.
  2. Szúrjon be egy modult a gombra kattintva Modul opció a Beszúrás lapon.
  3. 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.