VBA ReDim

Excel VBA ReDim-uttalande

VBA Redim- uttalande liknar det svaga uttalandet men skillnaden är att den används för att lagra eller allokera mer lagringsutrymme eller minska det lagringsutrymme som en variabel eller en array har med sig, nu finns det två viktiga aspekter som används med uttalande är Bevara, om bevara används med detta uttalande skapar det en ny matris med olika storlek och om bevara inte används med detta uttalande ändras det bara matrisstorleken för den aktuella variabeln.

Arrayer är en viktig del av VBA-kodningen. Med hjälp av matriser kan vi lagra mer än ett värde i samma variabel som vi definierade. Liksom hur vi deklarerar variabeln med ordet "Dim" på samma sätt måste vi också deklarera arraynamnet med "Dim".

För att deklarera arraynamnet måste vi först identifiera vilken typ av array vi ska definiera. I matriser har vi 5 typer.

  1. Statisk matris
  2. Dynamisk matris
  3. En dimensionell matris
  4. Tvådimensionell matris
  5. Flerdimensionell matris

I den statiska matrisen i Excel bestämmer vi det lägre värdet och det övre värdet i matrisen i förväg medan vi deklarerar variabeln. Se till exempel exemplet nedan.

Koda:

 Sub ReDim_Example1 () Dim MyArray (1 till 5) Som strängändsub 

Här är MyArray namnet på arrayen som kan innehålla värdet från 1 till 5. MyArray kan innehålla 5 olika resultat i den som den nedan.

Koda:

 Sub ReDim_Example1 () Dim MyArray (1 till 5) Som sträng MyArray (1) = "Hej" MyArray (2) = "Bra" MyArray (3) = "Morgon" MyArray (4) = "Ha en" MyArray (5) = "Trevlig dag" Slut Sub 

Dynamic Array med ReDim-uttalande

Men i Dynamic array är detta inte fallet, vi bestämmer inte det lägre värdet och det övre värdet i god tid i stället, vi definierar bara arraynamnet och tilldelar datatyp.

 Sub ReDim_Example1 () Dim MyArray () Som strängsub 

För att göra arraynamnet dynamiskt måste vi först deklarera det med ordet "Dim" men bestäm inte storleken på arrayen i god tid. Vi heter bara en matris med tomma värden inom parentes (). När matrisen inte inkluderar storlek behandlas den som en dynamisk matris.

Dim MyArray () Som sträng

I det ögonblick du nämner storleken på matrisen inuti parentesen blir den en statisk matris. Dim MyArray (1 till 5) Som sträng

I den dynamiska matrisen ändrar vi alltid matrisstorleken genom att använda ordet "ReDim" i nästa rad i koden.

ReDim MyArray (1 till 6) som sträng

Alla värden som lagrats i arraynamnet i de föregående stegen, dvs. med hjälp av "Dim" -satsen, är noll och storleken som vi förklarade med "ReDim" blir arrayens nya storlek.

Exempel för att använda VBA Redim Statement

Du kan ladda ner denna VBA ReDim Excel-mall här - VBA ReDim Excel-mall

Exempel nr 1

Ta en titt på exemplet med att använda ”ReDim” -uttalandet praktiskt. Följ stegen nedan för att tillämpa “ReDim”.

Steg 1: Skapa först ett makronamn.

Steg 2: Förklara ett arraynamn som en sträng.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Som strängsub 

Steg 3: Använd nu ordet ”Redim” och ange storleken på arrayen.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Som sträng ReDim MyArray (1 To 3) End Sub 

Steg 4: Så nu kan arraynamnet "MyArray" innehålla upp till 3 värden här. Tilldela värdet till dessa 3 matriser som nedan.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Som sträng ReDim MyArray (1 till 3) MyArray (1) = "Välkommen" MyArray (2) = "till" MyArray (3) = "VBA" Avsluta sub 

Så den första matrisen är lika med ordet "Välkommen", den andra matrisen är lika med ordet "till" och den tredje matrisen är lika med ordet "VBA".

Steg 5: Lagra nu dessa matrisvärden i celler.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Som sträng ReDim MyArray (1 till 3) MyArray (1) = "Välkommen" MyArray (2) = "till" MyArray (3) = "VBA" -intervall ("A1"). Värde = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub 

Steg 6: Om du kör den här koden bör vi ha dessa värden i A1-, B1- och C1-celler.

Exempel # 2 - Ändra storlek på matrisstorlek medan du minns de gamla värdena.

När matrisnamnet har tilldelats värden kan vi också ändra storlek när som helst i proceduren genom att använda ordet ”ReDim Preserve”.

Anta att du redan har deklarerat ett arraynamn och tilldelat värden till det arraynamnet som det nedanstående.

Nu vill du öka arraylängden med 2, dvs. 5. I det här fallet kan vi använda ordet VBA "ReDim Preserve" för att ändra storlek på arraylängden för att komma ihåg de gamla värdena.

Koda:

 Sub ReDim_Example2 () Dim MyArray () Som sträng ReDim MyArray (3) MyArray (1) = "Välkommen" MyArray (2) = "till" MyArray (3) = "VBA" ReDim Bevara MyArray (4) MyArray (4) = "Character 1" Range ("A1"). Värde = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Värde = MyArray (4) End Sub 

Nu kan vi tilldela arrayen ytterligare två värden.

Koda:

 Sub ReDim_Example2 () Dim MyArray () Som sträng ReDim MyArray (3) MyArray (1) = "Välkommen" MyArray (2) = "till" MyArray (3) = "VBA" ReDim Bevara MyArray (4) MyArray (4) = "Character 1" Range ("A1"). Värde = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Värde = MyArray (4) End Sub 

Lagra nu dessa värden i celler.

Koda:

 Sub ReDim_Example2 () Dim MyArray () Som sträng ReDim MyArray (3) MyArray (1) = "Välkommen" MyArray (2) = "till" MyArray (3) = "VBA" ReDim Bevara MyArray (4) MyArray (4) = "Character 1" Range ("A1"). Värde = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Värde = MyArray (4) End Sub 

Kör nu makrot och se vad som händer

Så vi fick det nya ordet i D1-cellen.

Anledningen till att vi måste använda ordet "bevara" eftersom array bör komma ihåg de gamla arrayvärdena i proceduren.

I det ögonblick du ignorerar ordet ”bevara” kommer det inte att komma ihåg gamla värden.

Saker att komma ihåg här

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