Tento tutoriál vám ukáže príklady použitia For Each Loop vo VBA. Kliknutím sem získate ďalšie informácie o slučkách vo všeobecnosti.
Pre každú slučku
For For Loop vám umožňuje prechádzať každý predmet v zbierke:
- Všetky bunky v rozsahu
- Všetky pracovné listy v pracovnom zošite
- Všetky otvorené pracovné zošity
- Všetky tvary v pracovnom liste
- Všetky položky v poli
- a viac!
Pre každého: Základné príklady
Tieto príklady ukážu, ako nastaviť slučky For each tak, aby prechádzali rôznymi druhmi objektov.
Smyčka cez bunky
Tento postup bude prechádzať každou bunkou v rozsahu A1: A10 a bunku nastaví tak, aby bola rovná jej samej.
12345678 | Sub ForEachCell ()Dim Cell as RangePre každú bunku v listoch („List1“). Rozsah („A1: A10“)Cell.Offset (0, 1) .value = Cell.valueĎalšia bunkaKoniec pod |
Smyčka cez listy
Tento postup bude prechádzať každým listom v zošite a odkryje každý list.
12345678 | Sub ForEachSheets ()Dim ws As worksheetZa každé ws v listochws.Visible = TrueĎalší listKoniec pod |
Zopakujte si zošity
Tento postup sa bude opakovať v každom zošite a každý sa zavrie.
12345678 | Sub ForEachWorkbooks ()Dim wb ako zošitPre každý wb v zošitochwb.ZavrieťDalsie wbKoniec pod |
Smyčka cez tvary
Tento postup bude prechádzať všetkými tvarmi v hárku 1 a každý z nich sa odstráni.
12345678 | Sub ForEachShape ()Dim Shp As ShapePre každý list v listoch („list1“). TvaryShp. VymazaťĎalej ShpKoniec pod |
Smyčka cez grafy
Tento postup bude prechádzať všetkými grafmi v hárku 1 a každý z nich sa odstráni.
12345678 | Sub ForEachCharts ()Dim cht As ChartObjectPre každý cht In Sheets („Sheet1“). ChartObjectscht.DeleteĎalej chtKoniec pod |
Prejsť cez kontingenčné tabuľky
Tento postup sa bude opakovať v každej kontingenčnej tabuľke v hárku 1 a všetky sa vymažú
12345678 | Sub ForEachPivotTables ()Dim pvt As PivotTablePre každé Pvt v hárkoch („Sheet1“). Kontingenčné tabuľkypvt.ClearTableNasledujúca pvtKoniec pod |
Smyčka cez tabuľky
Tento postup bude prechádzať každou tabuľkou v hárku 1 a každú z nich odstráni.
12345678 | Sub ForEachTables ()Dim tbl ako ListObjectPre každý tbl v listoch („List1“). ListObjectstbl. VymazaťĎalej tblKoniec pod |
Prechádzajte položkami v poli
Tento postup bude prechádzať každou položkou v poli, každú hodnotu zobrazí v msgboxe,
12345678910 | Sub ForEachItemInArray ()Dim arrValue As VariantDim Item As VariantarrValue = Pole („Položka 1“, „Položka 2“, „Položka 3“)Pre každú položku v arrValuePoložka MsgBoxNasledujúca položkaKoniec pod |
Prechádzajte číslami
Tento postup bude prechádzať každým číslom v poli, každú hodnotu zobrazí v msgboxe,
12345678910111213 | Sub ForEachNumberInNumbers ()Dim arrNumber (1 To 3) As IntegerDim num As VariantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Pre každé číslo Prichádzajúce čísloMsgbox NumNasledujúce čísloKoniec pod |
Pre každého tvorcu slučiek
Príklady v tomto článku boli vytvorené s príponou Loop Builder v našom Doplnok VBA: AutoMacro.
The Loop Builder uľahčuje generovanie kódu na prechádzanie objektmi. AutoMacro obsahuje aj mnoho ďalších Generátory kódu, rozsiahly Knižnica kódov, a mocný Kódovacie nástroje.
Pre každého - Ak
Príkazy If v rámci slučiek môžete použiť aj na testovanie, či objekty spĺňajú určité kritériá, pričom akcie sa vykonávajú iba s objektmi, ktoré kritériá spĺňajú. Tu je príklad slučky medzi každou bunkou v rozsahu:
Pre každú bunku v dosahu - ak
1234567891011121314 | Sub If_Loop ()Dim Cell ako rozsahPre každú bunku v rozsahu („A2: A6“)Ak je Cell.Value> 0 PotomCell.Offset (0, 1) .Hodnota = "Pozitívne"ElseIf Cell.Value <0 PotomCell.Offset (0, 1) .Value = "Negative"InakCell.Offset (0, 1) .Hodnota = "Nula"Koniec AkĎalšia bunkaKoniec pod |
Pre každý bežný príklad
Zatvorte všetky zošity
Tento postup zavrie všetky otvorené zošity a uloží zmeny.
123456789 | Sub CloseVšetky pracovné knihy ()Dim wb ako zošitPre každý wb v zošitochwb.Zavrieť SaveChanges: = TrueDalsie wbKoniec pod |
Skryť všetky listy
Tento postup skryje všetky pracovné hárky.
12345678 | Sub HideAllSheets ()Dim ws As worksheetZa každé ws v listochws.Visible = xlSheetHiddenĎalšie wsKoniec pod |
Odkryť všetky listy
Tento postup odkryje všetky pracovné hárky.
12345678 | Sub UnhideAllSheets ()Dim ws As worksheetZa každé ws v listochws.Visible = xlSheetVisibleĎalej wsKoniec pod |
Chráňte všetky listy
Tento postup ochráni všetky pracovné listy.
12345678 | Sub ProtectAllSheets ()Dim ws As worksheetZa každé ws v listochws.Protect Password: = "…"Ďalšie wsKoniec pod |
Zrušte ochranu všetkých hárkov
Tento postup odstráni ochranu všetkých pracovných hárkov.
12345678 | Sub UnprotectAllSheets ()Dim ws As worksheetZa každé ws v listochws.Zrušte ochranu hesla: = "…"Ďalšie wsKoniec pod |
Odstráňte všetky tvary na všetkých pracovných listoch
Tento postup odstráni všetky tvary v zošite.
123456789101112 | Sub DeleteAllShapesOnAllWorksheets ()Tlmený list ako pracovný listDim Shp As ShapeZa každé ws v listochZa každý Shp In ws.ShapesShp. VymazaťĎalej ShpĎalšie wsKoniec pod |
Obnovte všetky kontingenčné tabuľky
Tento postup obnoví všetky kontingenčné tabuľky na hárku.
12345678 | Sub RefreshAllPivotTables ()Dim pvt As PivotTablePre každé Pvt v hárkoch („Sheet1“). Kontingenčné tabuľkypvt.RefreshTableNasledujúca pvtKoniec pod |
Použitie pre každého v programe Access VBA
Smyčka For each funguje v programe Access VBA rovnako ako v programe Excel VBA. Nasledujúci príklad odstráni všetky tabuľky v aktuálnej databáze.
123456789 | Sub RemoveAllTables ()Dim tdf ako TableDefDim dbs ako databázaNastaviť dbs = CurrentDbZa každý tdf v dbs.TableDefsDoCmd.DeleteObject tdf.NameSlučkaNastaviť dbs = ničKoniec pod |