Declara variables de matriz dinámica y asigna o reasigna espacio de almacenamiento en el nivel de procedimiento.
Sintaxis
ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .
Argumentos:
Preserve: conserva los datos de una matriz existente al cambiar el tamaño de la última dimensión.
Varname: nombre de la variable; sigue las convenciones de denominación de variables estándar.
Subscripts: dimensiones de una variable de matriz.
Observaciones
La sentencia ReDim se utiliza para ajustar o cambiar el tamaño de una matriz dinámica que ya se ha declarado formalmente mediante una sentencia Private, Public o Dim con paréntesis vacíos (sin subíndices de dimensión). Puede utilizar la sentencia ReDim varias veces para cambiar el número de elementos y dimensiones de una matriz.
Si utiliza la palabra clave Preserve, solo puede cambiar el tamaño de la última dimensión de matriz y no puede cambiar el número de dimensiones. Por ejemplo, si la matriz solo tiene una dimensión, puede cambiar el tamaño de esa dimensión porque es la última y única dimensión. Sin embargo, si la matriz tiene dos o más dimensiones, solo puede cambiar el tamaño de la última dimensión y conservar el contenido de la matriz.
En el siguiente ejemplo se muestra cómo puede aumentar el tamaño de la última dimensión de una matriz dinámica sin borrar los datos existentes incluidos en la matriz.
Ejemplo 1: uso básico de ReDim (sin Preserve)
Dim arr() ' Initially, create an array with 3 elements ReDim arr(2) ' Array can hold 3 elements (0, 1, 2) ' Assign values to the array arr(0) = "Apple" arr(1) = "Banana" arr(2) = "Cherry" ' Now, resize the array to hold 5 elements ReDim arr(4) ' Array can hold 5 elements (0, 1, 2, 3, 4) 'If you try to access indexes 0, 1, 2 there will be no values. ' The previous values are lost because we did not use Preserve arr(3) = "Date" arr(4) = "Elderberry"
Ejemplo 2: uso de ReDim Preserve para conservar los datos existentes
Dim arr() ' Initially, create an array with 3 elements ReDim arr(2) ' Array can hold 3 elements (0, 1, 2) ' Assign values to the array arr(0) = "Apple" arr(1) = "Banana" arr(2) = "Cherry" ' Now, resize the array to hold 5 elements, keeping the existing data ReDim Preserve arr(4) ' Array can hold 5 elements (0, 1, 2, 3, 4) ' The previous values are preserved, so we can add more elements arr(3) = "Date" arr(4) = "Elderberry"
Precaución: Si hace que una matriz sea más pequeña de lo que era originalmente, los datos de los elementos eliminados se pierden.
Cuando se inicializan variables, una variable numérica se inicializa en 0 y una variable de cadena se inicializa en una cadena de longitud cero (""). A una variable que hace referencia a un objeto se le debe asignar un objeto existente mediante la sentencia Set antes de que se pueda utilizar. Hasta que se le asigna un objeto, la variable de objeto declarada tiene el valor especial Nothing.