Pętle Excel VBA: For Next, Do While, Do Do, For Each (z przykładami)

Aby jak najlepiej wykorzystać program Excel i VBA, musisz wiedzieć, jak efektywnie korzystać z pętli.

W VBA pętle pozwalają przejść przez zestaw obiektów/wartości i przeanalizować je jeden po drugim. Możesz także wykonać określone zadania dla każdej pętli.

Oto prosty przykład użycia pętli VBA w programie Excel.

Załóżmy, że masz zestaw danych i chcesz podświetlić wszystkie komórki w parzystych wierszach. Możesz użyć pętli VBA, aby przejść przez zakres i przeanalizować każdy numer wiersza komórki. Jeśli okaże się, że jest równy, nadajesz mu kolor, w przeciwnym razie zostawiasz go tak, jak jest.

Teraz jest to oczywiście bardzo proste zapętlenie w Excel VBA (możesz to również zrobić za pomocą formatowania warunkowego).

W prawdziwym życiu możesz zrobić znacznie więcej dzięki pętlom VBA w programie Excel, które pomogą Ci zautomatyzować zadania.

Oto kilka bardziej praktycznych przykładów, w których przydatne mogą być pętle VBA:

  • Przechodzenie przez zakres komórek i analizowanie każdej komórki (zaznaczanie komórek z określonym tekstem).
  • Przejrzyj wszystkie arkusze i zrób coś z każdym z nich (na przykład chroń/odbezpiecz go).
  • Przejdź przez wszystkie otwarte skoroszyty (i zapisz każdy skoroszyt lub zamknij wszystkie oprócz aktywnego skoroszytu).
  • Przewiń wszystkie znaki w komórce (i wyodrębnij część numeryczną z ciągu).
  • Przeprowadź pętlę przez wszystkie wartości w tablicy.
  • Przechodź przez wszystkie wykresy/obiekty (i daj ramkę lub zmień kolor tła).

Teraz, aby jak najlepiej korzystać z pętli w Excel VBA, musisz wiedzieć o różnych istniejących rodzajach i prawidłowej składni każdego z nich.

W tym samouczku zaprezentuję różne typy pętli Excel VBA i omówię kilka przykładów dla każdej pętli

Uwaga: to będzie ogromny samouczek, w którym postaram się szczegółowo omówić każdą pętlę VBA. Polecam dodać tę stronę do zakładek na przyszłość.

Jeśli interesuje Cię nauka VBA w prosty sposób, zajrzyj na mój Szkolenie Excel VBA online.

Na następną pętlę

Pętla „For Next” pozwala przejść przez blok kodu określoną liczbę razy.

Na przykład, jeśli poproszę Cię o ręczne dodanie liczb całkowitych od 1 do 10, dodałbyś pierwsze dwie liczby, następnie dodałbyś trzecią liczbę do wyniku, a następnie dodałbyś do wyniku czwartą liczbę, tak dalej…

Prawda?

Ta sama logika jest używana w pętli For Next w VBA.

Określasz, ile razy chcesz uruchomić pętlę, a także określasz, co ma robić kod za każdym razem, gdy pętla jest uruchamiana.

Poniżej znajduje się składnia pętli For Next:

Dla licznika = Początek do końca [Wartość kroku] [Blok kodu do wykonania] Dalej [licznik]

W pętli For Next możesz użyć licznika (lub dowolnej zmiennej), która będzie używana do uruchomienia pętli. Ten licznik pozwala uruchomić tę pętlę wymaganą liczbę razy.

Na przykład, jeśli chcę dodać pierwsze 10 dodatnich liczb całkowitych, moja wartość licznika będzie wynosić od 1 do 10.

Rzućmy okiem na kilka przykładów, aby lepiej zrozumieć, jak działa pętla For Next.

Przykład 1 - Dodawanie pierwszych 10 dodatnich liczb całkowitych

Poniżej znajduje się kod, który doda pierwsze 10 dodatnich liczb całkowitych za pomocą pętli For Next.

Następnie wyświetli okno komunikatu pokazujące sumę tych liczb.

Sub AddNumbers() Dim Suma jako Integer Dim Licz jako Integer Suma = 0 Dla Licznika = 1 do 10 Suma = Suma + Licznik Następny Licznik MsgBox Suma Koniec Sub

W tym kodzie wartość Total jest ustawiona na 0 przed przejściem do pętli For Next.

Gdy dostanie się do pętli, przechowuje całkowitą wartość po każdej pętli. Tak więc po pierwszej pętli, gdy licznik wynosi 1, wartość „Total” wynosi 1, a po drugiej pętli wynosi 3 (1+2) i tak dalej.

I wreszcie, gdy pętla się kończy, zmienna „Total” ma sumę pierwszych 10 dodatnich liczb całkowitych.

Następnie MsgBox po prostu wyświetla wynik w oknie komunikatu.

Przykład 2 - Dodawanie pierwszych 5 parzystych dodatnich liczb całkowitych

Aby zsumować pierwsze pięć parzystych dodatnich liczb całkowitych (tj. 2,4,6,8 i 10), potrzebujesz podobnego kodu z warunkiem uwzględniania tylko liczb parzystych i ignorowania liczb nieparzystych.

Oto kod, który to zrobi:

Sub AddEvenNumbers() Dim Total As Integer Dim Licz jako Integer Suma = 0 Dla Count = 2 do 10 Krok 2 Total = Total + Licznik Następne Licznik MsgBox Total End Sub

Zauważ, że rozpoczęliśmy wartość Count od 2, a także użyliśmy ‘Krok 2‘.

Kiedy używasz 'Krok 2', nakazuje kodowi zwiększać wartość „Count” o 2 za każdym razem, gdy pętla jest uruchamiana.

Tak więc wartość Count zaczyna się od 2, a następnie staje się 4, 6, 8 i 10, gdy wystąpi pętla.

UWAGA: Innym sposobem na zrobienie tego może być uruchomienie pętli od 1 do 10 i sprawdzenie wewnątrz pętli, czy liczba jest parzysta, czy nieparzysta. Jednak użycie Step w tym przypadku jest bardziej wydajnym sposobem, ponieważ nie wymaga wykonania pętli 10 razy, a tylko 5 razy.

Wartość Step może być również ujemna. W takim przypadku licznik zaczyna od wyższej wartości i jest zmniejszany o określoną wartość kroku.

Przykład 3 - Wprowadzanie numeru seryjnego w wybranych komórkach

Możesz także użyć pętli For Next, aby przejść przez kolekcję obiektów (takich jak komórki, arkusze lub skoroszyty),

Oto przykład, który szybko wprowadza numery seryjne we wszystkich wybranych komórkach.

Sub EnterSerialNumber() Dim Rng As Range Dim Counter As Integer Dim RowCount As Integer Set Rng = Zaznaczenie RowCount = Rng.Rows.Count For Counter = 1 To RowCount ActiveCell.Offset(Counter - 1, 0).Value = Licznik Następny koniec licznika Pod

Powyższy kod najpierw zlicza liczbę wybranych wierszy, a następnie przypisuje tę wartość do zmiennej RowCount. Następnie uruchamiamy pętlę od „1 do RowCount”.

Zauważ również, że ponieważ selekcja może być dowolną liczbą wierszy, ustawiliśmy zmienną Rng na Selection (z linią ‘Set Rng = Selection’). Teraz możemy użyć zmiennej „Rng”, aby odwołać się do zaznaczenia w naszym kodzie.

Przykład 4 - Chroń wszystkie arkusze w aktywnym skoroszycie

Możesz użyć pętli „For Next”, aby przejść przez wszystkie arkusze robocze w aktywnym skoroszycie i chronić (lub wyłączyć ochronę) każdego z arkuszy.

Poniżej znajduje się kod, który to zrobi:

Sub ProtectWorksheets() Dim i As Integer For i = 1 To ActiveWorkbook.Worksheets.Count Worksheets(i).Protect Next i End Sub

Powyższy kod zlicza liczbę arkuszy za pomocą ActiveWorkbook.Worksheets.Count. To mówi VBA, ile razy pętla musi zostać uruchomiona.

W każdym przypadku odwołuje się do skoroszytu I (za pomocą Worksheets(i)) i chroni go.

Możesz użyć tego samego kodu, aby usunąć ochronę arkuszy roboczych. Po prostu zmień linię Arkusze (i).Chroń do Arkusze (i).UnProtect.

Zagnieżdżone pętle „na następny”

Możesz użyć zagnieżdżonych pętli „For Next”, aby uzyskać bardziej złożoną automatyzację w programie Excel. Zagnieżdżona pętla For Next oznaczałaby, że w pętli For Next istnieje pętla For Next.

Pokażę ci, jak tego użyć na przykładzie.

Załóżmy, że mam otwartych skoroszytów 5 w moim systemie i chcę chronić wszystkie arkusze we wszystkich tych skoroszytach.

Poniżej znajduje się kod, który to zrobi:

Sub ProtectWorksheets() Dim i As Integer Dim j As Integer For i = 1 To Workbooks.Count For j = 1 To Workbooks(i).Worksheets.Count Workbooks(i).Worksheets(j).Protect Next j Next i End Sub

Powyższe jest zagnieżdżoną pętlą For Next, ponieważ użyliśmy jednej pętli For Next w innej.

Wyciągi „EXIT For” w For Next Loops

Instrukcja „Exit For” pozwala całkowicie wyjść z pętli „For Next”.

Można go używać w przypadkach, gdy chcesz, aby pętla For Next kończyła się po spełnieniu określonego warunku.

Weźmy przykład, w którym masz zestaw liczb w kolumnie A i chcesz podświetlić wszystkie liczby ujemne czerwoną czcionką. W takim przypadku musimy przeanalizować każdą komórkę pod kątem jej wartości, a następnie odpowiednio zmienić kolor czcionki.

Aby jednak kod był bardziej wydajny, możemy najpierw sprawdzić, czy na liście znajdują się wartości ujemne, czy nie. Jeśli nie ma wartości ujemnych, możemy użyć instrukcji Exit For, aby po prostu wyjść z kodu.

Poniżej znajduje się kod, który to robi:

Sub HghlightNegative() Dim Rng As Range Set Rng = Range("A1", Range("A1").End(xlDown)) Counter = Rng.Count For i = 1 To Counter If WorksheetFunction.Min(Rng) >= 0 Then Exit For If Rng(i).Value < 0 Then Rng(i).Font.Color = vbRed Next i End Sub

Gdy użyjesz instrukcji „Exit For” w zagnieżdżonej pętli „For Next”, wyjdzie ona z pętli, w której jest wykonywana, i przejdzie do wykonania następnego wiersza w kodzie po pętli For Next.

Na przykład w poniższym kodzie instrukcja „Exit For” wyjdzie z wewnętrznej pętli, ale zewnętrzna pętla będzie nadal działać.

Sub SampleCode() Dla i = 1 do 10 Dla j = 1 do 10 Wyjście Dla następnego J Następny i Koniec Sub

Rób pętlę

Pętla „Do While” pozwala sprawdzić warunek i uruchomić pętlę, gdy ten warunek jest spełniony (lub ma wartość PRAWDA).

W pętli Do While występują dwa rodzaje składni.

Wykonaj [While condition] [Code block to Execute] Loop

oraz

Wykonaj [Blok kodu do wykonania] Pętlę [Podczas warunku]

Różnica między tymi dwoma polega na tym, że w pierwszym przypadku warunek While jest sprawdzany jako pierwszy przed wykonaniem dowolnego bloku kodu, aw drugim przypadku blok kodu jest wykonywany jako pierwszy, a następnie sprawdzany jest warunek While.

Oznacza to, że jeśli warunek While ma wartość False w obu przypadkach, kod nadal będzie działał co najmniej raz w drugim przypadku (ponieważ warunek „While” jest sprawdzany po jednokrotnym wykonaniu kodu).

Zobaczmy teraz kilka przykładów użycia pętli Do While w VBA.

Przykład 1 - Dodaj pierwsze 10 dodatnich liczb całkowitych za pomocą VBA

Załóżmy, że chcesz dodać pierwsze dziesięć dodatnich liczb całkowitych za pomocą pętli Do While w VBA.

Aby to zrobić, możesz użyć pętli Do While, dopóki następna liczba nie będzie mniejsza lub równa 10. Gdy tylko liczba będzie większa niż 1o, pętla zatrzyma się.

Oto kod VBA, który uruchomi tę pętlę Do While i wyświetli wynik w oknie komunikatu.

Sub AddFirst10PositiveIntegers() Dim i As Integer i = 1 Wykonaj, gdy i <= 10 Wynik = Wynik + i i = i + 1 Pętla Pole MsgBox Wynik Koniec Sub

Powyższa pętla działa, dopóki wartość „i” nie osiągnie 11. Gdy tylko osiągnie 11, pętla się kończy (gdy warunek While staje się False).

W pętli użyliśmy zmiennej Result, która przechowuje wartość końcową. Po zakończeniu pętli, okno komunikatu pokazuje wartość zmiennej „Result”.

Przykład 2 - Wprowadź daty dla bieżącego miesiąca

Załóżmy, że chcesz wprowadzić wszystkie daty bieżącego miesiąca do kolumny arkusza roboczego.

Możesz to zrobić, używając następującego kodu pętli Do While:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do While Month(CMDate) = Month(Date) Range("A1").Offset (i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Sub End pętli

Powyższy kod wprowadziłby wszystkie daty w pierwszej kolumnie arkusza roboczego (począwszy od A1). Pętle są kontynuowane, dopóki wartość Miesiąc zmiennej „CMDate” nie będzie zgodna z wartością w bieżącym miesiącu.

Wyjdź Wykonaj oświadczenie

Możesz użyć instrukcji Exit Do, aby wyjść z pętli. Gdy tylko kod wykona wiersz „Exit Do”, wychodzi z pętli Do While i przekazuje kontrolę do następnego wiersza zaraz po pętli.

Na przykład, jeśli chcesz wprowadzić tylko pierwszych 10 dat, możesz wyjść z pętli zaraz po wprowadzeniu pierwszych 10 dat.

Poniższy kod zrobi to:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do While Month(CMDate) = Month(Date) Range("A1").Offset (i, 0) = CMDate i = i + 1 Jeśli i >= 10 Następnie wyjdź Wykonaj CMDate = CMDate + 1 Koniec pętli

W powyższym kodzie instrukcja IF służy do sprawdzenia, czy wartość i jest większa niż 10, czy nie. Gdy tylko wartość „i” osiągnie 10, wykonywana jest instrukcja Exit Do i pętla się kończy.

Rób do pętli

Pętle „Do While” są bardzo podobne do pętli „Do While”.

W „Do While” pętla działa do momentu spełnienia określonego warunku, podczas gdy w „Do While” zapętla się, dopóki określony warunek nie zostanie spełniony.

Istnieją dwa rodzaje składni w pętli Do Until.

Wykonaj [Do warunku] [Blok kodu do wykonania] Pętla

oraz

Wykonaj pętlę [blok kodu do wykonania] [do warunku]

Różnica między tymi dwoma polega na tym, że w pierwszym przypadku warunek Do jest sprawdzany jako pierwszy przed wykonaniem dowolnego bloku kodu, aw drugim przypadku blok kodu jest wykonywany jako pierwszy, a następnie sprawdzany jest warunek Do.

Oznacza to, że jeśli warunek Do ma wartość TRUE jest w obu przypadkach, kod nadal będzie uruchamiany co najmniej raz w drugim przypadku (ponieważ warunek „Do” jest sprawdzany po jednokrotnym wykonaniu kodu).

Zobaczmy teraz kilka przykładów użycia pętli Do Until w VBA.

Uwaga: Wszystkie przykłady dla Do While są takie same jak w Do While. Zostały one zmodyfikowane, aby pokazać, jak działa pętla Do Until.

Przykład 1 - Dodaj pierwsze 10 dodatnich liczb całkowitych za pomocą VBA

Załóżmy, że chcesz dodać pierwsze dziesięć dodatnich liczb całkowitych za pomocą pętli Do Until w języku VBA.

Aby to zrobić, musisz uruchomić pętlę, aż następna liczba będzie mniejsza lub równa 10. Gdy tylko liczba będzie większa niż 1o, pętla się zatrzyma.

Oto kod VBA, który uruchomi tę pętlę i wyświetli wynik w oknie komunikatu.

Sub AddFirst10PositiveIntegers() Dim i As Integer i = 1 Wykonaj Do i > 10 Wynik = Wynik + i i = i + 1 Pętla MsgBox Wynik Koniec Sub

Powyższa pętla działa, dopóki wartość „i” nie osiągnie 11. Gdy tylko osiągnie 11, pętla się kończy (gdy warunek „Do” staje się Prawda).

Przykład 2 - Wprowadź daty dla bieżącego miesiąca

Załóżmy, że chcesz wprowadzić wszystkie daty bieżącego miesiąca do kolumny arkusza roboczego.

Możesz to zrobić, używając następującego kodu pętli Do Until:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do Until Month(CMDate) Month(Date) Range("A1").Offset( i, 0) = Data CM i = i + 1 Data CM = Data CM + 1 Sub End pętli

Powyższy kod wprowadziłby wszystkie daty w pierwszej kolumnie arkusza roboczego (począwszy od A1). Pętla jest kontynuowana, dopóki Miesiąc zmiennej CMDate nie jest równy temu z bieżącego miesiąca.

Wyjdź Wykonaj oświadczenie

Możesz użyć instrukcji „Exit Do”, aby wyjść z pętli.

Gdy tylko kod wykona wiersz „Exit Do”, wychodzi z pętli Do Until i przekazuje kontrolę do następnego wiersza zaraz po pętli.

Na przykład, jeśli chcesz wprowadzić tylko pierwszych 10 dat, możesz wyjść z pętli zaraz po wprowadzeniu pierwszych 10 dat.

Poniższy kod zrobi to:

Sub EnterCurrentMonthDates() Dim CMDate As Date Dim i As Integer i = 0 CMDate = DateSerial(Year(Date), Month(Date), 1) Do Until Month(CMDate) Month(Date) Range("A1").Offset( i, 0) = CMDate i = i + 1 Jeśli i >= 10 Następnie wyjdź Wykonaj CMDate = CMDate + 1 Koniec pętli

W powyższym kodzie, gdy tylko wartość „i” osiągnie 10, wykonywana jest instrukcja Exit Do i pętla się kończy.

Dla każdego

W VBA możesz przeglądać zestaw kolekcji za pomocą pętli „For Each”.

Oto kilka przykładów kolekcji w Excel VBA:

  • Zbiór wszystkich otwartych skoroszytów.
  • Zbiór wszystkich arkuszy w skoroszycie.
  • Zbiór wszystkich komórek w zakresie wybranych komórek.
  • Zbiór wszystkich wykresów lub kształtów w skoroszycie.

Korzystając z pętli „For Each”, możesz przejść przez każdy z obiektów w kolekcji i wykonać na nim jakąś akcję.

Na przykład możesz przeglądać wszystkie arkusze w skoroszycie i chronić je lub możesz przejrzeć wszystkie komórki w zaznaczeniu i zmienić formatowanie.

Dzięki pętli „For Each” (nazywanej również pętlą „For Each-Next”) nie musisz wiedzieć, ile obiektów znajduje się w kolekcji.

Pętla „For Each” automatycznie przejdzie przez każdy obiekt i wykona określoną akcję. Na przykład, jeśli chcesz chronić wszystkie arkusze w skoroszycie, kod będzie taki sam, niezależnie od tego, czy masz skoroszyt z 3 arkuszami, czy 30 arkuszami.

Oto składnia pętli For Each-Next w Excel VBA.

Dla każdego elementu W kolekcji [Blok kodu do wykonania] Następny [element]

Zobaczmy teraz kilka przykładów użycia pętli For Each w programie Excel.

Przykład 1 - Przejrzyj wszystkie arkusze w skoroszycie (i chroń je)

Załóżmy, że masz skoroszyt, w którym chcesz chronić wszystkie arkusze.

Poniżej pętla For Each-Next może to łatwo zrobić:

Sub ProtectSheets() Dim ws As Worksheet dla każdego ws In ActiveWorkbook.Worksheets ws.Protect Next ws End Sub

W powyższym kodzie zdefiniowaliśmy zmienną „ws” jako obiekt Worksheet. To mówi VBA, że „ws” powinno być interpretowane jako obiekt arkusza w kodzie.

Teraz używamy instrukcji „For Each”, aby przejść przez każdy „ws” (który jest obiektem arkusza) w kolekcji wszystkich arkuszy w aktywnym skoroszycie (podanym przez ActiveWorkbook.Worksheets).

Zauważ, że w przeciwieństwie do innych pętli, w których próbowaliśmy chronić wszystkie arkusze robocze w skoroszycie, tutaj nie musimy się martwić o liczbę arkuszy roboczych w skoroszycie.

Nie musimy ich liczyć, aby uruchomić pętlę. Pętla For Each zapewnia, że ​​wszystkie obiekty są analizowane jeden po drugim.

Przykład 2 - Przejrzyj wszystkie otwarte skoroszyty (i zapisz wszystko)

Jeśli pracujesz z wieloma skoroszytami w tym samym czasie, przydatne może być jednoczesne zapisanie wszystkich tych skoroszytów.

Poniższy kod VBA może to za nas zrobić:

Sub SaveAllWorkbooks() Dim wb As Workbook Dla każdego pliku wb In Workbooks wb.Save Next wb End Sub

Zauważ, że w tym kodzie nie otrzymasz monitu z prośbą o zapisanie skoroszytu w określonej lokalizacji (jeśli zapisujesz go po raz pierwszy).

Zapisuje go w domyślnym folderze (w moim przypadku był to folder „Dokumenty”). Ten kod działa najlepiej, gdy te pliki są już zapisane, a Ty wprowadzasz zmiany i chcesz szybko zapisać wszystkie skoroszyty.

Przykład 3 - Przejdź przez wszystkie komórki w zaznaczeniu (podświetl wartości ujemne)

Korzystając z pętli „For Each”, możesz przechodzić przez wszystkie komórki w określonym zakresie lub w wybranym zakresie.

Może to być pomocne, gdy chcesz przeanalizować każdą komórkę i wykonać na jej podstawie akcję.

Na przykład poniżej znajduje się kod, który przejdzie przez wszystkie komórki w zaznaczeniu i zmieni kolor komórek z wartościami ujemnymi na czerwony.

Sub HighlightNegativeCells() Dim Cll jako zakres dla każdej wybranej Cll Jeśli Cll.Value < 0 Następnie Cll.Interior.Color = vbRed End If Next Cll End Sub

(Zauważ, że użyłem Cll jako krótkiej nazwy zmiennej dla komórki. Nie zaleca się używania nazw obiektów, takich jak Arkusze lub Zakres jako nazw zmiennych)

W powyższym kodzie pętla For Each-Next przechodzi przez kolekcję komórek w zaznaczeniu. Instrukcja IF służy do określenia, czy wartość komórki jest ujemna, czy nie. Jeśli tak jest, komórka otrzymuje czerwony kolor wnętrza, w przeciwnym razie przechodzi do następnej komórki.

Jeśli nie masz wyboru, a zamiast tego chcesz, aby VBA zaznaczył wszystkie wypełnione komórki w kolumnie, zaczynając od określonej komórki (tak jak używamy Control + Shift + klawisz strzałki w dół, aby zaznaczyć wszystkie wypełnione komórki), możesz użyj poniższego kodu:

Sub HighlightNegativeCells() Dim Cll As Range Dim Rng As Range Ustaw Rng = Range("A1", Range("A1").End(xlDown)) Dla każdego Cll w Rng Jeśli Cll.Value < 0 Następnie Cll.Interior.Color = vbRed End Jeśli następne wywołanie End Sub

W powyższym przykładzie nie ma znaczenia, ile jest wypełnionych komórek. Rozpocznie się od komórki A1 i przeanalizuje wszystkie sąsiednie wypełnione komórki w kolumnie.

Nie musisz też mieć zaznaczonej komórki A1. Możesz wybrać dowolną odległą komórkę, a gdy kod zostanie uruchomiony, nadal uwzględni wszystkie komórki w kolumnie A (począwszy od A1) i pokoloruje ujemne komórki.

Komunikat „Wyjdź po”

Aby wyjść z pętli, możesz użyć instrukcji „Exit For” w pętli For Each-Next. Odbywa się to zwykle w przypadku spełnienia określonego warunku.

Na przykład w przykładzie 3, gdy przechodzimy przez zestaw komórek, bardziej wydajne może być sprawdzenie, czy są jakieś wartości ujemne, czy nie. W przypadku braku wartości ujemnych możemy po prostu wyjść z pętli i zaoszczędzić trochę czasu przetwarzania VBA.

Poniżej znajduje się kod VBA, który to zrobi:

Sub HighlightNegativeCells() Dim Cll As Range dla każdej wybranej komórki Jeśli WorksheetFunction.Min(Selection) >= 0 Następnie zakończ, jeśli Cll.Value < 0 Następnie Cll.Interior.Color = vbRed End If Next Cll End Sub

Gdzie umieścić kod VBA

Zastanawiasz się, gdzie w skoroszycie programu Excel znajduje się kod VBA?

Excel ma zaplecze VBA zwane edytorem VBA. Musisz skopiować i wkleić kod w oknie kodu modułu VB Editor.

Oto kroki, aby to zrobić:

  1. Przejdź do zakładki Deweloper.
  2. Kliknij opcję Visual Basic. Spowoduje to otwarcie edytora VB w zapleczu.
  3. W okienku Eksplorator projektu w edytorze VB kliknij prawym przyciskiem myszy dowolny obiekt skoroszytu, do którego chcesz wstawić kod. Jeśli nie widzisz Eksploratora projektów, przejdź do karty Widok i kliknij Eksplorator projektów.
  4. Przejdź do Wstaw i kliknij Moduł. Spowoduje to wstawienie obiektu modułu do skoroszytu.
  5. Skopiuj i wklej kod w oknie modułu.

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

wave wave wave wave wave