Matrices de Excel VBA: Tipos y cómo usarlas con un ejemplo

⚡ Resumen inteligente

Las matrices de Excel VBA almacenan un grupo de valores relacionados del mismo tipo de datos bajo un mismo nombre, a los que se accede mediante un índice. Esta página explica las matrices estáticas y dinámicas, las matrices unidimensionales, bidimensionales y multidimensionales, la sintaxis de declaración y un ejemplo práctico de carga de bebidas.

  • 📦 Concepto de matriz: Una única ubicación de memoria con nombre que contiene muchos valores del mismo tipo de datos, separados por un índice.
  • 🎯 Ventajas: Los arreglos agrupan datos relacionados, reducen el número de variables y hacen que la recuperación y la clasificación de datos sean más rápidas.
  • 📌 Matriz estática: Declarado con un tamaño fijo, por ejemplo Dim ArrayMonth(12) As String, cuando se conoce el número de elementos.
  • 🔄 Matriz dinámica: Se declara vacío con Dim ArrayMonth() y se dimensiona posteriormente usando ReDim cuando se desconoce el número de elementos.
  • 📐 Dimensiones: Una matriz utiliza uno, dos o más índices para modelar listas individuales, tablas o datos multinivel.
  • 🧪 Ejemplo trabajado: Un botón de comando carga cuatro nombres de bebidas desde una matriz en las celdas de la hoja de cálculo usando Sheet1.Cells.

Matrices VBA de Excel

¿Qué es la matriz VBA?

Una matriz se define como una ubicación de memoria capaz de almacenar más de un valor. Todos los valores deben ser del mismo tipo de datos. Digamos que desea almacenar una lista de sus bebidas favoritas en una sola variable, puede usar una matriz VBA para hacerlo.

Al utilizar una matriz, puede hacer referencia a los valores relacionados con el mismo nombre. Puede utilizar un índice o subíndice para diferenciarlos. Los valores individuales se denominan elementos de la matriz VBA de Excel. Son contiguos desde el índice 0 hasta el valor de índice más alto.

Este tutorial asume que estás usando Microsoft Excel versión 2013. El conocimiento aún se aplica a otras versiones de Microsoft Sobresalir también.

¿Cuáles son las ventajas de las matrices?

Antes de escribir código para matrices, es útil comprender por qué vale la pena usar matrices. A continuación se presentan algunos de los beneficios que ofrece la función de matriz de VBA.

  1. Agrupe datos relacionados lógicamente; digamos que desea almacenar una lista de estudiantes. Puede utilizar una única variable de matriz que tenga ubicaciones separadas para las categorías de estudiantes, es decir, jardín de infantes, primaria, secundaria, preparatoria, etc.
  2. Las matrices facilitan la escritura de código mantenible. Para los mismos datos relacionados lógicamente, le permite definir una única variable, en lugar de definir más de una variable.
  3. Mejor rendimiento: una vez que se ha definido una matriz, es más rápido recuperar, ordenar y modificar datos.

Tipos de matrices en VBA

VBA admite dos tipos de matrices, a saber;

  • Estático – Este tipo de matrices tienen un número fijo predeterminado de elementos que se pueden almacenar. No se puede cambiar el tamaño del tipo de datos de una matriz estática. Son útiles cuando desea trabajar con entidades conocidas, como el número de días de una semana, el género, etc.Por ejemplo: Dim ArrayMonth(12) como cadena
  • Dynamic – Este tipo de matrices no tienen un número fijo predeterminado de elementos que se pueden almacenar. Son útiles cuando se trabaja con entidades cuyo número no se puede predeterminar.Por ejemplo: Dim ArrayMonth() como variante

Una vez que sepa qué tipo se ajusta a sus datos, el siguiente paso es la sintaxis de declaración para cada uno.

Sintaxis para declarar matrices

Matrices estáticas

La sintaxis para declarar STATIC matrices es la siguiente:

Dim arrayName (n) as datatype

AQUÍ,

Code Acción:
Tipo de datos Dim arrayName (n)
  1. Declara una variable de matriz denominada arrayName con un tamaño de n y un tipo de datos. El tamaño se refiere a la cantidad de elementos que puede almacenar la matriz.

Matrices dinámicas

La sintaxis para declarar DINÁMICA matrices es la siguiente:

Dim arrayName() as datatype
ReDim arrayName(4)

AQUÍ,

Code Acción:
Tipo de datos Dim arrayName ()
  1. Declara una variable de matriz llamada arrayName sin especificar el número de elementos
ReDim nombre de matriz (4)
  1. Especifica el tamaño de la matriz una vez definida la matriz.

Dimensiones de la matriz

Una matriz puede ser unidimensional, bidimensional o multidimensional.

  • Una dimensión: En esta dimensión, la matriz usa solo un índice. Por ejemplo, un número de personas de cada edad.
  • Dos dimensiones: En esta dimensión, la matriz utiliza dos índices. Por ejemplo, un número de estudiantes en cada clase. Requiere número de clases y número de estudiantes en cada clase.
  • Multidimensional: En esta dimensión, la matriz utiliza más de dos índices. Por ejemplo, las temperaturas durante el día. (30, 40, 20).

Cómo usar Array en Excel VBA

Una vez explicada la teoría, podemos poner en práctica una matriz en un libro de trabajo real. Crearemos una aplicación sencilla. Esta aplicación rellena una hoja de Excel con datos de una variable de matriz. En este ejemplo de matriz en VBA, haremos lo siguiente:

  • Crear un nuevo Microsoft Libro de Excel y guárdelo como Libro de Excel habilitado para macros (*.xlsm)
  • Agregar un botón de comando al libro de trabajo
  • Establecer las propiedades de nombre y título del botón de comando
  • Programando el VBA que llena la hoja de Excel

Hagamos este ejercicio paso a paso,

Paso 1: crear un nuevo libro de trabajo

  1. Abra Microsoft Excel
  2. Guarde el nuevo libro como VBA Arrays.xlsm

Paso 2: agregue un botón de comando

Nota: Esta sección asume que está familiarizado con el proceso de creación de una interfaz en Excel. Si no estás familiarizado, lee el tutorial. Control de formularios VBA Excel y control ActiveX. Le mostrará cómo crear la interfaz.

  1. Agregar un botón de comando a la hoja

Usar matriz en Excel VBA

  1. Establezca la propiedad de nombre en cmdLoadBeverages
  2. Establezca la propiedad del título en Cargar bebidas

Su GUI ahora debería ser la siguiente

Usar matriz en Excel VBA

Paso 3: guarda el archivo

  1. Haga clic en el botón guardar como
  2. Elija el libro de trabajo habilitado para macros de Excel (*.xlsm) como se muestra en la imagen a continuación

Usar matriz en Excel VBA

Paso 4: escribe el código

Ahora escribiremos el código de nuestra aplicación.

  1. Haga clic derecho en el botón Cargar bebidas y seleccione ver código
  2. Agregue el siguiente código al evento de clic de cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

AQUÍ,

Code Acción:
Bebidas tenues (1 a 4) como cadena
  • Declara una variable de matriz llamada Bebidas. El primer índice de la matriz es 1 y el último índice de la matriz es 4.
Bebidas(1) = “Pepsi”
  • Asigna el valor Pepsi al primer elemento de la matriz. El otro código similar hace lo mismo con los demás elementos de la matriz.
Hoja1.Celdas(1, 1).Valor = “Mis bebidas favoritas”
  • Escribe el valor Mis Bebidas Favoritas en la dirección de celda A1. Sheet1 hace referencia a la hoja y Cells(1,1) hace referencia a la fila número 1 y la columna 1 (B)
Hoja1.Celdas(2, 1).Valor = Bebidas(1)
  • Escribe el valor del elemento de la matriz con índice 1 en la fila número dos de la columna 1

Probar nuestra aplicación

Una vez implementado el código, el último paso consiste en ejecutar el botón y confirmar que la matriz llena la hoja. Seleccione la pestaña Desarrollador y asegúrese de que el botón Modo de diseño esté desactivado. El indicador será un fondo blanco, no un fondo de color (verdoso). (Vea la imagen a continuación).

Probar una aplicación en Excel VBA

Haga clic en el botón Cargar bebidas

Obtendrás los siguientes resultados

Probar una aplicación en Excel VBA

Descargue Excel que contiene el código anterior

Descargue el archivo Excel anterior. Code

Preguntas Frecuentes

Un array estático tiene un tamaño fijo establecido en su declaración, como por ejemplo Dim Arr(12). Un array dinámico se declara vacío con Dim Arr() y se redimensiona posteriormente con ReDim cuando no se conoce de antemano el número de elementos.

ReDim establece o cambia el tamaño de una matriz dinámica después de su declaración. Al agregar la palabra clave Preserve, como en ReDim Preserve Arr(10), se conservan los valores existentes al redimensionar; sin Preserve, se borran todos los valores almacenados.

Utilice las funciones LBound y UBound. LBound devuelve el índice más bajo y UBound devuelve el índice más alto. El número de elementos es igual a UBound(Arr) menos LBound(Arr) más uno, lo cual funciona tanto para arreglos estáticos como dinámicos.

Sí. Los asistentes de IA como Copilot generan declaraciones de matrices y bucles a partir de una solicitud simple; por ejemplo, cargan diez nombres de productos en una columna. El desarrollador pega el código en el editor y lo prueba en una copia del libro de trabajo.

Sí. Los asistentes de IA leen el error "Índice fuera de rango" y el código, luego señalan el índice que excede los límites de la matriz y sugieren una solución, como ajustar el tamaño de ReDim o el contador del bucle. El desarrollador aplica el cambio y vuelve a probarlo.

Resumir este post con: