Sentencia ReDim

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.