Ako používať VBA pre každú slučku? (s príkladmi programu Excel)

Excel VBA pre každú slučku

VBA pre každú slučku prechádza celou zbierkou predmetov alebo predmetov a vykonáva podobnú sadu činností. Zohľadní všetky dostupné zadané objekty a vykoná inštruovanú činnosť v každom objekte.

Vo VBA je povinné porozumieť cyklom. Smyčka vám umožňuje vykonávať rovnaký druh činnosti pre mnoho buniek alebo objektov v programe Excel. V dnešnom článku sa zameriame na mechanizmus For each Loop.

Syntax

Pre každú slučku môže prechádzať všetkou nastavenou zbierkou predmetov alebo predmetov. Skupina nie je nič iné ako „Všetky otvorené zošity“, „Všetky pracovné listy v zošite“, „Všetky kolekcie tvarov a grafov v zošite.“

Pozrime sa na syntax.

Pre každý objekt v zbierke Čo robiť? Ďalší objekt

Napríklad máte vo svojom zošite 10 listov a chcete skryť všetky listy okrem toho, v ktorom sa nachádzate. Môžete ich skryť ručne? Áno, môžete, ale čo keď máte takých 100 listov? Nie je to zdĺhavá a časovo náročná úloha? Môžete to urobiť pomocou pre každú slučku.

Ako používať každú slučku vo VBA? (Príklady)

Príklad č. 1 - Vložte rovnaký text do všetkých hárkov

Uvidíme, ako použiť FOR EACH vo VBA na jednoduchom príklade. Predpokladajme, že máte v zošite 5 pracovných hárkov a chcete do všetkých pracovných hárkov v bunke A1 vložiť slovo „Hello“.

Môžeme to urobiť S KAŽDOU SLUČKOU. Jedna vec, ktorú si tu musíte pamätať, je, že túto činnosť vykonávame v každom pracovnom hárku, nie v rovnakom pracovnom hárku. Podľa nasledujúcich pokynov napíšete kód VBA.

Krok 1: Spustite makro programu Excel.

Kód:

Sub For_Each_Example1 () End Sub

Krok 2: Pretože máme na mysli pracovné hárky, deklarujte premennú ako „Pracovný list“.

Kód:

Sub For_Each_Example1 () Dim Ws ako pracovný hárok End Sub

Krok 3: Teraz pomocou FOR EACH LOOP musíme odkázať každý pracovný hárok v aktívnom zošite.

Kód:

Sub For_Each_Example1 () Dim Ws ako pracovný hárok pre každú Ws v ActiveWorkbooku. Pracovné listy Next Ws End Sub

Krok 4: Teraz do každého pracovného hárka napíšte, čo chceme robiť. V každom pracovnom hárku musíme do bunky A1 vložiť slovo „ahoj“.

Kód:

Sub For_Each_Example1 () Dim Ws ako pracovný hárok pre každú Ws v ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Krok 5: Teraz spustite tento kód manuálne pomocou možnosti alebo stlačte klávesovú skratku F5. Nezáleží na tom, koľko listov máte; vloží slovo „Hello“ do všetkých pracovných hárkov.

Príklad č. 2 - Skryť všetky hárky

Ako sme už povedali v príspevku, čo ak máte stovky hárkov na skrytie okrem toho, v ktorom sa nachádzate. Použitie Pre každú slučku môžeme skryť všetky hárky v programe Excel.

Krok 1: Spustite makro svojím menom.

Kód:

Sub For_Each_Example2 () End Sub

Krok 2: Deklarujte premennú ako „ Ws.“

Kód:

Sub For_Each_Example2 () Dim Ws ako pracovný hárok End Sub

Krok 3: Teraz musíte v každom pracovnom hárku tento list skryť.

Kód:

Sub For_Each_Example2 () Dim Ws ako pracovný hárok pre každú Ws v ActiveWorkbooku. Pracovné listy Ws.Visible = xlSheetVeryHidden Next Ws End Sub

Krok 4: Ak však spustíte vyššie uvedený kód, pokúsi sa skryť všetky hárky, ale program Excel potrebuje aspoň jeden viditeľný hárok. Musíme teda povedať, ktorý hárok sa nemá skrývať.

Kód:

Sub For_Each_Example2 () Dim Ws ako pracovný hárok pre každú Ws v ActiveWorkbook.Worksheets Ak Ws.Name "Hlavný list", potom Ws.Visible = xlSheetVeryHidden Koniec Ak Nasledujúci Ws Koniec Sub

Symbol operátora znamená nerovný sa vo 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šiť ochranu všetkých hárkov: Na základe podobnej poznámky môžeme pomocou VBA zrušiť aj ochranu všetkých hárkov chránených v zošite. Musíme vložiť slovo Unprotect a heslo.

Kód:

Sub For_Each_Example6 () Dim Ws ako pracovný hárok pre každú Ws v ActiveWorkbooku. Pracovné listy Ws.Unprotect Password: = "Excel @ 2019" Ďalšia Ws End Sub

Na čo treba pamätať

  • Každá je určená na zbierku predmetov.
  • Zváži všetky zadané objekty v zadanom zošite.
  • Pri deklarovaní premennej potrebujeme, na ktorý objekt odkazujeme - napríklad pracovný hárok, zošit, graf atď.

Zaujímavé články...