Trabajando con Arrays para Programación VBA en Excel 2016

La mayoría de los lenguajes de programación soportan matrices, incluyendo VBA. Un array es un grupo de variables que comparten un nombre. Se hace referencia a una variable específica en el array utilizando el nombre del array y un número de índice entre paréntesis. Por ejemplo, puede definir una matriz de 12 variables de cadena para contener los nombres de los meses del año. Si nombra el array NombresDeMes, puede referirse al primer elemento del array como NombresDeMes(1), al segundo elemento como NombresDeMeses(2), y así sucesivamente.

Declaración de matrices

Antes de poder usar un array, debe declararlo. Sin excepciones. A diferencia de las variables normales, el VBA es muy estricto con esta regla. Se declara un array con una sentencia Dim o Public, de la misma forma que se declara una variable regular. Sin embargo, también necesita especificar el número de elementos en el array. Para ello, especifique el primer número de índice, la palabra clave A y el último número de índice, todo ello entre paréntesis. El siguiente ejemplo muestra cómo declarar una matriz de 100 enteros:

Dim MyArray(1 a 100) Como un número entero

Cuando se declara un array, se puede elegir especificar sólo el índice superior. Si omite el índice más bajo, VBA asume que es 0. Por lo tanto, ambas declaraciones siguientes declaran el mismo arreglo de 101 elementos:

Dim MyArray (0 a 100) Como IntegerDim MyArray (100) Como Integer

Si desea que VBA asuma que 1 (en lugar de 0) es el índice más bajo para sus matrices, incluya la siguiente declaración en la sección Declaraciones en la parte superior de su módulo:

Opción Base 1

Esta declaración obliga a VBA a usar 1 como primer número de índice para matrices que declaran sólo el índice superior. Si esta declaración está presente, las siguientes declaraciones son idénticas, ambas declarando un arreglo de 100 elementos:

Dim MyArray (1 a 100) Como IntegerDim MyArray (100) Como Integer

Matrices multidimensionales

Los arreglos creados en los ejemplos anteriores son todos arreglos unidimensionales. Piense en matrices unidimensionales como una sola línea de valores. Los arreglos que se crean en VBA pueden tener hasta 60 dimensiones, aunque rara vez se necesitan más de dos o tres dimensiones en un arreglo. El siguiente ejemplo declara un array de 81 enteros con dos dimensiones:

Dim MyArray (1 a 9, 1 a 9) Como un número entero

Puedes pensar en este arreglo como si ocupara una matriz de 9 x 9 – perfecto para almacenar todos los números en un rompecabezas de Sudoku.

Para referirse a un elemento específico de este array, es necesario especificar dos números de índice (similar a su “fila” y su “columna” en la matriz). El siguiente ejemplo muestra cómo puede asignar un valor a un elemento de este array:

MyArray (3, 4)= 125

Esta sentencia asigna un valor a un solo elemento del array. Si está pensando en el arreglo en términos de una matriz de 9 x 9, esto asigna 125 al elemento ubicado en la tercera fila y la cuarta columna de la matriz.

He aquí cómo declarar una matriz tridimensional, con 1.000 elementos:

Dim My3DArray (1 a 10, 1 a 10, 1 a 10, 1 a 10) Como un número entero

Puedes pensar en una matriz tridimensional como un cubo. Visualizar una matriz de más de tres dimensiones es más difícil.

Matrices dinámicas

También puede crear arreglos dinámicos. Un arreglo dinámico no tiene un número preestablecido de elementos. Declarar un arreglo dinámico con un conjunto vacío de paréntesis:

Dim MyArray () Como un número entero

Antes de poder usar este array, debe usar la sentencia ReDim para indicar a VBA cuántos elementos tiene el array. Normalmente, el número de elementos en la matriz se determina mientras se ejecuta el código. Puede utilizar la sentencia ReDim cualquier número de veces, cambiando el tamaño del array tantas veces como sea necesario. El siguiente ejemplo muestra cómo cambiar el número de elementos en un arreglo dinámico. Asume que la variable NumElements contiene un valor que su código ha calculado.

ReDim MyArray (1 a NumElements)

Cuando redimensiona un array usando ReDim, borra cualquier valor actualmente almacenado en los elementos del array. Puede evitar la destrucción de los valores antiguos utilizando la palabra clave Conservar. El siguiente ejemplo muestra cómo puede preservar los valores de un array cuando redimensiona el array:

ReDim Preserve MyArray (1 a NumElements)

Si MyArray tiene actualmente diez elementos, y se ejecuta la sentencia anterior con NumElements igual a 12, los primeros diez elementos permanecen intactos, y el array tiene espacio para dos elementos adicionales (hasta el número contenido en la variable NumElements). Sin embargo, si NumElements es igual a 7, los primeros siete elementos se conservan, pero los tres elementos restantes se encuentran en proceso de desaparición.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *