Tablice są bardzo przydatne, gdy potrzebujemy zapisać kilka liczb (np. kolejne wyniki pomiarów). Definiując tablice za pomocą słowa kluczowego Dim zazwyczaj z góry określamy rozmiar tablicy np. zapis
Dim Temp(1 To 10) As Single
Oznacza, że zdefiniowaliśmy tablicę składającą się z 10 elementów (o indeksach od 1 to 10). A co jeśli w trakcie tworzenia aplikacji nie znamy rozmiaru tablicy? Np. tworzymy funkcję, która do tablicy odczytuje kolejne elementy z pliku, ale nie znamy jego rozmiaru?
W takiej sytuacji można zdefiniować tablicę dynamiczną a następnie ustawić jej rozmiar. Deklaracja tablicy dynamicznej wygląda dość podobnie jak zwykłej, z tym że nie podajemy jej rozmiaru.
Dim Tablica() As String
Po zadeklarowaniu tablicy należy później ustawić jej rozmiar za pomocą słowa kluczowego Redim.
Ile = 5
ReDim Tablica(1 To Ile)
W dowolnym momencie można zmienić rozmiar tablicy (nawet takiej, której już wcześniej ustawiono rozmiar za pomocą instrukcji Redim). Należy pamiętać, że instrukcja Redim domyślnie usuwa poprzednią zawartość tablicy! Jeśli chcesz np. zwiększyć rozmiar tablicy i nie usuwać wcześniejszej zawartości, należy dodatkowo użyć słowa kluczowego Preserve:
' Dodajmy jeszcze jeden rekord:
Ile = Ile + 1
ReDim Preserve Tablica(1 To Ile)
Oto przykładowa procedura demonstrująca użycie tablic dynamicznych:
Sub TablicaDynamiczna()
Dim Tablica() As String
Dim Imie As String
Dim Ile As Long, a As Long
Ile = Val(InputBox("Ilu masz kolegów?", "ile imion", "5"))
'Ustawienie rozmiaru tablicy
ReDim Tablica(1 To Ile)
'Pobierz imiona od użytkownika
For a = 1 To Ile
Imie = InputBox("Podaj imię nr " & CStr(a))
Tablica(a) = Imie
Next a
'Zmiana rozmiaru tablicy o 1 (z zachowaniem poprzedniej zawartości)
Ile = Ile + 1
ReDim Preserve Tablica(1 To Ile)
'Do listy imion dodajmy jeszcze Chucka Norrisa
Tablica(Ile) = "Chuck Norris"
' Wyświetl zawartość tablicy
For a = 1 To Ile
Debug.Print a & " element tablicy: " & Tablica(a)
Next a
End Sub