VBA pro každý příklad (Rychlý průvodce)

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
wave wave wave wave wave