Zmienne

Zmienna przechowywana jest w pamięci operacyjnej komputera i przechowuje pewną wartość. Każda zmienna ma swoją nazwę. Wewnątrz danej funkcji lub procedury nie mogą istnieć dwie zmienne o tej samej nazwie. Nazwa zmiennej musi składać się ze znaków lub znaków i cyfr. Nazwa zmiennej nie może się zaczynać od cyfry. Nazwa zmiennej nie może zawierać spacji. Zmiennych używamy do przechowywania wartości wprowadzonych przez użytkownika, lub pośrednich wartości, które zostały obliczone na podstawie wcześniej wprowadzonych danych.

Zmienne deklaruje się przy pomocy słowa kluczowego Dim. W języku VBA nie ma obowiązku deklarowania nazw zmiennych, jednak jest to zalecane, gdyż pozwala to uniknąć różnych błędów w przyszłości. Zmienne mogą przechowywać różne wartości: liczby całkowite, liczby rzeczywiste, liczby dodatnie i ujemne, obiekty a nawet ciągi znaków. W zależności od tego, jakie mamy potrzeby należy przypisać zmiennej odpowiedni typ. Poniższa tabela przedstawia jakie typy zmiennych obsługuje język VBA

TypRozmiar w piamięciOpisZakres wartości
Byte1 bajtWartości dodatnie0 do 255
Booleanzależnie od 
systemu
Dwie wartościTrue lub False
Integer2 bajtywartości całkowite-32,768 do +32,767
Long4 bajtywartości
całkowite
-2,147,483,648 do +2,147,483,647
Single4 bajtyLiczby rzeczywiste-3.4e38 do +3.4e38
Double8 bajtówLiczby rzeczywiste-1.8e308 do +1.8e308
Currency8 bajtówLiczby rzeczywiste o stałej ilości miejsc po przecinku-922,337,203,685,477.5808 do
+922,337,203,685,477.5807
Date8 bajtówTyp przeznaczony dla dat1 styczeń 100 do
31 grudzień 9999
Object4 bajtyWskaźnik na obiektwskaźnik na dowolny obiekt
Stringzależnie od
zawartości
Zestaw znaków o zmiennej długościZmienny – do 2 miliardów znaków
Variant16 bajtówMoże przechowywać dowolną z powyższych wartości

Oto prosty przykład demonstrujący zastosowanie zmiennych.

Sub Zmienne()
    'Deklaracja zmiennych
    Dim Imie As String
    Dim Nazwisko As String
    Dim ImieNazwisko As String
    Dim A As Long, B As Long, Pole As Long

    'Przypisz zmiennym początkowe wartości
    A = 5
    B = 12
    Imie = "Adam"
    Nazwisko = "Kowalski"
    
    'Przykładowe użycie zmiennych
    Obwód = A * B
    ImieNazwisko = Imie + " " + Nazwisko
    
    'Wyświetl zawartości zmiennych ImieNazwisko oraz Obwód
    MsgBox ImieNazwisko
    MsgBox Obwód
End Sub

W powyższym przykładzie najpierw zadeklarowaliśmy trzy zmienne typu String (przechowują one tekst) oraz trzy zmienne typu Long (przechowują one dane liczbowe całkowite). Następnie przypisaliśmy zmiennym przykładowe wartości (zauważ, że dane tekstowe muszą zostać objęte w cudzysłów). W kolejnym kroku wykonaliśmy dwie operacje na zmiennych: do zmiennej o nazwie Obwód przypisaliśmy iloczyn dwóch zmiennych AB. Natomiast do zmiennej ImieNazwisko przypisaliśmy ciąg znaków, który został z połączenia dwóch zmiennych: ImieNazwisko oraz odstępu (pusta spacja w cudzysłowie). Na końcu za pomocą instrukcji MsgBox wyświetliliśmy zawartości dwóch ostatnich zmiennych.

Zwróć uwagę na wcześniejsze przykłady (w rozdziale Instrukcja warunkowa IF). Tam również były używane zmienne. Wynik funkcji MsgBox został zapisany do zmiennej o nazwie Odp (zmienna ta nie była deklarowana czyli była ona traktowana jak zmienna typu Variant). Następnie w instrukcji warunkowej If sprawdzaliśmy, czy zmienna zawiera odpowiednią wartość.

Wymuszanie obowiązku deklarowania zmiennych

Nie ma obowiązku deklarowania zmiennej przed jej uzyciem, ale warto jest wymusić taki obowiązek. Popatrz na poniższy przykład:

Sub InstrukcjaWarunkowa2()
    odp = MsgBox("Czy zjadłeś już obiad", vbYesNo Or vbInformation)
    
    If opd = vbYes Then
        MsgBox "W lodówce masz deser!", vbInformation
    Else
        MsgBox "Zjedz obiad!", vbInformation
    End If
End Sub

Tutaj nastąpiła prosta pomyłka w instrukcji IF. Zamiast sprawdzić zawartość zmiennej o nazwie Odp sprawdziłem jaką wartość przechowuje zmienna Opd (czeski błąd, literówka w nazwie zmiennej). Ponieważ zmienna Opd nie przechowuje żadnej wartości, więc zawsze wykona się kod po Else. Gdybym wymusił obowiązek deklarowania zmiennych, po uruchomieniu makra edytor VBA natrafiając na niezadeklarowaną zmienną wyświetla taki komunikat

Aby wymusić obowiązek deklarowania zmiennych należy na samym początku modułu wpisać instrukcję:

Option Explicit