A For Every Loop használata az Excel VBA-ban

A For Every Loop használata az Excel VBA-ban
Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

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:

  1. Nyissa meg a VBA kódszerkesztőt a gomb megnyomásával Minden + F11 .
  2. Szúrjon be egy modult a gombra kattintva Modul opció a Beszúrás lapon.   Excel munkalap oszlopkimenettel's code editor
  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 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
  VBA kódrészlet a szerkesztőben és az Excel kimeneten belü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
  VBA kódrészlet a kódszerkesztőben

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
  VBA kódrészlet a szerkesztőben

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