VBA ReDim

Excel VBA ReDim-verklaring

VBA Redim- instructie is vergelijkbaar met de dim-instructie, maar het verschil is dat deze wordt gebruikt om meer opslagruimte op te slaan of toe te wijzen of om de opslagruimte van een variabele of een array te verkleinen, nu zijn er twee belangrijke aspecten die worden gebruikt met de instructie Preserve, als preserve wordt gebruikt met deze instructie, wordt een nieuwe array met een andere grootte gemaakt en als preserve niet wordt gebruikt met deze instructie, wordt alleen de array-grootte van de huidige variabele gewijzigd.

Arrays zijn een belangrijk onderdeel van de VBA-codering. Met behulp van arrays kunnen we meer dan één waarde opslaan in dezelfde variabele die we hebben gedefinieerd. Zoals hoe we de variabele declareren met het woord "Dim" op dezelfde manier, moeten we de arraynaam ook declareren door ook "Dim" te gebruiken.

Om de arraynaam te declareren, moeten we eerst het soort array identificeren dat we gaan definiëren. In arrays hebben we 5 typen.

  1. Statische array
  2. Dynamische matrix
  3. Een dimensionale array
  4. Tweedimensionale array
  5. Multidimensionale array

In de statische array in Excel zullen we de onderste en bovenste waarde van de array ruim van tevoren bepalen terwijl we de variabele declareren. Bekijk bijvoorbeeld het onderstaande voorbeeld.

Code:

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

Hier is MyArray de naam van de array die de waarde van 1 tot 5 kan bevatten. MyArray kan 5 verschillende resultaten bevatten, zoals de onderstaande.

Code:

 Sub ReDim_Example1 () Dim MyArray (1 tot 5) As String MyArray (1) = "Hallo" MyArray (2) = "Goed" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = "Nice Day" End Sub 

Dynamic Array met ReDim-instructie

Maar in een dynamische array is dit niet het geval, we zullen de lagere waarde en de bovenste waarde niet ruim van tevoren bepalen, maar definiëren alleen de arraynaam en wijzen het gegevenstype toe.

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

Om de arraynaam dynamisch te maken, moeten we deze eerst declareren met het woord "Dim", maar bepaal de grootte van de array niet ruim van tevoren. We noemen gewoon een array met lege waarden tussen haakjes (). Als de array geen grootte bevat, wordt deze behandeld als een dynamische array.

Dim MyArray () As String

Op het moment dat je de grootte van de array tussen haakjes noemt, wordt het een statische array. Dim MyArray (1 tot 5) As String

In de dynamische array wijzigen we altijd de grootte van de array door het woord "ReDim" in de volgende regel van de code te gebruiken.

ReDim MyArray (1 tot 6) As String

Elke waarde die is opgeslagen in de arraynaam in de vorige stappen, dwz met behulp van de "Dim" -instructie, staat null, en de grootte die we hebben gedeclareerd met behulp van "ReDim" wordt de nieuwe grootte van de array.

Voorbeelden om VBA Redim Statement te gebruiken

U kunt deze VBA ReDim Excel-sjabloon hier downloaden - VBA ReDim Excel-sjabloon

Voorbeeld 1

Bekijk het voorbeeld van praktisch gebruik van de "ReDim" -verklaring. Volg de onderstaande stappen om "ReDim" toe te passen.

Stap 1: Maak eerst een macronaam.

Stap 2: Declareer een arraynaam als een tekenreeks.

Code:

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

Stap 3: Gebruik nu het woord "Redim" en wijs de grootte van de array toe.

Code:

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

Stap 4: Dus nu kan de arraynaam "MyArray" hier maximaal 3 waarden bevatten. Wijs de waarde toe aan deze 3 arrays zoals hieronder.

Code:

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

De eerste array is dus gelijk aan het woord "Welcome", de tweede array is gelijk aan het woord "to" en de derde array is gelijk aan het woord "VBA".

Stap 5: Sla deze matrixwaarden nu op in cellen.

Code:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 tot 3) MyArray (1) = "Welkom" MyArray (2) = "bij" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub 

Stap 6: Als u deze code uitvoert, moeten deze waarden respectievelijk in cel A1, B1 en C1 staan.

Voorbeeld # 2 - Wijzig de grootte van de array terwijl u de oude waarden in gedachten houdt.

Zodra de array-naam waarden heeft toegewezen, kunnen we de grootte ook op elk moment in de procedure wijzigen door het woord "ReDim Preserve" te gebruiken.

Stel dat je al een arraynaam hebt gedeclareerd en waarden hebt toegewezen aan die arraynaam, zoals de onderstaande.

Nu wilt u de array-lengte vergroten met 2 dwz 5. In dit geval kunnen we het woord VBA “ReDim Preserve” gebruiken om de grootte van de array-lengte te wijzigen om ook de oude waarden te onthouden.

Code:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welkom" MyArray (2) = "bij" MyArray (3) = "VBA" ReDim Behoud MyArray (4) MyArray (4) = "Teken 1" Bereik ("A1"). Waarde = MyArray (1) Bereik ("B1"). Waarde = MyArray (2) Bereik ("C1"). Waarde = MyArray (3) Bereik ("D1"). Waarde = MyArray (4) End Sub 

Nu kunnen we nog twee waarden aan de array toewijzen.

Code:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welkom" MyArray (2) = "bij" MyArray (3) = "VBA" ReDim Behoud MyArray (4) MyArray (4) = "Teken 1" Bereik ("A1"). Waarde = MyArray (1) Bereik ("B1"). Waarde = MyArray (2) Bereik ("C1"). Waarde = MyArray (3) Bereik ("D1"). Waarde = MyArray (4) End Sub 

Sla deze waarden nu op in cellen.

Code:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Welkom" MyArray (2) = "bij" MyArray (3) = "VBA" ReDim Behoud MyArray (4) MyArray (4) = "Teken 1" Bereik ("A1"). Waarde = MyArray (1) Bereik ("B1"). Waarde = MyArray (2) Bereik ("C1"). Waarde = MyArray (3) Bereik ("D1"). Waarde = MyArray (4) End Sub 

Voer nu de macro uit en kijk wat er gebeurt

Dus we hebben het nieuwe woord in de D1-cel.

De reden waarom we het woord "behouden" moeten gebruiken, is dat array de oude arraywaarden in de procedure moet onthouden.

Op het moment dat je het woord "behouden" negeert, zal het oude waarden niet onthouden.

Dingen om hier te onthouden

  • 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.