| Termin | Definicja |
|---|---|
| For...Next | For...Next to konstrukcja pętli w języku VBA wykonująca blok instrukcji określoną liczbę razy. For...Next jako pętla w VBAFor...Next jest konstrukcją języka VBA przeznaczoną do wielokrotnego wykonywania tego samego fragmentu procedury. Stosuje się ją wtedy, gdy liczba powtórzeń jest znana z góry albo wynika z dwóch wartości wyznaczających początek i koniec zakresu. W praktyce pętla pozwala przejść po kolejnych wierszach arkusza, komórkach, elementach tablicy lub innych danych bez kopiowania identycznych instrukcji wiele razy. Najprostsza postać ma schemat
W tym przykładzie w kolejnych wierszach pierwszej kolumny umieszczane są wartości od 1 do 10. Nazwa For i Next w porównaniu z innymi pętlamiFor...Next różni się od pętli Przy pętli W obrębie For...Next dostępny jest parametr Warto odróżnić także zwykłe przechodzenie po indeksach od pracy z kolekcją. Konstrukcja Next i typowe problemy w procedurachJednym z częstszych błędów jest nieprawidłowe dopasowanie instrukcji Problemy pojawiają się również wtedy, gdy zakres jest wyznaczany na podstawie niewłaściwej komórki. Przykładowo odczyt ostatniego wiersza z kolumny, w której występują puste miejsca, może spowodować pominięcie danych albo wykonanie dodatkowych obiegów. Bezpieczniej jest ustalić, która kolumna zawsze zawiera identyfikator rekordu, i konsekwentnie używać jej do określenia końca zakresu. Nieprawidłowe działanie może wynikać z modyfikowania danych, po których właśnie trwa iteracja. Usuwanie wiersza podczas przechodzenia od góry do dołu często prowadzi do pominięcia następnego elementu, ponieważ kolejne pozycje przesuwają się w górę. W takim scenariuszu pomocne bywa przechodzenie od końca zakresu do początku z użyciem kroku ujemnego. Warto uważać na typ zmiennej licznika. Dla typowych indeksów arkusza stosuje się zwykle Niepotrzebne odwołania do arkusza przy każdym obiegu mogą spowalniać działanie. Przy dużych zbiorach rozsądne bywa pobranie zakresu do tablicy, wykonanie obliczeń w pamięci, a następnie jednorazowe zapisanie wyniku. Sama pętla pozostaje wtedy czytelna, a liczba operacji komunikujących się z arkuszem jest mniejsza. For...Next w codziennej pracy z danymiPrzy projektowaniu pętli dobrze jest najpierw określić, co stanowi jeden obieg. Jeżeli każda iteracja ma sprawdzać jeden wiersz, licznik powinien jasno wskazywać numer analizowanego wiersza. Jeżeli zadaniem jest przetwarzanie co drugiej kolumny, warto użyć parametru Instrukcje wewnątrz pętli powinny być możliwie krótkie i jednoznaczne. Rozbudowaną logikę można przenieść do osobnej procedury lub funkcji, której przekazuje się bieżący indeks. Taki podział ułatwia testowanie, ponieważ oddziela sterowanie liczbą powtórzeń od operacji wykonywanej dla pojedynczego elementu. Przydatne jest dodanie warunków ochronnych. Przed rozpoczęciem iteracji można sprawdzić, czy zakres istnieje, czy liczba rekordów jest większa od zera oraz czy wartości graniczne mają oczekiwany typ. W środku pętli warto przewidzieć puste komórki, błędy formuł i dane zapisane w nietypowym formacie. Dzięki temu procedura nie będzie przerywana przez pojedynczy niepoprawny rekord. Do kontrolowania przebiegu może służyć Instrukcja For...Next a zgłoszenie problemu z komputeremNieprawidłowo działające makro może objawiać się zawieszaniem arkusza, brakiem wyników, komunikatem o błędzie indeksu albo wykonywaniem operacji w nieskończonej serii. Przyczyną nie zawsze jest sama konstrukcja For...Next. Znaczenie mogą mieć także uszkodzone pliki, dodatki, ustawienia zabezpieczeń makr, konflikt wersji programu lub problemy z pamięcią i systemem plików. Przed zgłoszeniem problemu warto zapisać kopię pliku, zanotować moment wystąpienia błędu i sprawdzić, czy sytuacja powtarza się na tym samym zestawie danych. Pomocne jest również zachowanie treści komunikatu oraz wskazanie procedury, która była uruchamiana. Nie powinno się wielokrotnie otwierać uszkodzonego pliku bez kopii, zwłaszcza gdy makro automatycznie modyfikuje wiele arkuszy. W przypadku trudności z działaniem komputera, programu biurowego lub pliku zawierającego makra pomoc można zgłosić do Warszawskiego Pogotowia Komputerowego 24/7. Przy analizie można rozdzielić problem z kodem VBA od problemu z systemem, konfiguracją aplikacji albo nośnikiem danych. Takie rozpoznanie ułatwia dobranie dalszych czynności i ogranicza ryzyko utraty wyników pracy. Przy ocenie procedury należy zwrócić uwagę na zakres danych, sposób wyznaczania wartości końcowej, typ licznika, kierunek kroku oraz obecność pętli zagnieżdżonych. Sama konstrukcja For...Next jest prosta, lecz jej poprawność zależy od tego, czy granice iteracji odpowiadają rzeczywistej strukturze danych. Czytelny kod, kontrola warunków brzegowych i testy na kopii pliku zwykle pozwalają szybko ustalić źródło problemu. |