| Termin | Definicja |
|---|---|
| On Error GoTo | On Error GoTo to instrukcja VBA przekierowująca wykonanie do etykiety obsługi błędu. On Error GoTo — czym jest przekierowanie obsługi błędu w VBAOn Error GoTo jest elementem języka VBA, który pozwala zaplanować reakcję procedury na błąd wykonania. Zamiast natychmiastowego przerwania makra można wskazać etykietę znajdującą się w tej samej procedurze. Po wystąpieniu problemu sterowanie przechodzi do oznaczonego miejsca, gdzie można rozpoznać sytuację, zapisać informacje diagnostyczne, wyświetlić komunikat albo bezpiecznie zakończyć działanie kodu. Typowa konstrukcja składa się z instrukcji włączającej obsługę oraz etykiety zapisanej z dwukropkiem. Przykładowy schemat wygląda następująco:
Etykieta W praktyce On Error GoTo nie naprawia przyczyny problemu. Zapewnia kontrolowany sposób przejęcia sterowania, gdy operacja nie może zostać wykonana. Rzeczywista jakość rozwiązania zależy od tego, czy błąd zostanie właściwie zidentyfikowany i czy procedura pozostawi dane oraz obiekty w spójnym stanie. On Error GoTo i kontekst techniczny: etykieta, zakres oraz przepływ wykonaniaObsługa błędów w VBA działa w zakresie pojedynczej procedury. Jeżeli instrukcja Występują trzy podstawowe tryby reakcji na błędy. W porównaniu z Warto rozróżnić obsługę błędu wykonania od sprawdzania danych wejściowych. Nieprawidłowy format tekstu, puste pole lub brak zaznaczenia można często wykryć warunkiem Po przejściu do etykiety działanie błędu pozostaje aktywne do chwili wyłączenia lub opuszczenia procedury. Jeżeli w samej sekcji obsługi zostanie wykonana kolejna instrukcja powodująca błąd, może dojść do kolejnego problemu zamiast do przejrzystego zakończenia. Dlatego kod porządkujący zasoby powinien być prosty, a w razie potrzeby należy użyć On Error GoTo — typowe problemy w procedurach VBACzęstym błędem jest brak wyjścia z procedury przed etykietą. W takim układzie kod główny wykonuje się poprawnie, a następnie przechodzi liniowo do sekcji opisanej jako obsługa błędu. Może wtedy zostać wyświetlony komunikat o awarii mimo braku awarii albo wykonane zostaną czynności przeznaczone wyłącznie dla sytuacji wyjątkowej. Zastosowanie Drugim problemem jest zbyt szeroka obsługa obejmująca całą, rozbudowaną procedurę. Gdy kilkadziesiąt operacji znajduje się pod jednym Niewłaściwe stosowanie Problemy pojawiają się także wtedy, gdy po wystąpieniu błędu kod odwołuje się do właściwości Nie powinno się również wyświetlać użytkownikowi surowego, technicznego opisu w każdej sytuacji. W komunikacie końcowym można podać zrozumiałą informację, a szczegóły zapisać do arkusza diagnostycznego, pliku tekstowego lub rejestru zdarzeń. Taki podział ułatwia korzystanie z makra i jednocześnie zachowuje dane potrzebne do ustalenia przyczyny. On Error GoTo — praktyczne wskazówki projektowania obsługiPrzed napisaniem etykiety warto ustalić, co ma stać się po błędzie. Możliwe scenariusze obejmują ponowienie operacji, pominięcie pojedynczego rekordu, zamknięcie otwartego pliku, przywrócenie ustawień aplikacji albo zakończenie procedury z komunikatem. Sama obecność obsługi nie gwarantuje poprawności. Należy określić, które obiekty zostały utworzone, które zasoby wymagają zwolnienia i czy częściowo zmienione dane powinny zostać zachowane. Dobrym wzorcem jest przechwycenie informacji o błędzie, wykonanie krótkiej sekcji porządkującej oraz wyjście z procedury. W procedurach zwracających wartość trzeba dodatkowo ustalić, jaka wartość oznacza niepowodzenie. Przykład może wyglądać następująco:
W bardziej rozbudowanym rozwiązaniu można oddzielić logikę biznesową od komunikowania błędów. Funkcja niższego poziomu może przekazać informację wyżej, natomiast procedura sterująca zdecyduje, czy pokazać komunikat, zapisać zdarzenie, czy kontynuować przetwarzanie. Należy przy tym pamiętać, że błąd nie powinien być bezrefleksyjnie ukrywany tylko dlatego, że procedura ma działać dalej. Przy testowaniu warto sprawdzić kilka odmiennych przypadków: brak pliku, zablokowany plik, pustą wartość, tekst zamiast liczby, nieistniejący zakres oraz przerwanie operacji przez użytkownika. Każdy scenariusz powinien prowadzić do przewidywalnego zakończenia. Szczególną uwagę należy zwrócić na komunikaty, ponieważ ich treść często ujawnia, czy błąd został przechwycony w odpowiednim miejscu. Pomocne jest także stosowanie jednolitego nazewnictwa etykiet, na przykład Kiedy On Error GoTo wymaga sprawdzenia w serwisie komputerowymProblemy z makrami VBA mogą wynikać nie tylko z samej składni instrukcji, lecz także z uszkodzonego pliku, niezgodności dodatków, blokad zabezpieczeń, błędnych odwołań do bibliotek lub niestabilnego działania środowiska systemowego. Jeżeli błąd pojawia się w wielu dokumentach, występuje po zmianie konfiguracji albo towarzyszą mu zawieszanie programu i utrata danych, przydatne może być sprawdzenie całego stanowiska oraz kopii plików. Do serwisu można zgłosić komputer, na którym makra przestały działać, procedury zamykają aplikację albo dokumenty otwierają się nieprawidłowo. Przydatne jest przekazanie opisu czynności poprzedzających błąd, nazwy używanej aplikacji oraz kopii zapasowej dokumentu, o ile nie zawiera poufnych danych. Kontakt z Warszawskim Pogotowiem Komputerowym 24/7 jest możliwy pod numerem +48 22 100 48 29. Przed przekazaniem pliku warto wykonać kopię, zapisać dokładny komunikat i zanotować, czy problem występuje po każdym uruchomieniu, czy tylko dla określonych danych. Takie informacje ułatwiają odróżnienie błędu w kodzie On Error GoTo od problemu z plikiem, dodatkiem lub konfiguracją programu. Dzięki temu można szybciej ustalić, czy wystarczy korekta procedury, czy potrzebne jest szersze sprawdzenie komputera. |