Na poprzedniej lekcji przyjrzeliśmy się zmiennym, w których można zapisać określone dane, ale nie mogą one zawierać więcej niż jednej wartości. Aby obejść to ograniczenie, w VBA znajdują się tablice, które mogą przechowywać wiele wartości.
Oto kilka przykładów różnych tablic:
Sub variables() 'Przykład deklaracji zmiennej Dim var1 As String 'Przykład deklaracji tablicy 1-wymiarowej Dim array1(4) As String 'Przykład deklaracji tablicy dwuwymiarowej Dim array2(4, 3) As String 'Przykład deklaracji tablicy trójwymiarowej Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
Tablicę jednowymiarową można traktować jako tabelę składającą się z jednej kolumny. Tablica array1(4) jest jednowymiarową tablicą, która może pomieścić 5 rekordów. Dlaczego 5? Ponieważ liczba rekordów w tablicy zaczyna się od zera (0, 1, 2, 3, 4).
Rozważmy teraz tablicę dwuwymiarową:
Dim array2(4, 3) As String
Będzie już wyglądać jak tabela z 5 wierszami i 4 kolumnami:
'Przypisywanie wartości do kolorowych komórek array2(0, 0) = „Wartość w czerwonej komórce” array2(4, 1) = „Wartość w zielonej komórce” array2(2, 3) = „Wartość w niebieskiej komórce”
Podobnie jak zmienne, stałe mogą być używane do przechowywania wartości, ale różnica polega na tym, że wartości nie można zmieniać. Możemy dodać stałą, aby uniknąć powtarzania wartości, na przykład 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Ułatwia to zrozumienie i edycję kodu. Pozwala także w prosty sposób zmienić wartość stałej:
Sub const_example() 'Deklaracja stałej + przypisanie wartości Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Zakres zmiennych
Jeżeli zmienna jest zadeklarowana na początku procedury (Sub), to można jej użyć tylko w tej procedurze. Po wykonaniu procedury wartość zmiennej nie będzie już dostępna.
Sub procedure1() Dim var1 As Integer '=> Zmienna obowiązuje tylko w tej procedurze End Sub Sub procedure2() '=> Nie można tutaj użyć zmiennej var1 End Sub
Aby użyć zmiennej w dowolnej procedurze modułu, wystarczy ją zadeklarować na samym początku modułu. Jeśli zadeklarujesz taką zmienną, będzie ona dostępna do momentu zamknięcia skoroszytu.
Dim var1 As Integer Sub procedure1() '=> Można tutaj użyć zmiennej var1 End Sub Sub procedure2() '=> Można tu również użyć zmiennej var1 End Sub
Jeśli chcesz użyć tej samej zmiennej we wszystkich modułach książki, w poprzednim przykładzie powinieneś jedynie zastąpić Dim przez Global:
Global var1 As Integer
Aby użyć zmiennej po wykonaniu procedury, w której się ona pojawia, zamień Dim na Static:
Sub procedure1() Static var1 As Integer End Sub
Aby użyć wartości wszystkich zmiennych w procedurze, dodaj Static przed Sub:
Static Sub procedure1() Dim var1 As Integer End Sub
Oto krótki przykład tworzenia własnego typu:
'Tworzenie typu zmiennej Type customers last_name As String first_name As String End Type Sub variables() 'Deklaracja zmiennej Dim cust1 As customers 'Przypisanie wartości do cust1 cust1.last_name = "Smith" cust1.first_name = "John" 'Przykład użycia MsgBox cust1.last_name & " " & cust1.first_name End Sub