Tablica dynamiczna VBA (zachowanie Redim i Redim)

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.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave