Pętle VBA - Lista 4 najpopularniejszych typów pętli (z przykładami)

Spisie treści

Pętle Excel VBA

Pętle są powszechnie używane we wszystkich językach programowania, gdzie istnieje pewna potrzeba lub kryteria, kiedy potrzebujemy określonego kodu do uruchomienia w określonym czasie, używamy pętli dla tych kodów, teraz w VBA istnieje wiele typów pętli, takich jak Do while, Do until, For Loop i For each pętla, te pętle pomagają kodowi wykonać się do momentu spełnienia warunku.

Pozwólcie, że powiem to na samym początku. „Jeśli chcesz opanować język VBA, musisz opanować koncepcję pętli w makrach VBA”.

Pętla to nic innego jak przechodzenie przez zakres komórek, przechodzenie przez zakres obiektów w celu powtórzenia tego samego zadania w celu zebrania komórek lub obiektów. Zamiast wykonywać zadanie w oddzielnym zestawie wierszy kodu za pomocą pętli, możemy skrócić długość kodu do najmniejszego możliwego.

Lista 4 najlepszych typów pętli VBA

  1. Do następnej pętli
  2. Dla każdej pętli
  3. Do While Loop
  4. Zrób do pętli

Przyjrzyjmy się szczegółowo każdemu z tych typów.

Wpisz 1 - dla następnej pętli

Pętla For Next pozwala nam przechodzić przez zakres komórek i wykonywać to samo zadanie dla każdej komórki określonej w pętli. Tutaj musimy podać numer początkowy i końcowy.

Przykład

Na przykład, jeśli chcesz wstawić numery seryjne od 1 do 10, poniżej znajduje się tradycyjny sposób wstawiania numerów seryjnych.

Sub SerialNumber ()

Zakres („A1”). Wartość = 1
zakres („A2”). Wartość = 2
zakres („A3”). Wartość = 3
zakres („A4”). Wartość = 4
zakres („A5”). Wartość = 5
Zakres („A6”). Wartość = 6
Zakres („A7”). Wartość = 7
Zakres („A8”). Wartość = 8
Zakres („A9”). Wartość = 9
Zakres („A10”). Wartość = 10

Napis końcowy

Wygląda dobrze, prawda? Ale problem polega na tym, że tylko 10 razy potrzebujemy wykonać to zadanie. Ale wyobraź sobie, co jeśli chcesz wstawić 100 lub 1000 liczb, możesz napisać kod 100 lub 1000 linii. Jest to niemożliwe i tu przydaje się piękno pętli For Next.

Krok 1: Otwórz makro i zadeklaruj zmienną i jako liczbę całkowitą.

Sub Insert_Serial_Number ()

Dim i As Integer

Napis końcowy

Krok 2: Teraz otwórz pętlę For . Tutaj wspomnij o początku i końcu pętli, używając zmiennej i.

Krok 3: Teraz napisz kod, który chcesz wykonać. Musimy wstawić liczby od 1 do 10 w komórkach od A1 do A10. Zamiast stosować metodę Range, zastosuj metodę Cells.

Pyta o numer wiersza, ponieważ na początku zadeklarowaliśmy już zmienną i jako liczbę całkowitą. Jego wartość wynosi 1. Więc wspomnieć I jak numer rzędu i 1 jako numer kolumny.

Teraz wartość bieżącej wartości komórki powinna wynosić jeden, zamiast wspominać o numerze jeden, o którym mowa i jako wartość. Ponieważ za każdym uruchomieniem pętli czasowej wartość i będzie rosła o 1.

Teraz naciśnij klawisz F8, aby przejść do jednego wiersza. Naciśnij klawisz F8, aż dojdzie do pętli For.

Ten żółty kolor oznacza, że ​​wybrany wiersz kodu zostanie uruchomiony. Umieść kursor na I, a pokaże wartość jako zero.

Teraz naciśnij jeszcze raz klawisz F8 i umieść kursor na i i teraz wartość wynosi 1.

Zatem wartości i we wszystkich miejscach są teraz równe 1. „ Cells (I, 1) .value = I” oznacza Cells (1, 1) .value = 1.

Naciśnij klawisz F8 i zobacz wartość w komórce A1. Musisz zobaczyć 1 w komórce A1.

Teraz, jeśli naciśniesz klawisz F8, wróci on do pętli For jeszcze raz, ponieważ końcowe ograniczenie zmiennej i wynosi 10. Tym razem wartość I będzie wynosić 2.

Dla Next pętla będzie działać 10 razy i wstawiać numery seryjne od 1 do 10.

Typ # 2 - dla każdej pętli

Pętla For Each w VBA służy do przeglądania kolekcji obiektów. W przypadku następnej pętli przechodzi przez komórki i wykonuje zadanie, a pętla For Each przechodzi przez obiekty, takie jak Arkusze robocze, Wykresy, Skoroszyty, Kształty.

Korzystając z tej pętli, możemy przejrzeć wszystkie arkusze i wykonać niektóre zadania. Na przykład możesz przejrzeć wszystkie arkusze, aby ukryć i odkryć arkusze.

Przykład 1

Jeśli chcesz ukryć wszystkie arkusze z wyjątkiem arkusza, nad którym pracujesz, jak to zrobisz? Jeśli masz w skoroszycie 20 arkuszy, jest to proces czasochłonny. Ale dzięki pętli FOR EACH możemy wykonać to zadanie.

Mam 5 arkuszy i chcę ukryć wszystkie arkusze z wyjątkiem arkusza „Główny” poniżej kodu, który wykonałby to zadanie za mnie.

Sub To_Hide_All_Sheet ()

Dim Ws As Worksheet

Dla każdego Ws w ActiveWorkbook.Worksheets

Jeśli Ws.Name „Main”, to
Ws.Visible = xlSheetVeryHidden
End If

Następny Ws

Napis końcowy

Przykład nr 2

Jeśli chcesz odkryć wszystkie ukryte arkusze, poniższy kod wykona zadanie za Ciebie.

Sub To_UnHide_Specific_Sheet ()

Dim Ws As Worksheet

Dla każdego Ws w ActiveWorkbook.Worksheets

Ws.Visible = xlSheetVisible

Następny Ws

Napis końcowy

Typ # 3 - Do While Loop

Pętla Do While wykonuje zadanie, gdy podany warunek ma wartość TRUE, a gdy warunek stanie się FALSE, przestanie się zapętlać. W przeciwieństwie do pozostałych dwóch pętli, Do While testuje warunek na końcu pętli, a nie na początku.

Pokażę Ci przykład wstawiania numerów seryjnych za pomocą pętli Do While.

Sub Do_While_Example ()

Dim i As Integer

i = 1
Do While i <11
Cells (i, 1) .Value = i
i i = i + 1
Loop

Napis końcowy

Powyższa pętla będzie działać, gdy i będzie mniejsze niż 11 i będzie nadal wstawiać numery seryjne. W momencie , gdy stanę się większy niż 11, przestanie się zapętlać.

Wpisz # 4 - Do Until Loop

W przeciwieństwie do pętli Do While pętla Do Until nie działa, gdy warunek ma wartość TRUE; raczej wykonuje pętlę, dopóki warunek nie będzie FALSE. Na przykład spójrz na poniższy kod.

Sub Do_Until_Example ()

Dim i As Integer

i = 1
Do Until i = 11
Cells (i, 1) Wartość = i
i = i + 1
Pętla

Napis końcowy

Jedyną różnicą między pętlą Do While i Do Until jest określony przez nas operator. W Do, Chociaż wspomnieliśmy o uruchamianiu pętli, gdy i jest mniejsze niż (<), 11, ale w pętli do aż, wspomnieliśmy o uruchamianiu pętli, dopóki i nie jest równe (=) do 11.

Rzeczy do zapamiętania

  • Istnieje bardziej zaawansowany przykład pętli Excel VBA, ale szczegółowo omówimy każdą z nich w osobnym artykule.
  • Każda pętla jest przeznaczona dla zmiennych obiektowych.
  • Chociaż Do While & Do aż wygląda tak samo, wspominając o tym, że stan jest bardzo ważny.
  • Pętle to bardzo ważne pojęcia.

Interesujące artykuły...