Błędy w VBA mogą pojawiać się na każdym etapie pracy z aplikacją – w trakcie pisania kodu, podczas kompilacji projektu, przy debugowaniu lub w trybie uruchomienia. Są one zawsze cennym źródłem informacji i nie powinniśmy ich nigdy ignorować.
Skąd wziął się bug?
W żargonie programistycznym błąd często nazywany jest pluskwą (z ang. bug). Określenie to wzięło się z czasów pierwszego komputera stworzonego w większej skali. Przyczyną tego, że komputer nie zawsze działał prawidłowo była ćma znaleziona pomiędzy obwodami.
Komputer zbudowany w roku 1945r. składał się z 750 tysięcy części, miał siedemnaście metrów długości (!) i ważył ponad pięć ton. Każdą instrukcję przetwarzał w czasie około pięciu sekund – dzisiejsze komputery potrafią wykonać setki milionów instrukcji na sekundę!
Wracając do tematu. Skoro wiemy skąd wziął się bug, to łatwo wyjaśnić również, co oznacza pojęcie debugowania kodu.
Przedrostek de zawsze oznacza odwrócenie procesu bądź jego przeciwieństwo. Debugowanie możemy przetłumaczyć na coś w stylu odrobaczania, odpluskwiania. I faktycznie celem debugowania jest zlokalizowanie i pozbycie się błędów odpowiedzialnych za nieprawidłowe działanie aplikacji.
Rodzaje błędów w VBA
Błędy w VBA możemy ogólnie podzielić na:
Błędy składni
Jak wskazuje nazwa, są to błędy, które pojawiły się w trakcie pisania kodu i dotyczą głównie poprawności składni języka VBA. Alternatywnie możemy więc powiedzieć, że są to błędy składni.
Chodzi tutaj m.in. o interpunkcję, literówki, brakujące nawiasy, braki w instrukcji.
W takiej sytuacji cała linia kodu zostaje podświetlona, a o błędzie informuje nas okienko z komunikatem. Monit ten niestety często nie jest zgodny z prawdą, dodatkowo towarzyszy mu głośny dźwięk. Jeżeli chcemy go wyłączyć, musimy w opcjach edytora odznaczyć pole Auto Syntax Check.
Błędy kompilacji
Początkujący adepci VBA rzadko korzystają z przycisku Compile VBAProject. Tymczasem jego uruchomienie jest konieczne, aby sprawdzić poprawność kodu w całym projekcie. Kompilator bardzo szybko wychwyci błędy i wyświetli odpowiednie okienko.
Błędy te dotyczą zwykle pomyłek w przypisywaniu zmiennych. Przykładowo, możemy zadeklarować zmienną typu Workbook, ale przypisać ją do arkusza, a nie skoroszytu. W takiej sytuacji składnia będzie prawidłowa, ale kompilator zaprotestuje.
Błędy czasu wykonania
Są to nieobsłużone i nieprzewidziane błędy w VBA, które pojawiają się w trakcie wykonywania makra.
Może się okazać, że próbujemy otworzyć plik, który nie istnieje bo np. ktoś zmienił mu nazwę. Albo np. zadeklarowaliśmy zmienną typu Integer i chcemy w makrze przypisać jej wartość typu Long. W ten sposób wyzwoli się błąd Overflow, którego nie będziemy w stanie wykryć wcześniej – na etapie składni czy kompilacji.
Błędy logiczne
Są to błędy ludzkie, które są najtrudniejsze do zlokalizowania. Składnia jest prawidłowa, kompilator nie zgłasza żadnych obiekcji – podczas wykonywania makra wszystko jest ok.
Otrzymany wynik różni się jednak od oczekiwanego. W takiej sytuacji należy sprawdzić wnikliwie każdą linię kodu.
Przykładem takiego błędu może być dolna granica tablicy, która zaczyna się od 0, a nie od 1. W efekcie np. jeden raport może zostać pominięty i nawet tego nie zauważymy.