Jak používat VBA pro každou smyčku? (s příklady aplikace Excel)

Excel VBA pro každou smyčku

VBA pro každou smyčku prochází celou kolekcí předmětů nebo předmětů a provádí podobnou sadu činností. Vezme v úvahu všechny dostupné zadané objekty a provede instruovanou činnost v každém objektu.

Ve VBA je povinné porozumět smyčkám ve VBA. Smyčka umožňuje provádět stejný druh činnosti pro mnoho buněk nebo objektů v aplikaci Excel. V dnešním článku se zaměříme na mechanismus For each Loop.

Syntax

Pro každou smyčku lze procházet celou sadou objektů nebo předmětů. Kolekce není nic jiného než „Všechny otevřené sešity“, „Všechny pracovní listy v sešitu“, „Všechna kolekce tvarů a grafů v sešitu“.

Podívejme se na syntaxi.

Pro každý objekt ve sbírce Co dělat? Další objekt

Například máte v sešitu 10 listů a chcete skrýt všechny listy kromě toho, ve kterém se nacházíte. Můžete je skrýt ručně, ano, ale co když máte 100 takových listů, není to nuda a čas -konzumující úkol. Můžete to udělat pomocí pro každou smyčku.

Jak používat pro každou smyčku ve VBA? (Příklady)

Tuto šablonu VBA pro každou smyčku si můžete stáhnout zde - VBA pro každou šablonu smyčky

Příklad č. 1 - Vložte stejný text do všech listů

Uvidíme, jak použít FOR EACH ve VBA na jednoduchém příkladu. Předpokládejme, že máte v sešitu 5 listů a chcete do všech listů v buňce A1 vložit slovo „Hello“.

Můžeme to udělat s KAŽDOU smyčkou. Jedna věc, kterou si musíte zapamatovat, je, že tuto činnost ve skutečnosti provádíme v každém listu, ne ve stejném listu. Při psaní kódu VBA postupujte podle následujících kroků.

Krok 1: Spusťte makro aplikace Excel.

Kód:

 Sub For_Each_Example1 () End Sub 

Krok 2: Jelikož odkazujeme na pracovní listy, deklarujte proměnnou jako „Pracovní list“.

Kód:

 Sub For_Each_Example1 () Dim Ws jako list End End Sub 

Krok 3: Nyní pomocí FOR EACH LOOP musíme odkazovat na každý list v aktivním sešitu.

Kód:

 Sub For_Each_Example1 () Dim Ws jako list pro každou Ws v ActiveWorkbooku. Pracovní listy Next Ws End Sub 

Krok 4: Nyní napište, co chceme dělat, do každého listu. V každém listu musíme do buňky A1 vložit slovo „ahoj“.

Kód: 

 Sub For_Each_Example1 () Dim Ws jako list pro každou Ws v ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Další Ws End Sub 

Krok 5: Nyní tento kód spusťte ručně pomocí možnosti nebo stiskněte klávesovou zkratku F5, nezáleží na tom, kolik listů máte, vloží slovo „Hello“ do všech listů.

Příklad č. 2 - Skrýt všechny listy

Jak již bylo řečeno dříve v příspěvku, co když máte stovky listů ke skrytí kromě toho, ve kterém se nacházíte. Použití U každé smyčky můžeme skrýt všechny listy v aplikaci Excel.

Krok 1: Spusťte makro svým jménem.

Kód:

 Sub For_Each_Example2 () End Sub 

Krok 2: Deklarujte proměnnou jako „ Ws “.

Kód:

 Sub For_Each_Example2 () Dim Ws jako list End Sub 

Krok 3: Nyní v každém listu musíte list skrýt.

Kód:

 Sub For_Each_Example2 () Dim Ws jako pracovní list pro každou Ws v ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub 

Krok 4: Ale pokud spustíte výše uvedený kód, pokusí se skrýt všechny listy, ale Excel potřebuje alespoň jeden list, aby byl viditelný. Musíme tedy říct, který list se nemá skrýt.

Kód:

 Sub For_Each_Example2 () Dim Ws jako pracovní list pro každou Ws v ActiveWorkbook.Worksheets Pokud Ws.Name "Hlavní list", pak Ws.Visible = xlSheetVeryHidden Konec Pokud další Ws End Sub 

Symbol operátora znamená, že se nerovná ve VBA .

Kód tedy říká, že když procházíte všemi listy v aktivním sešitu, skryjte se, pouze pokud název listu neodpovídá názvu listu hlavního listu.

To lze provést pomocí příkazu IF ve VBA. Napište kód jako IF Ws.Name „Hlavní list“ Poté skryjte, nebo pokud se rovná názvu listu „Hlavní list“, pak se neskrývejte.

Krok 5: Nyní spusťte kód pomocí klávesy F5 nebo ručně, poté skryje celý list kromě toho, který je pojmenován jako „Hlavní list“.

Příklad č. 3 - Odkrýt všechny listy

Už jsme viděli, jak skrýt všechny listy kromě té, ve které jsme. Podobně můžeme také odkrýt všechny listy.

Musíme jen změnit kód z xlSheetVeryHidden na xlSheetVisible.

Kód:

 Sub For_Each_Example3 () Dim Ws As Worksheet For each Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub 

Tady podmínku IF nepotřebujeme, protože odkryjeme všechny listy. Pokud nechcete zobrazit žádný konkrétní list, můžete použít podmínku IF a zadat název listu.

Příklad č. 4 - Chraňte a nechraňte všechny listy

Chránit všechny listy: Všechny listy v sešitu můžeme chránit pouze pomocí kódu. Celý kód je stejná jediná věc, kterou zde musíme udělat, je místo Ws. Viditelné, musíme dát kód Ws. Chraňte a zadejte heslo.

Kód:

 Sub For_Each_Example4 () Dim Ws jako pracovní list pro každou Ws v ActiveWorkbook.Worksheets Ws.Protect Password: = "Excel @ 2019" Další Ws End Sub 

Zrušit ochranu všech listů : V podobné poznámce můžeme pomocí vba také zrušit ochranu všech listů, které byly chráněny v sešitu. Musíme jen dát slovo Unprotect a heslo.

Kód:

 Sub For_Each_Example6 () Dim Ws jako pracovní list pro každou Ws v ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 2019" Další Ws End Sub 

Věci k zapamatování

  • Každý z nich je určen pro sběr předmětů.
  • Zvažuje všechny zadané objekty v zadaném sešitu.
  • Při deklaraci proměnné potřebujeme objekt, na který odkazujeme. Například pracovní list, sešit, graf atd.

$config[zx-auto] not found$config[zx-overlay] not found