Si el tamaño de la matriz se incrementa y que no quieren fijar el tamaño de la matriz, se puede utilizar la palabra clave ReDim. Excel VBA entonces cambia el tamaño de la matriz de forma automática.

Añadir algunos números de la columna A.

Dynamic Array in Excel VBA

Coloque un botón de comando en la hoja de trabajo y añadir las líneas de código siguientes:

  1. En primer lugar, declaramos los números matriz llamada. También declarar dos variables de tipo entero. Una llamada tamaño y uno llamado i.

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

Nota: la matriz tiene sin embargo. número, tamaño y que se eligen al azar aquí, se puede usar cualquier nombre. Recuerde hacer referencia a estos nombres en el resto de su código.

  1. A continuación, vamos a determinar el tamaño de la matriz y la almacena en la variable tamaño. Puede utilizar la función de hoja de CONTARA para esto. Agregue la siguiente línea de código:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
  1. Ahora sabemos que el tamaño de la matriz y podemos redimensionar la misma. Agregue la siguiente línea de código:

ReDim numbers(size)
  1. A continuación, inicializar cada elemento de la matriz. Usamos un bucle.

For i = 1 To size

numbers(i) = Cells(i, 1).Value

Next i
  1. Se mostrará el último elemento de la matriz usando un MsgBox.

MsgBox numbers(size)
  1. Cierre el Editor de Visual Basic y haga clic en el botón de comando en la hoja.

Resultado:

Last Element of the Array

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

Add Number

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

Dynamic Array Result

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

  1. Cuando se utiliza la palabra clave ReDim, que borre los datos existentes almacenados en la matriz. Por ejemplo, agregue las siguientes líneas de código al código creado previamente:

ReDim numbers(3)

MsgBox numbers(1)

Resultado:

Without Preserve

La matriz está vacía.

  1. Cuando se desea conservar los datos en la matriz existente cuando redimensionar, utilice la palabra clave Preserve.

ReDim Preserve numbers(3)

MsgBox numbers(1)

Resultado:

With Preserve