VBA ReDim | Maneu matrius dinàmics mitjançant VBA ReDim Preserve
Declaració ReDim d'Excel VBA
VBA Redim La declaració és similar a la declaració dim, però la diferència és que s'utilitza per emmagatzemar o assignar més espai d'emmagatzematge o reduir l'espai d'emmagatzematge que té una variable o una matriu, ara hi ha dos aspectes importants que s'utilitzen amb la declaració s'utilitza amb aquesta declaració, es crea una nova matriu amb mida diferent i, si no s'utilitza preservar amb aquesta instrucció, només canvia la mida de la matriu de la variable actual.
Les matrius són una part important de la codificació VBA. Mitjançant matrius podem emmagatzemar més d’un valor a la mateixa variable que hem definit. Igual que com declarem la variable amb la paraula "Dim" de manera similar, també hem de declarar el nom de la matriu mitjançant "Dim".
Per declarar el nom de la matriu, primer hem d’identificar el tipus de matriu que definirem. A les matrius, tenim 5 tipus.
- Matriu estàtica
- Matriu dinàmica
- Matriu unidimensional
- Matriu bidimensional
- Matriu multidimensional
A la matriu estàtica d’Excel, decidirem el valor inferior i superior de la matriu amb molta antelació mentre declarem la variable. Per exemple, mireu l'exemple següent.
Codi:
Sub ReDim_Example1 () Dim MyArray (1 a 5) com a final de cadena Sub
Aquí MyArray és el nom de la matriu que pot contenir el valor de l'1 al 5. MyArray pot contenir 5 resultats diferents, com el següent.
Codi:
Sub ReDim_Example1 () Dim MyArray (1 a 5) As String MyArray (1) = "Hola" MyArray (2) = "Bona" MyArray (3) = "Matí" MyArray (4) = "Tenir un" MyArray (5) = Sub "Bon dia"
Matriu dinàmica amb declaració ReDim
Però a la matriu dinàmica aquest no és el cas, no decidirem el valor inferior i el valor superior amb suficient antelació, sinó que només definirem el nom de la matriu i assignarem el tipus de dades.
Sub ReDim_Example1 () Dim MyArray () Com a final de cadena Sub
Per tal de dinamitzar el nom de la matriu, primer hem de declarar-la amb la paraula "Dim", però no decidiu la mida de la matriu amb suficient antelació. Només nomenem una matriu amb valors buits dins del parèntesi (). Quan la matriu no inclou mida, es tracta com una matriu dinàmica.
Dim MyArray () Com a cadena
En el moment que esmenta la mida de la matriu dins del parèntesi, es converteix en una matriu estàtica. Dim MyArray (1 a 5) com a cadena
A la matriu dinàmica, sempre redimensionem la mida de la matriu utilitzant la paraula "ReDim" a la següent línia del codi.
ReDim MyArray (1 a 6) com a cadena
Qualsevol valor emmagatzemat al nom de la matriu en els passos anteriors, és a dir, que utilitza la instrucció "Dim", és nul i la mida que hem declarat amb "ReDim" es converteix en la nova mida de la matriu.
Exemples per utilitzar la declaració VBA Redim
Podeu descarregar aquesta plantilla VBA ReDim Excel aquí: plantilla VBA ReDim ExcelExemple 1
Mireu l'exemple d'utilitzar pràcticament la declaració "ReDim". Seguiu els passos següents per aplicar "ReDim".
Pas 1: Creeu primer un nom de macro.
Pas 2: Declareu un nom de matriu com una cadena.
Codi:
Sub ReDim_Example1 () Dim MyArray () Com a final de cadena Sub
Pas 3: Ara utilitzeu la paraula "Redim" i assigneu la mida de la matriu.
Codi:
Sub ReDim_Example1 () Dim MyArray () Com a cadena ReDim MyArray (1 a 3) Final Sub
Pas 4: Per tant, ara el nom de la matriu "MyArray" pot contenir fins a 3 valors aquí. Assigneu el valor a aquestes 3 matrius com la següent.
Codi:
Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 to 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub
Per tant, la primera matriu és igual a la paraula "Benvinguda", la segona matriu és igual a la paraula "a" i la tercera matriu és igual a la paraula "VBA".
Pas 5: Ara emmagatzemeu aquests valors de matriu a les cel·les.
Codi:
Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 to 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Range ("B1"). Valor = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub
Pas 6: Si executeu aquest codi, hauríem de tenir aquests valors a les cel·les A1, B1 i C1 respectivament.
Exemple # 2: canvieu la mida de la matriu mentre recordeu els valors antics.
Un cop assignats els valors del nom de la matriu, també podem canviar la mida en qualsevol moment del procediment mitjançant la paraula "ReDim Preserve".
Suposem que ja heu declarat un nom de matriu i heu assignat valors a aquest nom de matriu com el següent.
Ara voldríeu augmentar la longitud de la matriu en 2, és a dir, 5. En aquest cas, podem utilitzar la paraula VBA "ReDim Preserve" per canviar la mida de la longitud de la matriu per recordar també els valors antics.
Codi:
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) = Rang "Caràcter 1" ("A1"). Valor = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Valor = MyArray (4) End Sub
Ara podem assignar dos valors més a la matriu.
Codi:
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) = Rang "Caràcter 1" ("A1"). Valor = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Valor = MyArray (4) End Sub
Ara emmagatzemeu aquests valors a les cel·les.
Codi:
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) = Rang "Caràcter 1" ("A1"). Valor = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) Range ("D1"). Valor = MyArray (4) End Sub
Ara executeu la macro i veureu què passa
Així doncs, vam obtenir la nova paraula a la cel·la D1.
La raó per la qual hem d'utilitzar la paraula "preservar" perquè array hauria de recordar els valors de matriu antics del procediment.
En el moment que ignori la paraula "preservar", no recordarà els valors antics.
Coses que cal recordar aquí
- ReDim només pot contenir l'últim valor de la matriu, no els molts valors. Per exemple, no podem utilitzar aquest codi "ReDim Preserve MyArray (4 a 5)", això provocarà l'error.
- No podem ReDim matrius estàtics. En el moment que assigneu la mida de la matriu dins del parèntesi, es converteix en una matriu estàtica.
- Mitjançant ReDim no podem canviar el tipus de dades. La matriu pot contenir qualsevol tipus de dades que hàgim assignat durant la declaració de la matriu.