Matriz dinámica de VBA (Redim y Redim Preserve)

Este tutorial demostrará cómo usar matrices dinámicas (redim y redim preserve) en VBA.

Matriz dinámica

Matrices dinámicas son matrices que pueden cambiar de tamaño (a diferencia de matrices estáticas, que son estáticos).

Para declarar una matriz dinámica, declara la matriz, pero omite el tamaño de la matriz:

1 Dim strNames () como cadena

Luego, antes de que pueda asignar valores a su matriz, debe usar la Declaración ReDim para configurar la matriz al tamaño deseado:

1 ReDim strNames (1 a 3)

Ahora, en cualquier momento que desee cambiar el tamaño de su matriz, simplemente use ReDim (o ReDim Preserve, como veremos a continuación).

Matrices de variantes dinámicas

Nota: Las matrices variantes son un poco diferentes. Con las matrices variantes, no es necesario establecer el tamaño de la matriz con ReDim antes de asignar valores.

12345678 Sub TestArray ()'declarar la variableDim varNames () como variante'poblar la matrizvarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'devuelve los valoresMsgBox Join (varNames, ",")End Sub

Redim contra Redim Preserve

los ReDim declaración cambia el tamaño de una matriz, claro todos los valores existentes.

los ReDim Preserve declaración cambia el tamaño de una matriz, acuerdo (“Preservando”) todos los valores existentes.

Usando ReDim

En la práctica, cambiar el tamaño de una matriz con ReDim se ve así:

123456789101112 Sub TestReDim ()'declarar la matriz de cadenasDim strNames () como cadena'cambiar el tamaño de la matriz de cadenas para poder contener 3 valoresReDim strNames (1 a 3)'rellenar la matriz con 3 nombresstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'muestra el resultado en la ventana inmediataDebug.Print Join (strNames, vbCrLf)End Sub

Uso de ReDim Preserve

En este ejemplo, usaremos ReDim para establecer la matriz dinámica inicial y luego ReDim Preserve para cambiar el tamaño de la matriz, acuerdo los valores originales:

1234567891011121314151617 Sub TestReDim ()'declarar la matriz de cadenasDim strNames () como cadena'cambiar el tamaño de la matriz de cadenas para poder contener 3 valoresReDim strNames (1 a 3)'poblar la matrizstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'muestra el resultado en la ventana inmediataDebug.Print Join (strNames, vbCrLf)'redim pero conserva los datosReDim Preserve strNames (1 a 4)strNames (4) = "Fred"'muestra el resultado en la ventana inmediataDebug.Print Join (strNames, vbCrLf)End Sub

Si no usa el PRESERVAR declaración, perdería los datos que habían estado en la matriz anteriormente.

En la ventana inmediata de arriba, la matriz llenó a Mel, Steve y Bob. Cuando se volvió a declarar, eliminó esos valores y en su lugar devolvió 3 valores en blanco y luego el valor "Fred". Esto se debe a la PRESERVAR declaración omitida.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave