VBA ReDim - Håndter dynamiske arrays ved bruk av VBA ReDim Preserve

Innholdsfortegnelse

Excel VBA ReDim-uttalelse

VBA Redim- setningen ligner på den svake setningen, men forskjellen er at den brukes til å lagre eller tildele mer lagringsplass eller redusere lagringsplassen en variabel eller en matrise har med seg. Nå er det to viktige aspekter som brukes med setningen er Bevar, hvis bevar brukes med denne setningen, oppretter den en ny matrise med forskjellig størrelse, og hvis ikke bevar brukes med denne setningen, endrer den bare matrisestørrelsen til den nåværende variabelen.

Arrays er en viktig del av VBA-kodingen. Ved hjelp av matriser kan vi lagre mer enn én verdi i samme variabel vi definerte. Som hvordan vi deklarerer variabelen med ordet "Dim", må vi også deklarere matrisenavnet ved å bruke "Dim".

For å erklære matrisenavnet, må vi først identifisere typen matrise vi skal definere. I matriser har vi 5 typer.

  1. Statisk matrise
  2. Dynamic Array
  3. One Dimensional Array
  4. To dimensjonal matrise
  5. Flerdimensjonalt array

I den statiske matrisen i excel vil vi bestemme den nedre verdien og den øvre verdien av matrisen i god tid mens vi erklærer variabelen. Se for eksempel på eksemplet nedenfor.

Kode:

Sub ReDim_Example1 () Dim MyArray (1 til 5) Som streng slutt sub

Her er MyArray navnet på matrisen, som kan holde verdien fra 1 til 5. MyArray kan inneholde 5 forskjellige resultater i den som den nedenfor.

Kode:

Sub ReDim_Example1 () Dim MyArray (1 til 5) Som streng MyArray (1) = "Hei" MyArray (2) = "Bra" MyArray (3) = "Morning" MyArray (4) = "Ha en" MyArray (5) = "Fin dag" Slutt Sub

Dynamic Array with ReDim Statement

Men i Dynamic array er dette ikke tilfelle. Vi vil ikke bestemme den nedre verdien og den øvre verdien i god tid; heller definerer vi bare matrisenavnet og tilordner datatypen.

Sub ReDim_Example1 () Dim MyArray () Som streng End Sub

For å gjøre matrisenavnet dynamisk, må vi først erklære det med ordet "Dimm", men ikke bestemme størrelsen på matrisen i god tid. Vi bare navngir en matrise med tomme verdier i parentesen (). Når matrisen ikke inkluderer størrelse, blir den behandlet som en dynamisk matrise.

Dim MyArray () Som streng

I det øyeblikket du nevner størrelsen på matrisen i parentesen, blir den en statisk matrise. Dim MyArray (1 til 5) Som streng

I den dynamiske matrisen endrer vi alltid størrelsen på matrisen ved å bruke ordet "ReDim" i neste linje i koden.

ReDim MyArray (1 til 6) som streng

Enhver verdi som er lagret i matrisenavnet i de forrige trinnene, dvs. ved å bruke "Dim" -uttrykket, står null, og størrelsen vi erklærte ved hjelp av "ReDim" blir den nye størrelsen på matrisen.

Eksempler på bruk av VBA Redim Statement

Eksempel 1

Se på eksemplet med å bruke “ReDim” -uttalelsen praktisk. Følg trinnene nedenfor for å bruke "ReDim."

Trinn 1: Opprett et makronavn først.

Trinn 2: Erklær et matrisenavn som en streng.

Kode:

Sub ReDim_Example1 () Dim MyArray () Som streng End Sub

Trinn 3: Bruk nå ordet “Redim” og tildel størrelsen på matrisen.

Kode:

Sub ReDim_Example1 () Dim MyArray () Som streng ReDim MyArray (1 To 3) End Sub

Trinn 4: Så nå kan arraynavnet “MyArray” inneholde opptil 3 verdier her. Tilordne verdien til disse 3 matriser som den nedenfor.

Kode:

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

Så den første matrisen er lik ordet "Velkommen" den andre matrisen er lik ordet "til", og den tredje matrisen er lik ordet "VBA."

Trinn 5: Lagre nå matriseverdiene i celler.

Kode:

Sub ReDim_Example1 () Dim MyArray () Som streng ReDim MyArray (1 til 3) MyArray (1) = "Velkommen" MyArray (2) = "til" MyArray (3) = "VBA" -område ("A1"). Verdi = MyArray (1) Range ("B1"). Verdi = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub

Trinn 6: Hvis du kjører denne koden, bør vi ha disse verdiene i henholdsvis A1-, B1- og C1-celler.

Eksempel 2 - Endre størrelse på matrisestørrelse mens du husker de gamle verdiene.

Når matrisenavnet er tildelt verdier, kan vi også endre størrelsen når som helst i prosedyren ved å bruke ordet "ReDim Preserve."

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

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) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

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) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

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) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

Årsaken til at vi trenger å bruke ordet "bevare" fordi matrisen skal huske de gamle verdiene i prosedyren.

I det øyeblikket du ignorerer ordet "bevare", vil det ikke huske gamle verdier.

Ting å huske her

  • ReDim kan bare holde den siste verdien i matrisen, ikke de mange verdiene. For eksempel kan vi ikke bruke denne koden "ReDim Preserve MyArray (4 til 5)". Dette vil kaste feilen.
  • Vi kan ikke redusere statiske matriser. I det øyeblikket du tilordner størrelsen på matrisen innenfor parentesen, blir den en statisk matrise.
  • Ved hjelp av ReDim kan vi ikke endre datatypen. Matrisen kan inneholde uansett datatypen vi har tildelt mens deklarerer matrisen.

Interessante artikler...