Tento tutoriál vám ukáže příklady použití pro každou smyčku ve VBA. Kliknutím sem se dozvíte více o smyčkách obecně.
Pro každou smyčku
For For Loop vám umožňuje procházet smyčkou každý objekt ve sbírce:
- Všechny buňky v rozsahu
- Všechny pracovní listy v sešitu
- Všechny otevřené sešity
- Všechny tvary v listu
- Všechny položky v poli
- a více!
Pro každého: Základní příklady
Tyto příklady ukážou, jak nastavit smyčky For Each na procházení různými typy objektů.
Smyčka skrz buňky
Tento postup bude procházet každou buňkou v rozsahu A1: A10 a nastaví buňku tak, aby byla rovná sobě.
12345678 | Sub ForEachCell ()Dim Cell jako rozsahPro každou buňku v listech („List1“). Rozsah („A1: A10“)Cell.Offset (0, 1) .value = Cell.valueDalší buňkaEnd Sub |
Smyčka přes listy
Tento postup bude procházet každým listem v sešitu a odkryje každý list.
12345678 | Sub ForEachSheets ()Dim ws As WorksheetZa každý ws v listechws.Visible = TrueDalší listEnd Sub |
Smyčka prostřednictvím sešitů
Tento postup bude procházet každým sešitem a každý zavře.
12345678 | Sub ForEachWorkbooks ()Dim wb jako sešitPro každý wb v sešitechwb. ZavřítDalší wbEnd Sub |
Smyčka skrz tvary
Tento postup bude procházet každým tvarem v List1, přičemž každý z nich bude odstraněn.
12345678 | Sub ForEachShape ()Dim Shp As ShapePro každý Shp v listech („List1“). TvaryShp. SmazatDalší ShpEnd Sub |
Smyčka přes grafy
Tento postup bude procházet každým grafem v List1, přičemž každý bude odstraněn.
12345678 | Sub ForEachCharts ()Dim cht As ChartObjectPro každý cht In Sheets („Sheet1“). ChartObjectscht.DeleteDalší chtEnd Sub |
Smyčka prostřednictvím kontingenčních tabulek
Tento postup bude procházet každou kontingenční tabulkou v Listu1, přičemž každý z nich bude vymazán
12345678 | Sub ForEachPivotTables ()Dim pvt As PivotTablePro každý soubor v tabulkách („List1“). Kontingenční tabulkypvt.ClearTableDalší pvtEnd Sub |
Projděte tabulky
Tento postup bude procházet každou tabulkou v Listu1 a každou odstraní.
12345678 | Sub ForEachTables ()Dim tbl jako ListObjectPro každý tbl v listech („List1“). ListObjectstbl. SmazatDalší tblEnd Sub |
Projděte položky v poli
Tento postup bude procházet každou položku v poli, zobrazí každou hodnotu v msgboxu,
12345678910 | Sub ForEachItemInArray ()Dim arrValue As VariantDim Item As VariantarrValue = Pole ("Položka 1", "Položka 2", "Položka 3")Pro každou položku In arrValuePoložka MsgBoxDalší položkaEnd Sub |
Smyčka přes čísla
Tento postup bude procházet každým číslem v poli, zobrazí každou hodnotu v msgboxu,
12345678910111213 | Sub ForEachNumberInNumbers ()Dim arrNumber (1 To 3) As IntegerDim num As VariantarrNumber (1) = 10arrNumber (2) = 20arrNumber (3) = 30Pro každé číslo v InNumberMsgbox NumDalší čísloEnd Sub |
Pro každého tvůrce smyček
Příklady v tomto článku byly vytvořeny pomocí Loop Builder v našem Doplněk VBA: AutoMacro.
The Loop Builder usnadňuje generování kódu pro procházení objekty. AutoMacro obsahuje také mnoho dalších Generátory kódu, rozsáhlý Knihovna kódů, a mocný Nástroje pro kódování.
Pro každého - pokud
Můžete také použít příkazy If v rámci smyček k testování, zda objekty splňují určitá kritéria, a provádět akce pouze s objekty, které kritéria splňují. Zde je příklad opakování každé buňky v rozsahu:
Pro každou buňku v dosahu - pokud
1234567891011121314 | Sub If_Loop ()Dim Cell jako rozsahPro každou buňku v dosahu („A2: A6“)Pokud Cell.Value> 0 ThenCell.Offset (0, 1) .Value = "Pozitivní"ElseIf Cell.Value <0 PotomCell.Offset (0, 1) .Value = "Negativní"JinýCell.Offset (0, 1) .Value = "Nula"Konec IfDalší buňkaEnd Sub |
Pro každý běžný příklad
Zavřít všechny sešity
Tento postup zavře všechny otevřené sešity a uloží změny.
123456789 | Dílčí zavřítVšechny pracovní sešity ()Dim wb jako sešitPro každý wb v sešitechwb.Zavřít SaveChanges: = TrueDalší wbEnd Sub |
Skrýt všechny listy
Tento postup skryje všechny listy.
12345678 | Sub HideAllSheets ()Dim ws As WorksheetZa každý ws v listechws.Visible = xlSheetHiddenDalší wsEnd Sub |
Odkrýt všechny listy
Tento postup odkryje všechny listy.
12345678 | Sub UnhideAllSheets ()Dim ws As WorksheetZa každý ws v listechws.Visible = xlSheetVisibleDalší wsEnd Sub |
Chraňte všechny listy
Tento postup ochrání všechny pracovní listy.
12345678 | Sub ProtectAllSheets ()Dim ws As WorksheetZa každý ws v listechws.Protect Password: = "…"Další wsEnd Sub |
Zrušte ochranu všech listů
Tento postup odstraní všechny listy.
12345678 | Sub UnprotectAllSheets ()Dim ws As WorksheetZa každý ws v listechws.Unprotect heslo: = "…"Další wsEnd Sub |
Odstranit všechny tvary na všech listech
Tento postup odstraní všechny tvary v sešitu.
123456789101112 | Dílčí DeleteAllShapesOnAllWorksheets ()Dim Sheet As WorksheetDim Shp As ShapeZa každý ws v listechPro každý Shp In ws.ShapesShp. SmazatDalší ShpDalší wsEnd Sub |
Obnovit všechny kontingenční tabulky
Tento postup obnoví všechny kontingenční tabulky na listu.
12345678 | Dílčí RefreshAllPivotTables ()Dim pvt As PivotTablePro každý soubor v tabulkách („List1“). Kontingenční tabulkypvt.RefreshTableDalší pvtEnd Sub |
Použití pro každého v aplikaci Access VBA
Smyčka For Every funguje v Access VBA stejně jako v Excel VBA. Následující příklad odebere všechny tabulky v aktuální databázi.
123456789 | Dílčí RemoveAllTables ()Dim tdf jako TableDefDim dbs jako databázeNastavit dbs = CurrentDbPro každý tdf v dbs.TableDefsDoCmd.DeleteObject tdf.NameSmyčkaNastavit dbs = nicEnd Sub |