/ / Array dinámico en Excel VBA

Array dinámico en Excel VBA

Si el tamaño de su matriz aumenta y no desea corregir el tamaño de la matriz, puede usar el ReDim keyword. Excel VBA luego cambia el tamaño de la matriz automáticamente.

Agrega algunos números a la columna A.

Array dinámico en Excel VBA

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

1. Primero, declaramos los números de la matriz llamada. También declara dos variables de tipo entero. Un tamaño nombrado y uno llamado i.

Dim numbers() As Integer, size As Integer, i As Integer

Nota: la matriz aún no tiene tamaño. Los números, el tamaño y yo se eligen aquí aleatoriamente, puede usar cualquier nombre. Recuerde referirse a estos nombres en el resto de su código.

2. A continuación, determinamos el tamaño de la matriz y la almacenamos en el tamaño de la variable. Puede utilizar la función de hoja de cálculo CountA para esto. Agregue la siguiente línea de código:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

3. Ahora sabemos el tamaño de la matriz y podemos redimensionarla. Agregue la siguiente línea de código:

ReDim numbers(size)

4. A continuación, inicializamos cada elemento de la matriz. Utilizamos un bucle.

For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i

5. Mostramos el último elemento de la matriz usando un MsgBox.

MsgBox numbers(size)

6. Salga del Editor de Visual Basic y haga clic en el botón de comando en la hoja.

Resultado:

Último elemento de la matriz

7. Ahora, para ver claramente por qué esto se llama una matriz dinámica, agregue un número a la columna A.

Añade un número

8. Haga clic en el botón de comando de nuevo.

Resultado de matriz dinámica

Conclusión: Excel VBA ha cambiado automáticamente el tamaño de esta matriz dinámica.

9. Cuando utiliza la palabra clave ReDim, borra todos los datos existentes almacenados actualmente en la matriz. Por ejemplo, agregue las siguientes líneas de código al código creado anteriormente:

ReDim numbers(3)
MsgBox numbers(1)

Resultado:

Sin preservar

La matriz está vacía.

10. Cuando desee conservar los datos en la matriz existente cuando la redimensione, use la palabra clave Preservar.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Resultado:

Con conserva

Lea también: