VBA pre každý príklad (rýchly odkaz)

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

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave