Contenido
ReDim es una instrucción en VBA (Visual Basic for Applications) que se utiliza para redimensionar arrays dinámicos. Al utilizar ReDim, puedes cambiar el tamaño de un array que ya ha sido previamente declarado, permitiéndote aumentar o disminuir el número de elementos que el array puede contener. Es importante destacar que ReDim solo puede ser usado con arrays que fueron declarados como dinámicos, es decir, sin especificar el número de elementos en su declaración inicial.
Aquí tienes cómo usar ReDim en un script de VBA:
Declarar el Array Dinámico
Primero, debes declarar el array sin especificar las dimensiones.
Dim miArray() As Integer
Dimensionar el Array con ReDim
Luego puedes usar ReDim para establecer las dimensiones del array.
ReDim miArray(5)
Esto redimensionará miArray para que pueda contener 6 elementos (los índices en VBA empiezan en 0 por defecto a menos que se especifique Option Base 1).
Cambiar el tamaño del Array
Si necesitas cambiar el tamaño del array más tarde, puedes usar ReDim de nuevo.
ReDim miArray(10)
Ten en cuenta que al utilizar ReDim se perderán los datos que estaban almacenados en el array.
Preservar datos con Preserve
Si no quieres perder los datos al redimensionar el array, debes utilizar la palabra clave Preserve.
ReDim Preserve miArray(15)
Esto conservará los datos en el array, pero solo permitirá aumentar el tamaño del último índice del array. No puedes usar Preserve para cambiar la dimensión inferior (el primer índice) si el array es multidimensional.
Aquí tienes un ejemplo completo que incluye la declaración e inicialización del array, seguido por su redimensionamiento con conservación de los datos:
Sub EjemploReDim()
' Declarar el array dinámico
Dim miArray() As Integer
' Dimensionar el array por primera vez
ReDim miArray(5)
' Asignar valores al array
Dim i As Integer
For i = LBound(miArray) To UBound(miArray)
miArray(i) = i + 1
Next i
' Cambiar el tamaño del array y preservar contenido existente
ReDim Preserve miArray(10)
' Imprimir los valores del array redimensionado
For i = LBound(miArray) To UBound(miArray)
Debug.Print miArray(i)
Next i
End Sub
Este ejemplo inicializa un array con 6 elementos, les asigna valores, redimensiona el array a 11 elementos y luego imprime los valores del array redimensionado. Al utilizar Preserve, los valores originales se mantienen y los nuevos elementos del array se inicializan en cero (o en blanco, si es un array de cadenas de texto).
Recuerda que los arrays en VBA por defecto tienen base cero, a menos que hayas especificado Option Base 1 al inicio del módulo, en cuyo caso comenzarían con el índice 1.