Jak używać VBA dla każdej pętli? (z przykładami Excela)

Excel VBA dla każdej pętli

VBA For Each Loop przechodzi przez całą kolekcję obiektów lub elementów i wykonuje podobny zestaw działań. Weźmie pod uwagę wszystkie dostępne określone obiekty i wykona określone czynności w każdym obiekcie.

W języku VBA zrozumienie pętli jest obowiązkowe. Pętla umożliwia wykonywanie tego samego rodzaju czynności dla wielu komórek lub obiektów w programie Excel. W dzisiejszym artykule skoncentrujemy się na mechanizmie For Each Loop.

Składnia

For Each Loop może przechodzić przez całą kolekcję obiektów lub elementów. Grupa to nic innego jak „Wszystkie otwarte skoroszyty”, „Wszystkie arkusze w skoroszycie”, „Cała kolekcja kształtów i wykresów w skoroszycie”.

Spójrzmy na składnię.

Co zrobić dla każdego obiektu w kolekcji? Następny obiekt

Na przykład, masz 10 arkuszy w swoim skoroszycie i chcesz ukryć wszystkie arkusze oprócz tego, w którym się znajdujesz. Czy możesz ukryć ręcznie? Tak, możesz, ale co, jeśli masz 100 takich arkuszy? Czy nie jest to żmudne i czasochłonne zadanie? Możesz to zrobić za pomocą dla każdej pętli.

Jak używać dla każdej pętli w VBA? (Przykłady)

Przykład 1 - Wstaw ten sam tekst we wszystkich arkuszach

Zobaczymy, jak używać DLA KAŻDEGO w VBA na prostym przykładzie. Załóżmy, że w skoroszycie znajduje się 5 arkuszy i chcesz wstawić słowo „Cześć” we wszystkich arkuszach w komórce A1.

Możemy to zrobić za pomocą FOR EACH LOOP. Jedną rzeczą, o której musisz tutaj pamiętać, jest to, że wykonujemy tę czynność w każdym arkuszu, a nie w tym samym arkuszu. Wykonaj poniższe kroki, aby napisać kod VBA.

Krok 1: Uruchom makro programu Excel.

Kod:

Sub For_Each_Example1 () End Sub

Krok 2: Ponieważ odnosimy się do arkuszy roboczych, zadeklaruj zmienną jako „Arkusz roboczy”.

Kod:

Sub For_Each_Example1 () Dim Ws As Worksheet End Sub

Krok 3: Teraz, używając DLA KAŻDEJ PĘTLI, musimy odnieść się do każdego arkusza w aktywnym skoroszycie.

Kod:

Sub For_Each_Example1 () Dim Ws As Worksheet For each Ws in ActiveWorkbook.Worksheets Next Ws End Sub

Krok 4: Teraz napisz, co chcemy zrobić w każdym arkuszu. W każdym arkuszu musimy umieścić słowo „Hello” w komórce A1.

Kod:

Sub For_Each_Example1 () Dim Ws As Worksheet For each Ws In ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub

Krok 5: Teraz uruchom ten kod ręcznie za pomocą opcji lub naciśnij klawisz skrótu F5. Nie ma znaczenia, ile masz arkuszy; wstawi słowo „Hello” do wszystkich arkuszy.

Przykład 2 - Ukryj wszystkie arkusze

Jak powiedziano wcześniej w poście, co zrobić, jeśli masz setki arkuszy do ukrycia oprócz tego, w którym się znajdujesz. Korzystanie z każdej pętli, możemy ukryć wszystkie arkusze w programie Excel.

Krok 1: Uruchom makro swoim imieniem.

Kod:

Sub For_Each_Example2 () End Sub

Krok 2: zadeklaruj zmienną jako „ Ws”.

Kod:

Sub For_Each_Example2 () Dim Ws As Worksheet End Sub

Krok 3: Teraz w każdym arkuszu roboczym musisz ukryć arkusz.

Kod:

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

Krok 4: Ale jeśli uruchomisz powyższy kod, spróbuje ukryć wszystkie arkusze, ale program Excel wymaga co najmniej jednego widocznego arkusza. Musimy więc powiedzieć, którego arkusza nie ukrywać.

Kod:

Sub For_Each_Example2 () Dim Ws As Worksheet For each Ws in ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub

W symbolu operatora środki nierówne 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

Odblokuj wszystkie arkusze: Podobnie, używając VBA, możemy również wyłączyć ochronę wszystkich arkuszy chronionych w skoroszycie. Musimy umieścić słowo Unprotect i hasło.

Kod:

Sub For_Each_Example6 () Dim Ws As Worksheet For each Ws In ActiveWorkbook.Worksheets Ws.Unprotect Hasło: = "Excel @ 2019" Next Ws End Sub

Rzeczy do zapamiętania

  • Każdy służy do zbierania przedmiotów.
  • Uwzględni wszystkie określone obiekty w określonym skoroszycie.
  • Deklarując zmienną potrzebujemy do jakiego obiektu się odwołujemy np. Arkusz, Skoroszyt, Wykres itp.

Interesujące artykuły...