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 matris har med sig, nu finns det två viktiga aspekter som används med uttalande är Bevara, om konservering används med detta uttalande skapar det en ny matris med annan storlek och om konservering 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", 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.
- Statisk matris
- Dynamisk matris
- En dimensionell matris
- Tvådimensionell matris
- Flerdimensionell matris
I den statiska arrayen i excel bestämmer vi det lägre värdet och det övre värdet för arrayen 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 hålla 5 olika resultat i den som 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 kommer inte att bestämma det lägre och det övre värdet i god tid; snarare definierar vi bara arraynamnet och tilldelar datatyp.
Sub ReDim_Example1 () Dim MyArray () Som strängänd Sub
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 parentesen (). 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, står noll och storleken som vi deklarerade med "ReDim" blir arrayens nya storlek.
Exempel på att använda VBA Redim Statement
Exempel 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ängänd Sub

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."
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.
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 kan bara innehålla det sista värdet i matrisen, inte de många värdena. Vi kan till exempel inte använda den här koden "ReDim Preserve MyArray (4 till 5)". Detta kommer att kasta felet.
- Vi kan inte reducera statiska matriser. I det ögonblick du tilldelar storleken på matrisen inuti parentesen blir det en statisk matris.
- Med ReDim kan vi inte ändra datatypen. Matrisen kan innehålla vilken datatyp vi har tilldelat när deklarera matrisen.