VBA ReDim

Instrukcja Excel VBA ReDim

Instrukcja VBA Redim jest podobna do instrukcji dim, ale różnica polega na tym, że jest używana do przechowywania lub przydzielania większej ilości miejsca do przechowywania lub zmniejszania miejsca, w którym znajduje się zmienna lub tablica, teraz są dwa ważne aspekty używane z instrukcją Preserve, jeśli preserve jest używane z tą instrukcją, to tworzy nową tablicę o innym rozmiarze, a jeśli preserve nie jest używana z tą instrukcją, to po prostu zmienia rozmiar tablicy bieżącej zmiennej.

Tablice są ważną częścią kodowania VBA. Używając tablic, możemy przechowywać więcej niż jedną wartość w tej samej zmiennej, którą zdefiniowaliśmy. Podobnie jak w przypadku deklarowania zmiennej przy użyciu słowa „Dim”, podobnie musimy zadeklarować nazwę tablicy za pomocą „Dim”.

Aby zadeklarować nazwę tablicy, musimy najpierw zidentyfikować rodzaj tablicy, którą zamierzamy zdefiniować. W tablicach mamy 5 typów.

  1. Tablica statyczna
  2. Dynamiczna tablica
  3. Jednowymiarowa tablica
  4. Dwuwymiarowa tablica
  5. Tablica wielowymiarowa

W tablicy statycznej w programie Excel zdecydujemy o dolnej i górnej wartości tablicy z dużym wyprzedzeniem podczas deklarowania zmiennej. Na przykład spójrz na poniższy przykład.

Kod:

 Sub ReDim_Example1 () Dim MyArray (1 do 5) As String End Sub 

Tutaj MyArray jest nazwą tablicy, która może zawierać wartości od 1 do 5. MyArray może zawierać 5 różnych wyników, takich jak poniższy.

Kod:

 Sub ReDim_Example1 () Dim MyArray (1 do 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = „Miły dzień” Koniec Sub 

Tablica dynamiczna z instrukcją ReDim

Ale w przypadku tablic dynamicznych tak nie jest, nie będziemy decydować o dolnej i górnej wartości z dużym wyprzedzeniem, a jedynie zdefiniujemy nazwę tablicy i przypiszemy typ danych.

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Aby nazwa tablicy była dynamiczna, musimy najpierw zadeklarować ją słowem „Dim”, ale nie decydujemy z dużym wyprzedzeniem o wielkości tablicy. Po prostu nazywamy tablicę z pustymi wartościami w nawiasach (). Jeśli tablica nie zawiera rozmiaru, jest traktowana jako tablica dynamiczna.

Dim MyArray () As String

W momencie, gdy wspomnisz rozmiar tablicy w nawiasach, stanie się ona tablicą statyczną. Dim MyArray (1 do 5) As String

W tablicy dynamicznej zawsze zmieniamy rozmiar tablicy, używając słowa „ReDim” w następnym wierszu kodu.

ReDim MyArray (1 do 6) As String

Każda wartość zapisana w nazwie tablicy w poprzednich krokach, tj. Za pomocą instrukcji „Dim”, ma wartość null, a rozmiar zadeklarowany za pomocą „ReDim” staje się nowym rozmiarem tablicy.

Przykłady użycia instrukcji VBA Redim

Możesz pobrać ten szablon VBA ReDim Excel tutaj - Szablon VBA ReDim Excel

Przykład 1

Spójrz na przykład praktycznego wykorzystania instrukcji „ReDim”. Wykonaj poniższe kroki, aby zastosować „ReDim”.

Krok 1: Najpierw utwórz nazwę makra.

Krok 2: Zadeklaruj nazwę tablicy jako ciąg.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Krok 3: Teraz użyj słowa „Redim” i przypisz rozmiar tablicy.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 do 3) End Sub 

Krok 4: Teraz nazwa tablicy „MyArray” może zawierać do 3 wartości. Przypisz wartość do tych 3 tablic, takich jak poniższa.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 do 3) MyArray (1) = "Witamy" MyArray (2) = "to" MyArray (3) = "VBA" End Sub 

Tak więc pierwsza tablica to słowo „Witamy”, druga tablica to słowo „do”, a trzecia tablica to słowo „VBA”.

Krok 5: Teraz zapisz te wartości tablic w komórkach.

Kod:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 do 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Range („B1”). Value = MyArray (2) Range („C1”). Value = MyArray (3) End Sub 

Krok 6: Jeśli uruchomisz ten kod, powinniśmy mieć te wartości odpowiednio w komórce A1, B1 i C1.

Przykład # 2 - Zmień rozmiar tablicy, pamiętając o starych wartościach.

Po przypisaniu wartości do nazwy tablicy możemy również zmienić rozmiar w dowolnym momencie procedury, używając słowa „ReDim Preserve”.

Załóżmy, że już zadeklarowałeś nazwę tablicy i przypisałeś wartości do tych nazw tablic, jak poniżej.

Teraz chciałbyś zwiększyć długość tablicy o 2, tj. 5. W tym przypadku możemy użyć słowa VBA „ReDim Preserve”, aby zmienić rozmiar tablicy, aby zapamiętać również stare wartości.

Kod:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = „Znak 1” Zakres („A1”). Wartość = Moja Tablica (1) Zakres („B1”). Wartość = Moja Tablica (2) Zakres („C1”). Wartość = Moja Tablica (3) Zakres („D1”). Wartość = MyArray (4) End Sub 

Teraz możemy przypisać do tablicy jeszcze dwie wartości.

Kod:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = „Znak 1” Zakres („A1”). Wartość = Moja Tablica (1) Zakres („B1”). Wartość = Moja Tablica (2) Zakres („C1”). Wartość = Moja Tablica (3) Zakres („D1”). Wartość = MyArray (4) End Sub 

Teraz zapisz te wartości w komórkach.

Kod:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = „Znak 1” Zakres („A1”). Wartość = Moja Tablica (1) Zakres („B1”). Wartość = Moja Tablica (2) Zakres („C1”). Wartość = Moja Tablica (3) Zakres („D1”). Wartość = MyArray (4) End Sub 

Teraz uruchom makro i zobacz, co się stanie

Więc otrzymaliśmy nowe słowo w komórce D1.

Powód, dla którego musimy użyć słowa „zachowaj”, ponieważ tablica powinna pamiętać stare wartości tablicy w procedurze.

W momencie, gdy zignorujesz słowo „zachowaj”, nie zapamięta starych wartości.

O czym należy pamiętać tutaj

  • ReDim can only hold the last value of the array, not the many values. For example, we cannot use this code “ReDim Preserve MyArray(4 to 5)”, this will throw the error.
  • We cannot ReDim static arrays. The moment you assign the size of the array inside the parenthesis it becomes a static array.
  • Using ReDim we cannot change the data type. The array can hold whatever the data type we have assigned while declaring the array.