Zmienne w Excel VBA

1. Wprowadzenie do zmiennych VBA.

W VBA, jak w pozostałych językach programowania mamy do czynienia ze zmiennymi. Język VBA nie wymaga deklarowania zmiennych. Możemy np wpisać nazwę, która zostanie zinterpretowana jako zmienna, a następnie wykonywać na niej dowolne instrukcje. Przykład zamieszczam

poniżej.

Sub VarDef()
MsgBox (MyVar * 5)
End Sub

Wynik działania z przykładu to 0. Oznacza to, że zmienna przyjęła od samego początku typ numeryczny. Wiemy to stąd, że wartość default dla typów liczbowych wynosi 0. Po co w takim razie powinniśmy definiować zmienne VBA? Poprawne definiowanie zmiennych jest jedną z zasad dobrego programowania. Pozwala uniknąć przyszłych konfliktów w naszym kodzie. Unikamy także przypadków, gdy nasze zmienne w toku działania kodu mogą uzyskać nieporządany wynik. Dobrą zasadą jest także dodawanie przedrostka określającego typ danych do nazwy zmiennej np intLicznik, strTekst, datStart itp. Jeśli chcemy, by edytor VisualBasic informował nas za każdym razem, gdy korzystamy z niezadeklarowanej zmiennej, powinniśmy wpisać frazę Option Explicit przed nazwą naszego programu. Edytor VB zwróci nam komunikat z informacją o błędzie podczas uruchamiania kodu.

Option Explicit
Sub VarDef()

zmiennaNiezadeklarowana = 3

End Sub

2. Jak deklarować zmienne VBA

Zmienne w kodzie VBA deklarujemy poprzez dodanie frazy Dim przed nazwą zmiennej oraz dodając na końcu właściwy typ danych. Jest to tzw. jawne deklarowanie zmiennych. Fraza Dim informuje nas o tym, że zmienna została zadeklarowana na poziomie danej procedury Sub(). W późniejszym kodzie programu musimy starać się unikać konfliktów, np nie przypiszemy tekstu do typu danych liczbowych itp. Wszystkie dostępne typy danych w Excel VBA możemy poznać w tym rozdziale w dalszej części szkolenia.

Sub VarDef()
Dim intVar As Integer
Dim datVar as Date
Dim strVar as String
MsgBox (intVar * 5)
End Sub

3. Przypisywanie wartości do zmiennych

Ok, wiesz już, czym jest deklarowanie zmiennych i czym są typy danych. Spróbujmy teraz zrobić prosty przykład, definiując zmienne, ich typ danych, a następnie przypisać do nich właściwe wartości. Przypisywania wartości do wcześniej zadeklarowanej zmiennej dokonujemy poprzez wprowadzenie nazwy zmiennej, znaku równości oraz wartości, którą chcemy przypisać. Przykład poniżej.

Sub VarDef()
Dim intVar As Integer
Dim datVar As Date
Dim strVar As String

intVar = 100
datVar = "2016/01/01"
strVar = "Dowolny tekst"

MsgBox (intVar)
MsgBox (datVar)
MsgBox (strVar)

End Sub

W powyższym przykładzie przypisaliśmy datę do wcześniej zadeklarowanej zmiennej varDat. Możemy zauważyć, że maska wprowadzania daty w kodzie VB wygląda w sposób następujący „RRRR/MM/DD„. Jak widzisz, wartości dla zmiennych liczbowych przypisujemy bez cudzysłowu. Zmienne dla tekstu i dat pisane są z cudzysłowem.

4.Działania na zmiennych 

W momencie, gdy nasze zmienne VBA są już zdefiniowane i mają przypisane wartości, możemy wykonywać na nich dowolne działania korzystając z kodu VBA. Zróbmy prosty przykład wykorzystując wcześniej zadeklarowane zmienne. Ciąg testowy połączmy z innym ciągiem tekstowy. Na liczbie wykonajmy działanie arytmetyczne. W przypadku daty wykonajmy prostą funkcję zwracającą miesiąc. Na koniec wyświetlmy cały przykład przy wykorzystaniu okna MsgBox.

Sub VarDef()
Dim intVar As Integer
Dim datVar As Date
Dim strVar As String

intVar = 100
datVar = "2016/01/01"
strVar = "tekst nr 1 "
strVar2 = "tekst nr 2 "

MsgBox (intVar * 10)
MsgBox (Month(datVar))
MsgBox (strVar + strVar2)

End Sub

Jak możemy zauważyć do łączenia ciągów znaków wykorzystaliśmy operator „+”.

5. Poziomy deklaracji zmiennych

Do tej pory deklarowaliśmy zmienne na poziomie procedury poprzez dodanie frazy Dim przed nazwą zmiennej. Do deklaracji zmiennych możemy używać także fraz Static, Public, Private. Sam opis wszystkich sposobów opisuję w poniższej tabeli.

Poziom deklaracjiOpis
DimZmienna zadeklarowana na poziomie procedury. Działa tylko i wyłączenie w obrębie procedury.
StaticZmienna stosowana dla licznika. Nie traci swojej wartości pomiędzy kolejnymi wywołaniami procedury.
PrivateZmienna zadeklarowana na poziomie Private. Działa w obrębie modułu i procedur w module, w którym została zadeklarowana.
PublicZmienna zadeklarowana na poziomie Public. Działa w obrębie wszystkich modułów i wszystkich procedur.
Kurs Excel VBA - Zmienne VBA
Kurs Excel VBA – Zmienne VBA

6. Przykład wykorzystania zmiennej liczbowej

Napiszmy krótki program obliczający pole kwadratu na podstawie długości jego boku. Program powinien wywoływać okno InputBox, w którym wpisywać będziemy długość boku kwadratu. W dalszej kolejności program w komórce A1 arkusza wprowadzi wartość słowną „Pole kwadratu: „, a w komórce B2 wynik działania. Do dzieła!

Sub IntExample()
Dim intSquare As Single
Dim strTxt As String

strTxt = "Pole kwadratu: "
intSquare = InputBox("Wprowadź długość boku kwadratu w formie liczby całkowitej: ")

Range("A1") = strTxt
Range("B1") = intSquare * intSquare
End Sub

7. Zadania (Rozwiązanie możesz wpisać w komentarzu)

7.1. Zmodyfikuj przykład z zadania 6, wyświetlający wynik działania w formie komunikatu MsgBox.

7.2 Stwórz i przetestuj zmienną zadeklarowaną na poziomie public. Zobacz, czy działa także w kodzie innych modułów i procedur.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

8 komentarzy “Zmienne w Excel VBA”