|
Pewną odmianą pętli For... Next jest instrukcja For Each... Next, służy ona do wykonywania operacji na obiektach kolekcji (powtarza grupę instrukcji dla każdego elementu tablicy lub obiektu kolekcji). Praktycznym zastosowaniem może być np. przeszukiwanie komórek arkusza Excela w celu znalezienia określonej wartości. Podstawowa składnia pętli For Each... Next jest następująca:
For Each element In kolekcja [blok kodu wykonywany dla każdego elementu kolekcji] Next element
element - jest to zmienna która przebiega wszystkie elementy zbioru lub tablicy.
kolekcja - jest to nazwa przeszukiwanego zbioru obiektów lub tablicy
Inną możliwością zakończenia wykonywania pętli jest umieszczenie w niej instrukcji Exit For. Instrukcja Exit For występuje przeważnie po sprawdzeniu pewnego warunku, np. w instrukcji If Then Else.
Pętla For Each... Next, w przeciwieństwie do do instrukcji For... Next, nie wymaga licznika kontrolującą liczbę wykonań pętli. Jeżeli nie zastosujemy instrukcji Exit For to pętla zostanie wykonana tyle razy, ile elementów posiada kolekcja.
Sub Wyszukaj() For Each element In Range("A1:M25") If IsNumeric(element.Value) = True Then If element.Value < 0 Then element.Interior.ColorIndex = 3 Exit For End If End If Next End Sub
W przykładzie przeszukiwany jest zakres komórek A1:M25 arkusza Excela w celu znalezienia wartości numerycznej mniejszej od zera. Jeżeli w aktualnie przeszukiwanej komórce jest wartość numeryczna mniejsza od zera, kolor wypełnienia tej komórki zmieniany jest na czerwony i pętla kończy działanie. Na podstawie tego przykładu chciałem pokazać jak zastosować instrukcję Exit For do wcześniejszego wyjścia z pętli. Gdybyśmy nie zastosowali tej instrukcji pętla byłaby wykonana tyle razy ile jest komórek w zakresie A1:M25. Oczywiście pętla będzie wykonana do końca jeżeli w żadnej komórce w przeszukiwanym zakresie nie ma wartości numerycznej mniejszej od zera. Kolekcją czyli zbiorem do przeszukania w naszym przypadku jest zakres komórek A1:M25 aktywnego arkusza, zaś zmienna element określa aktualnie przeszukiwaną komórkę. Aby przetestować przykład wykonaj analogiczne czynności jak w przykładzie ze strony opisującej pętle For Next. Oczywiście w punkcie przypisującym makro do przycisku formularza wybieramy nazwę Wyszukaj. Po wykonaniu tych punktów wpisz różne wartości (dodatnie i ujemne) do komórek arkusza z podanego zakresu. Kliknij na przycisk i przetestuj przykład.
kolekcja - obiekt zawierający zestaw powiązanych ze sobą obiektów. Pozycje obiektów w kolekcji mogą zmieniać się pod wpływem zmian w kolekcji; pozycja każdego konkretnego obiektu kolekcji może zatem ulegać zmianie.
obiekt - kombinacja kodu programu i danych, które mogą być traktowane jako całość, na przykład jako formant, formularz lub część aplikacji.
tablica - zbiór kolejno indeksowanych elementów mających ten sam wewnętrzny typ danych. Każdy element tablicy posiada unikatowy numer indeksu. Przeprowadzenie zmian dla jednego elementu tablicy nie wpływa na inne jej elementy.
|