Dyrektywa Option Explicit

Rozpatrzmy taki przykład:

Sub Obliczenia()
    Wartos = 5 * 6

    Wartosc = Wartosc + 3

    MsgBox Wartosc

End Sub

 Jaką liczbę wyświetli instrukcja MsgBox?

Mogłoby się wydawać, że 33 (5*6=30, 30+3=33). Ale zwróć uwagę, że w pierwszej linijce zrobiłem literówkę (jest Wartos zamiast Wartosc). Tak więc w drugiej linijce naszej procedury zmienna Wartosc ma wartość 0 (a nie jakbyśmy chcieli 30) więc zero plus 3 daje nam liczbę 3.

Aby zapobiec takim błędom należy deklarować wszystkie zmienne na początku procedury/funkcji. Warto jest wymusić obowiązek deklarowania wszystkich zmiennych poprzez umieszczenie dyrektywy Option Explicit na początku modułu. Nasz kod po poprawkach wygląda następująco:

Option Explicit

Sub Obliczenia()
    Dim Wartosc
    
    Wartos = 5 * 6
    Wartosc = Wartosc + 3
    
    MsgBox Wartosc
End Sub

Gdy uruchomimy makro, pojawi się błąd, gdyż została zadeklarowana zmienna Wartosc, ale nie zadeklarowaliśmy zmiennej Wartos.

Kolejna wskazówka: deklarując zmienną mam w zwyczaju (przy instrukcji Dim) pisać nazwę zmiennej z dużej litery tj. Wartosc. Jak później w kodzie odwołuje się do zmiennej to specjalnie piszę nazwę zmiennej z małej litery tj wartosc. Gdy przejdę do nowego wiersza, to edytor VBA poprawi wielkość liter tak, jak było przy deklaracji (czyli dokładnie tak jak napisałem przy instrukcji Dim). W ten sposób kontroluje się, czy nie popełniłem literówki w nazwie zmiennej – jeśli przechodzę do nowej linii, a edytor VBA mi nie zmieni pierwszej litery na dużą w nazwie zmiennej, to mogę podejrzewać, że „coś jest nie tak”.

Wróć do spisu treści