Chcesz zautomatyzować powtarzalne zadania w Excelu przy użyciu języka VBA? Dowiedz się, jak używać pętli For Each do efektywnego manipulowania danymi w arkuszach kalkulacyjnych.
Pętle i VBA idą w parze i nie bez powodu. W przypadku obiektów pakietu Microsoft Office, takich jak skoroszyty, arkusze kalkulacyjne i zakresy, pętle mogą pomóc w stosunkowo łatwym przełączaniu się między nimi.
Podczas gdy mniej więcej wszystkie pętle VBA działają dobrze z obiektami, pętla „dla każdego” jest jedną z najlepszych opcji pracy z kolekcjami obiektów. Jeśli jesteś nowicjuszem w Excel VBA i chcesz opanować pętle for, możesz szybko nauczyć się z niektórych z tych przykładów. Oto wszystko, co musisz wiedzieć o tej kwintesencji pętli.
Dla składni każdej pętli
Składnia pętli for each jest dość podobna do zwykłej pętli for w programie Excel VBA. Oto składnia:
Dla każdej nazwa_zmiennej w kolekcji_obiektów
[oświadczenie]
[oświadczenie]
[oświadczenie]
Następna nazwa_zmiennej
Pętla zaczyna się od słowa kluczowego „for each”; możesz użyć dowolnej nazwy zmiennej, po której następuje kolekcja obiektów. Obiektem w każdej pętli for mogą być komórki, zakresy, arkusze, a nawet skoroszyty. Takie jest piękno tej pętli; zapewnia elastyczność pracy z różnymi kolekcjami programu Excel.
Pętla przechodzi przez każdą wartość kolekcji i przechowuje odwołanie w zdefiniowanej nazwie zmiennej. Po wykonaniu VBA wykonuje zapisane instrukcje w pętli i przechodzi do następnego obiektu w kolekcji ( Następny słowo kluczowe jest tutaj pomocne). Zrozummy strukturę kodu na podstawowym przykładzie.
Jak korzystać z pętli For Each w programie Excel VBA
Załóżmy, że chcesz wydrukować liczbę w komórkach od A1 do A10. Najlepszym podejściem jest użycie pętli for each z funkcją range i pozwolenie kodowi na zrobienie tego, co potrzebne. Oto jak możesz wykonać to proste zadanie:
- Otwórz edytor kodu VBA, naciskając Alt + F11.
- Wstaw moduł, klikając przycisk Moduł opcja w ramach Wstawić patka.
- Utwórz procedurę podrzędną za pomocą polecenia sub() w oknie modułu edytora kodu. Upewnij się, że przypisałeś znaczącą nazwę do procedury podrzędnej. W tym przykładzie możesz użyć nazwy for_each_loop.
Teraz, gdy podstawy są już na uboczu, nadszedł czas, aby zacząć pisać kod. W podprogramie wpisz następujące polecenia:
Ciemna komórka Jak zakres
Dla każdej komórki W Pościel(„Arkusz1”).Zakres(„A1:A10”)
komórka.wartość = 10
Następna komórka
Kiedy kod jest wykonywany, C zmienna będzie przechowywać wartość A1. Następnie, przechodząc do instrukcji w pętli, ocenia polecenie i wprowadza wartość 10 do zdefiniowanej komórki, tj. komórki A1.
Wreszcie, przechodząc do słowa kluczowego Next, przechodzi do następnej wartości, tj. komórki A2. Pętla działa, aż dotrze do komórki A10. To jest ostateczne wyjście:
Korzystanie z pętli z obiektami: komórki, arkusze i skoroszyty
Program Excel ma trzy główne typy obiektów, z którymi regularnie pracujesz. Są to komórki, arkusze i skoroszyty. Oto jak możesz użyć pętli ze wszystkimi trzema typami obiektów.
Praca z komórkami i pętlami razem
Załóżmy, że chcesz dodać wartość i warunki formatowania do zakresu komórek w Arkuszu1. W pierwszym kroku musisz zdefiniować warunki w pętli, a następnie polecenia formatujące.
Wpisz następujący kod w ramach procedury podrzędnej.
Subfor_each_loop()
słabe c Jak Zakres
Dla każdego c w arkuszach („Arkusz1”).Zakres(„A1:A10”)
Z C
Wartość = 10
.Czcionka. Kolor = vbCzerwony
.Czcionka. pogrubiony = PRAWDA
.Czcionka. Przekreślenie = PRAWDA
KoniecZ
następny c
Koniec Pod
The z funkcja jest przydatna podczas wykonywania wielu funkcji z jednym określonym obiektem. Ponieważ chcesz wykonać serię zadań ze zmienną c, możesz połączyć je wszystkie za pomocą funkcji with..end with.
Pętla przyrównuje wartość c do każdej wartości komórki i wprowadza wartość jako 10. Dodatkowo zmienia kolor komórki na czerwony, pogrubia wartość i przekreśla ją. Po wykonaniu wszystkich kroków przechodzi do następnej zdefiniowanej wartości w zakresie.
Używanie pętli do kontrolowania arkuszy
Podobnie jak w powyższym przykładzie, możesz użyć pętli for each do kontrolowania arkuszy. Co powiesz na zmianę nazwy Arkusz1 na Arkusz3 za pomocą VBA?
Możesz użyć następującego kodu, aby zmienić nazwę istniejącego arkusza w programie Excel przy użyciu języka VBA:
Subfor_each_loop_sheets()
DlaKażdysztWTen skoroszyt.Pościel
jeśli szt. Imię = „Arkusz1” Następnie
szt. Imię = „Arkusz3”
KoniecJeśli
następny szt
Koniec Pod
Kod przechodzi przez każdy arkusz w skoroszycie i sprawdza nazwę każdego arkusza. Jeśli napotka nazwę Arkusz1, zmienia ją na Arkusz3. Przechodzi przez pozostałe arkusze, jeśli takie istnieją, w skoroszycie. Gdy wykonanie kodu dotrze do ostatniego arkusza, wychodzi z pętli i procedury podrzędnej.
Wśród innych typowych zastosowań możesz łączyć wiele arkuszy roboczych za pomocą VBA i aktualizuj zawartość w jednym arkuszu za pomocą pętli.
Przełączaj skoroszyty za pomocą pętli
Na koniec możesz użyć pętli for each, aby przełączać się między różnymi skoroszytami i wykonywać określone zadania. Zademonstrujmy tę funkcję na przykładzie.
Możesz użyć poleceń VBA, aby dodać trzy nowe skoroszyty i zamknąć razem wszystkie otwarte. Oto jak możesz to zrobić:
Sub loop_wrkbook()
Ciemny skoroszyt Jak zeszyt ćwiczeń
Zeszyty ćwiczeń.Dodać
Zeszyty ćwiczeń.Dodać
Zeszyty ćwiczeń.Dodać
Dla każdego skoroszytu w skoroszytach
skoroszyt.Zamknąć
Następny podręcznik
Koniec Pod
Powyższy kod zamknie również skoroszyt makr; upewnij się, że zapisałeś swoje kody przed uruchomieniem tego kodu.
Ponieważ pętle mają wiele zastosowań, możesz również konsolidacja danych z wielu skoroszytów w jednym skoroszycie.
Używanie zagnieżdżonej instrukcji IF z pętlą
Podobnie jak w powyższym przykładzie, możesz użyć instrukcji IF w pętli, aby sprawdzić określone warunki. Zmieńmy kolor tła komórki na podstawie wartości komórki.
W komórkach A1:A20 jest kilka liczb losowych. Możesz napisać pętlę, aby przejść przez każdą komórkę w zakresie; jeśli wartość komórki jest mniejsza niż 10, kolor komórki powinien zmienić się na czerwony. Jeśli wartość komórki przekracza 10, powinna zmienić kolor na zielony. Użyj w tym celu następującego kodu:
Pętla podrzędna_w_if()
słabe c Jak Zakres
Dla każdego c w arkuszach („Arkusz4”).Zakres(„A1:A20”)
JeśliC.Wartość < 10 Następnie
C. Wnętrze. Indeks koloru = 3
W przeciwnym razie: C. Wnętrze. Indeks koloru = 4
KoniecJeśli
następny c
Koniec Pod
Tak wygląda wyjście:
Korzystanie z pętli w programie Excel VBA
Excel VBA nie ogranicza się tylko do pętli for each. Istnieje wiele pomocnych pętli, które pozwalają z łatwością wykonywać różne funkcje. Pożegnaj się z przyziemnymi, ręcznymi zadaniami, ponieważ pętle języka VBA, takie jak pętla for, wykonuj while i rób, dopóki pętle nie wkroczą, aby ułatwić Ci życie.