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. 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 nastavenou kolekcí předmětů nebo předmětů. Skupina není nic jiného než „Všechny otevřené sešity“, „Všechny 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, můžete, ale co když máte takových 100 listů? Není to zdlouhavý a časově náročný úkol? Můžete to udělat pomocí pro každou smyčku.

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

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 aktivitu 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í do každého listu napište, co chceme dělat. 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 End Sub

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

Kód:

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

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

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 .

So code says when you are looping through all the worksheets in the active workbook, hide only if the sheet name is not equal to the sheet name of Main Sheet.

This can be done by using the IF statement in VBA. Write the code as IF Ws.Name “Main Sheet” Then hide or if it is equal to the sheet name “Main Sheet,” then don’t hide.

Step 5: Now run the code using the F5 key or manually. Then, it will hide all the worksheets except the one named “Main Sheet.”

Example #3 - Unhide All the Sheets

We have seen how to hide all sheets except the one we are in. Similarly, we can unhide all the worksheets as well.

We need to change the code from xlSheetVeryHidden to xlSheetVisible.

Code:

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

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet, then you can use the IF condition and supply the sheet name.

Example #4 - Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the principle is the same only thing we need to do here is instead of Ws. Visible, we need to put the code Ws. Protect and type the password.

Code:

Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub

Zrušení ochrany všech listů: V podobné poznámce můžeme pomocí VBA také zrušit ochranu všech listů chráněných v sešitu. Musíme 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, na který objekt odkazujeme - například sešit, sešit, graf atd.

Zajímavé články...