VBA dla każdego przykładu (szybkie odniesienie)

Ten samouczek pokaże Ci przykłady użycia For Each Loop w VBA. Kliknij tutaj, aby dowiedzieć się więcej o pętlach.

Dla każdej pętli

Pętla For Each pozwala na przechodzenie przez pętlę każdy obiekt w kolekcji:

  • Wszystkie komórki w zakresie
  • Wszystkie arkusze w skoroszycie
  • Wszystkie otwarte skoroszyty
  • Wszystkie kształty w arkuszu
  • Wszystkie elementy w tablicy
  • i więcej!

Dla każdego: podstawowe przykłady

Te przykłady pokażą, jak skonfigurować pętle For Each, aby przechodziły przez różne typy obiektów.

Zapętlaj komórki

Ta procedura przejdzie przez każdą komórkę w zakresie A1:A10, ustawiając komórkę na prawo równe jej samej.

12345678 Sub dla każdej komórki()Przyciemnij komórkę jako zakresDla każdej komórki w arkuszach("Arkusz1").Range("A1:A10")Cell.Offset(0, 1)).value = Cell.valueNastępna komórkaNapis końcowy

Zapętlanie arkuszy

Ta procedura będzie przechodzić przez każdy arkusz w skoroszycie, odkrywając każdy arkusz.

12345678 Sub dla każdego arkusza()Dim ws As WorksheetDla każdego ws w arkuszachws.Widoczny = PrawdaNastępny arkuszNapis końcowy

Zapętlaj skoroszyty

Ta procedura przejdzie przez każdy skoroszyt, zamykając każdy z nich.

12345678 Sub dla każdego skoroszytu()Dim wb jako skoroszytDla każdego wb w skoroszytachwb.ZamknijNastępny wbNapis końcowy

Zapętlanie kształtów

Ta procedura przejdzie przez każdy kształt w Arkuszu1, usuwając każdy z nich.

12345678 Sub dla każdego kształtu()Dim Shp jako kształtDla każdego Shp w arkuszach ("Arkusz1"). KształtyShp.UsuńNastępnyNapis końcowy

Zapętlone wykresy

Ta procedura będzie przechodzić przez każdy wykres w arkuszu 1, usuwając każdy z nich.

12345678 Sub dla każdego wykresu()Dim cht As ChartObjectDla każdego cht In Sheets("Arkusz1").ChartObjectscht.UsuńNastępny czatNapis końcowy

Zapętlaj tabele przestawne

Ta procedura będzie przechodzić przez każdą tabelę przestawną w arkuszu 1, usuwając każdą z nich

12345678 Sub dla każdej tabeli przestawnej()Dim pvt jako tabela przestawnaDla każdego pvt w arkuszach ("Arkusz1"). Tabele przestawnepvt.Wyczyść tabelęNastępny pvtNapis końcowy

Zapętlaj tabele

Ta procedura będzie przechodzić przez każdą tabelę w arkuszu Sheet1, usuwając każdą z nich.

12345678 Sub dla każdej tabeli()Dim tbl As ListObjectDla każdej tabeli w arkuszach("Arkusz1").ListObjectstab.UsuńNastępna tblNapis końcowy

Zapętlaj elementy w tablicy

Ta procedura przejdzie przez każdy element tablicy, wyświetli każdą wartość w polu msgbox,

12345678910 Sub ForEachItemInArray()Dim arrValue As VariantPrzyciemnij element jako wariantarrValue = Array("Pozycja 1", "Pozycja 2", "Pozycja 3")Dla każdego elementu w arrValueElement MsgBoxNastępny przedmiotNapis końcowy

Zapętlaj liczby

Ta procedura przejdzie przez każdą liczbę w tablicy, wyświetli każdą wartość w polu msgbox,

12345678910111213 Sub ForEachNumberInNumbers()Dim arrNumber(1 do 3) jako liczba całkowitaDim num jako wariantliczba_przykladu(1) = 10liczba_arr(2) = 20liczba_arr(3) = 30For Each num In arrNumberMsgbox NumerNastępna liczbaNapis końcowy

Dla każdego konstruktora pętli

Przykłady w tym artykule zostały zbudowane z Konstruktor pętli w naszym Dodatek VBA: Automakro.

ten Konstruktor pętli bardzo ułatwia generowanie kodu do pętli obiektów. Automakro zawiera również wiele innych Generatory kodu, obszerny Biblioteka kodówi potężny Narzędzia do kodowania.

Dla każdego - Jeśli

Możesz również użyć instrukcji If w pętlach, aby sprawdzić, czy obiekty spełniają określone kryteria, wykonując tylko działania na tych obiektach, które spełniają te kryteria. Oto przykład przechodzenia przez każdą komórkę w zakresie:

Dla każdej komórki w zakresie - Jeśli

1234567891011121314 Sub If_Loop()Dim Cell jako zakresDla każdej komórki w zakresie ("A2:A6")Jeśli Komórka.Wartość > 0 WtedyCell.Offset(0, 1).Value = "Dodatni"ElseIf Cell.Value < 0 WtedyCell.Offset(0, 1).Value = "Ujemna"W przeciwnym razieCell.Offset(0, 1).Value = "Zero"Zakończ, jeśliNastępna komórkaNapis końcowy

Dla każdego typowego przykładu

Zamknij wszystkie skoroszyty

Ta procedura zamknie wszystkie otwarte skoroszyty, zapisując zmiany.

123456789 Sub Zamknij Wszystkie Skoroszyty()Dim wb jako skoroszytDla każdego wb w skoroszytachwb.Close SaveChanges:=TrueNastępny wbNapis końcowy

Ukryj wszystkie arkusze

Ta procedura ukryje wszystkie arkusze.

12345678 Sub Ukryj wszystkie arkusze()Dim ws As WorksheetDla każdego ws w arkuszachws.Visible = xlSheetHiddenNastępnyNapis końcowy

Odkryj wszystkie arkusze

Ta procedura odkryje wszystkie arkusze.

12345678 Sub Odkryj wszystkie arkusze()Dim ws As WorksheetDla każdego ws w arkuszachws.Visible = xlSheetVisibleNastępnyNapis końcowy

Chroń wszystkie arkusze

Ta procedura ochroni wszystkie arkusze.

12345678 Sub chroń wszystkie arkusze()Dim ws As WorksheetDla każdego ws w arkuszachws.Chroń hasło:="…"NastępnyNapis końcowy

Odblokuj wszystkie arkusze

Ta procedura usunie ochronę wszystkich arkuszy.

12345678 Sub UnprotectAllArkusze()Dim ws As WorksheetDla każdego ws w arkuszachws.Unprotect Password:="… "NastępnyNapis końcowy

Usuń wszystkie kształty ze wszystkich arkuszy Work

Ta procedura spowoduje usunięcie wszystkich kształtów ze skoroszytu.

123456789101112 Sub Usuń wszystkie kształty na wszystkich arkuszach roboczych()Przyciemnij arkusz jako arkusz roboczyDim Shp jako kształtDla każdego ws w arkuszachDla każdego Shp w ws.KształtyShp.UsuńNastępny ShpNastępnyNapis końcowy

Odśwież wszystkie tabele przestawne

Ta procedura odświeży wszystkie tabele przestawne w arkuszu.

12345678 Sub Odśwież wszystkie tabele przestawne()Dim pvt jako tabela przestawnaDla każdego pvt w arkuszach ("Arkusz1"). Tabele przestawnepvt.RefreshTableNastępny pvtNapis końcowy

Używanie For Each w Access VBA

Pętla For Each działa w taki sam sposób w programie Access VBA, jak w programie Excel VBA. Poniższy przykład usunie wszystkie tabele z bieżącej bazy danych.

123456789 Sub Usuń wszystkie tabele()Dim tdf As TableDefDim dbs jako baza danychUstaw dbs = Bieżąca baza danychDla każdego tdf w dbs.TableDefsDoCmd.DeleteObject tdf.NamePętlaUstaw dbs = NicNapis końcowy

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave