Ez az oktatóanyag példákat mutat a VBA For For Loop használatára. Kattintson ide, hogy többet megtudjon a hurkokról általában.
Minden hurokhoz
A For Every Loop lehetővé teszi a ciklus folytatását minden egyes tárgy a gyűjteményben:
- Minden sejt egy tartományban
- Minden munkalap egy munkafüzetben
- Minden nyitott munkafüzet
- Minden alakzat egy munkalapon
- Minden elem egy tömbben
- és több!
Mindegyikhez: alapvető példák
Ezek a példák bemutatják, hogyan kell beállítani, hogy az egyes hurkok különböző típusú objektumokon keresztül ciklusozzanak.
Loop Through Cells
Ez az eljárás végigmegy az A1: A10 tartomány minden celláján, és a cellát önmagával egyenlőre állítja.
12345678 | Sub ForEachCell ()Dim cella mint tartományA táblázatok minden cellájához ("Sheet1"). Tartomány ("A1: A10")Cell.Offset (0, 1) .value = Cell.valueKövetkező cellaEnd Sub |
Loop Sheets
Ez az eljárás végiglapozza a munkafüzet minden lapját, és minden lapot felold.
12345678 | Sub ForEachSheets ()Dim ws munkalapkéntMinden ws -hez a Táblázatokbanws.Visible = IgazKövetkező lapEnd Sub |
Ismétlődő munkafüzetek
Ez az eljárás végigmegy minden munkafüzeten, bezárja mindegyiket.
12345678 | Sub ForEachWorkbooks ()Dim wb Mint munkafüzetMinden wb -hez a munkafüzetekbenwb. BezárKövetkező wbEnd Sub |
Hurok alakzatok
Ez az eljárás végigfut a Sheet1 minden alakzatán, és mindegyiket törli.
12345678 | Sub ForEachShape ()Dim Shp mint alakMinden Shp In Sheets ("Sheet1"). AlakzatokShp. TörlésKövetkező ShpEnd Sub |
Loop Through Charts
Ez az eljárás végigfut a Sheet1 minden diagramján, és mindegyiket törli.
12345678 | Sub ForEachCharts ()Dim cht Mint ChartObjectMinden cht In Sheets ("Sheet1"). ChartObjectscht. TörlésKövetkező chtEnd Sub |
Lépés a PivotTable -ek között
Ez az eljárás végigmegy az 1. lapon lévő minden kimutatáson, és törli mindegyiket
12345678 | Sub ForEachPivotTables ()Dim pvt PivotTable -kéntMinden Pvt In Sheets ("Sheet1"). PivotTablepvt.ClearTableKövetkező pvtEnd Sub |
Loop keresztül táblázatok
Ez az eljárás végigmegy az 1. táblázat minden tábláján, és mindegyiket törli.
12345678 | Sub ForEachTables ()Dim tbl ListObject -kéntMinden tbl In Sheets ("Sheet1"). ListObjectstbl.DeleteKövetkező tblEnd Sub |
Loop keresztül elemek tömb
Ez az eljárás végigmegy a tömb minden elemén, megjeleníti az egyes értékeket egy msgboxban,
12345678910 | Sub ForEachItemInArray ()Dim arrValue VariantkéntDim Dimension VariantarrValue = Tömb ("1. tétel", "2. tétel", "3. tétel")Minden tételhez In arrValueMsgBox elemKövetkező tételEnd Sub |
Loop keresztül számok
Ez az eljárás végigmegy a tömb minden számán, megjeleníti az egyes értékeket egy msgboxban,
12345678910111213 | Sub ForEachNumberInNumbers ()Dim arrNumber (1-3) Egész számkéntDim szám VáltozatkéntarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Minden szám In arrNumberÜzenetek számaKövetkező számEnd Sub |
Minden huroképítőhöz
A cikkben szereplő példák a Huroképítő miénkben VBA bővítmény: AutoMacro.
Az Huroképítő nagyon megkönnyíti az objektumok közötti ciklushoz szükséges kód generálását. AutoMacro sok mást is tartalmaz Kódgenerátorok, kiterjedt Kódkönyvtár, és erőteljes Kódolási eszközök.
Mindegyikhez - Ha
Az If Statements segítségével a hurkokon belül is ellenőrizheti, hogy az objektumok megfelelnek -e bizonyos feltételeknek, és csak azokon az objektumokon hajt végre műveleteket, amelyek megfelelnek a feltételeknek. Íme egy példa arra, hogy a tartomány minden celláján keresztül kell ciklusozni:
A tartomány minden cellájára - ha
1234567891011121314 | If_Loop () alDim cella mint tartományA tartomány minden cellájához ("A2: A6")Ha Cell.Value> 0 AkkorCell.Offset (0, 1) .Value = "Pozitív"Egyébként Cell.Érték <0 AkkorCell.Offset (0, 1) .Value = "Negative"MásCell.Offset (0, 1) .Value = "Zero"Vége HaKövetkező cellaEnd Sub |
Minden gyakori példa esetében
Zárja be az összes munkafüzetet
Ez az eljárás bezárja az összes nyitott munkafüzetet, mentve a módosításokat.
123456789 | Sub CloseAllWorkbooks ()Dim wb Mint munkafüzetMinden wb -hez a munkafüzetekbenwb. Bezárás SaveChanges: = IgazKövetkező wbEnd Sub |
Minden lap elrejtése
Ez az eljárás elrejti az összes munkalapot.
12345678 | All HideAllSheets ()Dim ws munkalapkéntMinden ws -hez a Táblázatokbanws.Visible = xlSheetHiddenKövetkező wsEnd Sub |
Minden lap megjelenítése
Ez az eljárás megjeleníti az összes munkalapot.
12345678 | Sub UnhideAllSheets ()Dim ws munkalapkéntMinden ws -hez a Táblázatokbanws.Visible = xlSheetVisibleKövetkező wsEnd Sub |
Minden lap védelme
Ez az eljárás védi az összes munkalapot.
12345678 | Sub ProtectAllSheets ()Dim ws munkalapkéntMinden ws -hez a Táblázatokbanws.Protect Jelszó: = "…"Következő wsEnd Sub |
Minden lap védelmének feloldása
Ez az eljárás megszünteti az összes munkalap védelmét.
12345678 | All UnprotectAllSheets ()Dim ws munkalapkéntMinden ws -hez a Táblázatokbanws.Unprotect Password: = "…"Következő wsEnd Sub |
Minden alakzat törlése az összes munkalapon
Ez az eljárás törli a munkafüzet összes alakzatát.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Lemez homályosítása munkalapkéntDim Shp mint alakMinden ws -hez a TáblázatokbanMinden Shp In ws.ShapesShp. TörlésKövetkező ShpKövetkező wsEnd Sub |
Az összes kimutatás frissítése
Ez az eljárás frissíti a lap összes kimutatását.
12345678 | Sub RefreshAllPivotTables ()Dim pvt PivotTable -kéntMinden Pvt In Sheets ("Sheet1"). PivotTablepvt.RefreshTableKövetkező pvtEnd Sub |
Használata Mindenkinek az Access VBA -ban
A For For hurok ugyanúgy működik az Access VBA -ban, mint az Excel VBA -ban. A következő példa eltávolítja az összes adatbázist az aktuális adatbázisból.
123456789 | Sub RemoveAllTables ()Dim tdf TableDef névenDim dbs mint adatbázisÁllítsa be a dbs = CurrentDb értéketMinden tdf esetén dbs.TableDefsDoCmd.DeleteObject tdf.NameHurokSet dbs = SemmiEnd Sub |