Utilizar matrices

Microsoft VBA

Utilizar matrices

   

Se puede declarar una matriz para operar con un conjunto de valores del mismo tipo de datos. Una matriz es una única variable con muchos elementos en que se pueden almacenar valores, mientras que una variable normal tiene sólo un área de almacenamiento en el que sólo se puede archivar un valor. Puede referirse a la matriz como un todo cuando se trata de hacer referencia a todos los valores que contiene, o bien hacer referencia a sus elementos individuales.

Por ejemplo, para almacenar los gastos diarios de todos los días del año se puede declarar una variable matriz con 365 elementos, mejor que declarar 365 variables. Cada elemento de una matriz contiene un valor. La siguiente instrucción declara la variable matriz curGastos con 365 elementos. Si no se especifica lo contrario, el índice de una matriz comienza por el cero, con lo que el límite superior de la matriz es 364 en vez de 365.

Dim curGastos(364) As Currency

Para dar valor a un elemento individual, es preciso especificar el índice del elemento. El siguiente ejemplo asigna un valor inicial de 20 a todos los elementos de la matriz.

Sub LlenarMatriz()
    Dim curGastos(364) As Currency
    Dim intI As Integer
    For intI = 0 to 364
        curGastos(intI) = 20
    Next
End Sub

Cambiar el límite inferior

Se puede usar la instrucción Option Base al principio de un módulo para cambiar el índice predefinido del primer elemento del 0 al 1. En el siguiente ejemplo, la instrucción Option Base cambia el índice del primer elemento y la instrucción Dim declara la variable matriz curGastos con 365 elementos.

Option Base 1
Dim curGastos(365) As Currency

También se puede fijar de forma explícita el límite inferior de una matriz mediante el uso de la cláusula To tal y como muestra el siguiente ejemplo.

Dim curGastos(1 To 365) As Currency
Dim strDiaSemana(7 To 13) As String

Almacenar valores Variant en matrices

Hay dos formas de crear matrices de valores Variant. Una forma consiste en declarar una matriz como del tipo de datos Variant, tal y como muestra el siguiente ejemplo:

Dim varDatos(3) As Variant
varDatos(0) = "Cristina Martínez"
varDatos(1) = "C/ Don Ramón de la Cruz, 73"
varDatos(2) = 38
varDatos(3) = Format("06-09-1952", "Fecha general")

La otra forma consiste en asignar la matriz que devuelve la función Matriz a una variable Variant, tal y como muestra el siguiente ejemplo.

Dim varDatos As Variant
varDatos = Array("Cristina Martínez", "C/Don Ramón de la Cruz, 73", 38, _
Format("06-09-1952", "Fecha general"))

Los elementos de una matriz de valores Variant se identifican mediante su índice, sea cual sea la técnica que se haya usado para crear la matriz. Por ejemplo, la siguiente instrucción podría añadirse a cualquiera de los ejemplos anteriores.

MsgBox "Los datos de " & varDatos(0) & " se han guardado."

Utilizar matrices con múltiples dimensiones

En Visual Basic se pueden declarar matrices con hasta 60 dimensiones. Por ejemplo, la siguiente instrucción declara una matriz de dos dimensiones, de 5 por 10.

Dim sngMulti(1 To 5, 1 To 10) As Single

Si considera a la matriz como una tabla de dos entradas, el primer argumento representaría a las filas y el segundo a las columnas.

Utilice instrucciones For...Next para operar con matrices de dimensiones múltiples. El siguiente procedimiento llena una matriz bidimensional con valores Single.

Sub LlenaMatrizMulti()
    Dim intI As Integer, intJ As Integer
    Dim sngMulti(1 To 5, 1 To 10) As Single
    
    ' Llena matriz con valores.
    For intI = 1 To 5
        For intJ = 1 To 10
            sngMulti(intI, intJ) = intI * intJ
            Debug.Print sngMulti(intI, intJ)
        Next intJ
    Next intI
End Sub