W tym samouczku zademonstrujemy, jak używać tablic dynamicznych (zachowaj redim i redim) w VBA.
Tablica dynamiczna
Tablice dynamiczne to tablice, które mogą zmieniać rozmiary (w przeciwieństwie do tablice statyczne, które są statyczne).
Aby zadeklarować tablicę dynamiczną, deklarujesz tablicę, ale pomijasz rozmiar tablicy:
1 | Dim strNames() jako ciąg |
Następnie, zanim będziesz mógł przypisać wartości do swojej tablicy, musisz użyć instrukcji ReDim, aby ustawić tablicę na żądany rozmiar:
1 | ReDim strNames(1 do 3) |
Teraz, za każdym razem, gdy chcesz zmienić rozmiar tablicy, po prostu użyj ReDim (lub ReDim Preserve, o czym dowiemy się poniżej).
Dynamiczne tablice wariantów
Uwaga: Tablice wariantów są nieco inne. W przypadku tablic wariantów nie trzeba ustawiać rozmiaru tablicy za pomocą ReDim przed przypisaniem wartości.
12345678 | Podrzędna tablica testowa()'deklaruj zmienną'Dim varNames() jako wariant'wypełnij tablicęvarNames() = Array("Fred", "Wilma", "Barney", "Betty")„zwróć wartości”Dołącz do MsgBox (nazwy zmiennych, ",")Napis końcowy |
Redim a Redim Preserve
ten ReDim instrukcja zmienia rozmiar tablicy, clearing wszystkie istniejące wartości.
ten ReDim Zachowaj instrukcja zmienia rozmiar tablicy, konserwacja („zachowanie”) wszystkich istniejących wartości.
Korzystanie z ReDim
W praktyce zmiana rozmiaru tablicy za pomocą ReDim wygląda tak:
123456789101112 | Sub TestReDim()'deklaruj tablicę ciągówDim strNames() jako ciąg'zmień rozmiar tablicy ciągów, aby móc przechowywać 3 wartościReDim strNames(1 do 3)'wypełnij tablicę 3 nazwamistrNames(1) = "Mel"strNames(2) = "Marek"strNames(3) = "Bob"'pokaż wynik w bezpośrednim oknieDebug.Print Join (strNames, vbCrLf)Napis końcowy |
Korzystanie z ReDim Preserve
W tym przykładzie użyjemy ReDim, aby ustawić początkową tablicę dynamiczną, a następnie ReDim Preserve, aby zmienić rozmiar tablicy, konserwacja oryginalne wartości:
1234567891011121314151617 | Sub TestReDim()'deklaruj tablicę ciągówDim strNames() jako ciąg'zmień rozmiar tablicy ciągów, aby móc przechowywać 3 wartościReDim strNames(1 do 3)'wypełnij tablicęstrNames(1) = "Mel"strNames(2) = "Marek"strNames(3) = "Bob"'pokaż wynik w bezpośrednim oknieDebug.Print Join (strNames, vbCrLf)„przywróć, ale zachowaj dane”ReDim Zachowaj strNames(1 do 4)strNames(4) = "Fred"'pokaż wynik w bezpośrednim oknieDebug.Print Join (strNames, vbCrLf)Napis końcowy |
Jeśli nie używasz UTRZYMYWAĆ instrukcji, utracisz dane, które wcześniej znajdowały się w tablicy.
W bezpośrednim oknie powyżej tablica wypełniła Mel, Steve i Bob. Po ponownym zadeklarowaniu usuwa te wartości i zamiast tego zwraca 3 puste wartości, a następnie wartość „Fred”. Wynika to z UTRZYMYWAĆ pominięcie oświadczenia.