Excel VBA ReDim

Podemos ajustar el número de elementos en una matriz a través de VBA Redim. Redim no es una función, es un programa de asignación de memoria dinámica a través de la declaración de Redim. Cuando usamos Redim, se guarda una cantidad específica de memoria para almacenar los datos.

¿Cómo utilizar la declaración VBA ReDim?

Discutiremos cómo usar VBA ReDim Statement usando algunos ejemplos.

Puede descargar esta plantilla VBA ReDim Excel aquí - Plantilla VBA ReDim Excel

VBA ReDim - Ejemplo # 1

Cuando usamos Dim para una matriz, no podemos cambiar el valor del almacén de datos en una matriz. Pero cuando usamos Redim, podemos cambiar el valor almacenado en una matriz. Este proceso de cambiar la matriz se llama redimensionar la matriz.

Supongamos que tenemos una matriz A de 4 valores de celda, entonces se definirá con;

  • Dim A (3) como doble

Como podemos ver, todas las celdas tienen "0" como valor almacenado. Ahora supongamos que si redimimos el Dim A con datos de 3 celdas y almacenamos el valor en él, entonces se verá como a continuación.

  • ReDim B (2) como doble

B (0) = 1; B (1) = 3, B (2) = -6

Se verá como;

Ahora, si queremos agregar celdas, podemos hacerlo. Luego asignará automáticamente el "0" a esas celdas. Ahora para implementar ReDim, presione Alt + F11 para abrir la ventana VBA. Y desde el menú Insertar, seleccione la opción Módulo para abrir una nueva ventana como se muestra a continuación.

Ahora abra Subcategoría y agregue cualquier nombre. Como estamos usando ReDim, lo hemos llamado como UsingReDim .

Código:

 Sub UsingReDim () End Sub 

Ahora, antes de definir ReDim, primero defina cualquier número entero. Aquí lo hemos definido como "A" con una longitud de matriz 3. Y almacena algunos valores en una matriz creada de 3 celdas como se muestra a continuación.

Código:

 Sub UsingReDim () Dim A (2) As Integer ReDim A (2) A (0) = 1 A (1) = 2 A (2) = 3 End Sub 

Ahora imprimiendo los valores almacenados en el Entero A, necesitamos crear un cuadro de mensaje con la ayuda del comando MsgBox como se muestra a continuación.

Código:

 Sub Usando ReDim () Dim A (2) Como Entero A (0) = 1 A (1) = 2 A (2) = 3 MsgBox A (0) MsgBox A (1) MsgBox A (2) End Sub 

Ahora ejecute el código haciendo clic en el botón de reproducción o la tecla F5 como se muestra a continuación.

Ahora usaremos ReDim y almacenará más de los caracteres definidos en la matriz. Para esto, use ReDim para el entero A. definido. Primero, eliminaremos el recuento de celdas definido de Dim. El uso de la función Redim es el siguiente:

  • ReDim A (2) se utiliza para la matriz de celdas A (0), A (1), A (2) .
  • ReDim A (4) se utiliza para las celdas A (0), A (1), A (2), A (3), A (4) con dos celdas ficticias adicionales.

Código:

 Sub UsingReDim () Dim A () Como número entero ReDim A (2) A (0) = 1 A (1) = 2 A (2) = 3 ReDim A (4) MsgBox A (0) MsgBox A (1) MsgBox A (2) Fin Sub 

Una vez hecho esto, ejecute el código completo haciendo clic en el botón de reproducción o usando la tecla F5. Una vez que ejecutamos el código completo, mostraremos 3 cuadros de mensaje pero con un mensaje que solo contiene "0" como se muestra a continuación.

Lo cual se debe a que ReDim en realidad solo tiene 3 valores, pero no tenía valores almacenados bajo enteros definidos. El uso de Redim solo no almacena ningún valor y transfiere los valores almacenados previamente en él. Para aplicar lo mismo, necesitamos preservar los valores del entero A definido, con la ayuda de ReDim. Al usar Preserve en VBA, podemos almacenar el valor en ReDim. Para esto, agregaremos Preserve después de ReDim en los códigos VBA como se muestra a continuación.

Código:

 Sub Usando ReDim () Dim A () Como Entero ReDim A (2) A (0) = 1 A (1) = 2 A (2) = 3 ReDim Preserve A (4) MsgBox A (0) MsgBox A (1) MsgBox A (2) End Sub 

Ahora ejecute el código completo nuevamente. Veremos 3 cuadros de mensaje con todos los valores almacenados como se muestra a continuación.

Ahora, debe preguntarse por qué usamos A (4) con ReDim Preserve?

A continuación se muestra la explicación. Donde la , y posición de la matriz está ocupada con los valores 1, 2 y 3 respectivamente. Y la y posición que representa el recuento 3 y 4 de la matriz A son celdas ficticias. Lo que significa que si no hay datos almacenados en la y posición, automáticamente considerará el valor "0" y el mensaje no se completará.

Si tratamos de ver los valores almacenados en la y posición de la matriz ReDim, también debemos insertar un cuadro de mensaje para estas 2 posiciones.

Código:

 Sub Usando ReDim () Dim A () Como Entero ReDim A (3) A (0) = 1 A (1) = 2 A (2) = 3 ReDim Preserve A (4) MsgBox A (0) MsgBox A (1) MsgBox A (2) MsgBox A (3) MsgBox A (4) End Sub 

Como hemos agregado un mensaje en recuadro para la y posición sin almacenar ningún valor. Ahora ejecuta el código nuevamente.

Como podemos ver en las capturas de pantalla anteriores, para una y posición obtuvimos cuadros de mensaje pero el valor se muestra como "0". Lo que significa explica la afirmación anterior. Si no hay un valor definido, ReDim Preserve considerará automáticamente y completará "0" en el resto de las celdas.

VBA ReDim - Ejemplo # 2

Ahora veamos cómo usar ReDim Statement con String en lugar de Integer.

Código:

 Sub UsingReDim () Dim A () Como String ReDim A (3) A (0) = "Customer" A (1) = "Product" A (2) = "Product Id" ReDim Preserve A (4) MsgBox A (0 ) MsgBox A (1) MsgBox A (2) MsgBox A (3) MsgBox A (4) End Sub 

Una vez hecho esto, ejecute el código completo con la tecla F5 o manualmente como se muestra a continuación.

Como podemos ver en la captura de pantalla anterior, estamos obteniendo todos los caracteres definidos y almacenados en los primeros 3 cuadros de mensaje. Y en la cuarta y quinta casilla no estamos obteniendo nada. Como ReDim no almacena ningún valor si no está definido. Para los enteros, se reflejará como "0", pero con String, solo mostrará mensajes en blanco.

Pros de Excel VBA ReDim

  • VBA ReDim nos permite redefinir los valores de dimensión.
  • Podemos definir tantos como matrices dimensionales sin valor o con valor cero y almacenar los valores más adelante.
  • ReDim, lo que significa que el Dimensionamiento permite usar la posibilidad de agregar cualquier número de matrices de datos sin aumentar el tamaño de los datos almacenados.

Cosas para recordar

  • Recuerde siempre agregar Preserve después de ReDim en VBA, para que almacene las dimensiones utilizadas anteriormente.
  • Si una dimensión se define como Cadena, cualquier posición que se deje en blanco al asignar valores, se mantendrá en blanco y una vez que imprimamos la misma con la ayuda del cuadro de mensaje también se mostrará el cuadro de mensaje en blanco.
  • Si hemos definido las dimensiones Dim con 3 caracteres o valores de celda, entonces en ReDim podemos usar cualquier cantidad de dimensiones que contengan valores ya definidos y almacenados en Dim.

Artículos recomendados

Esta ha sido una guía para Excel VBA ReDim. Aquí discutimos cómo usar VBA ReDim Statement para eliminar espacios junto con algunos ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. ¿Cómo usar VBA en la declaración de error?
  2. Formato de número en VBA
  3. ¿Cómo usar la función de búsqueda de VBA?
  4. Función VBA TRIM

Categoría: