En la lección anterior, vimos variables en las que se pueden escribir ciertos datos, pero no pueden contener más de un valor. Para sortear esta limitación, existen arreglos en VBA que pueden almacenar múltiples valores.
Aquí hay algunos ejemplos de diferentes arreglos:
Sub variables() 'Un ejemplo de declaración de una variable Dim var1 As String 'Un ejemplo de declaración de una matriz unidimensional Dim array1(4) As String 'Un ejemplo de declaración de una matriz bidimensional Dim array2(4, 3) As String 'Un ejemplo de declaración de una matriz tridimensional Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
Una matriz unidimensional se puede considerar como una tabla que consta de una columna. La matriz array1(4) es una matriz unidimensional que puede contener 5 registros. ¿Por qué 5? Porque los números de registros en la matriz comienzan desde cero (0, 1, 2, 3, 4).
Ahora consideremos una matriz bidimensional:
Dim array2(4, 3) As String
Ya se verá como una tabla con 5 filas y 4 columnas:
Al igual que las variables, las constantes se pueden usar para almacenar valores, pero la diferencia es que los valores no pueden cambiar. Podemos agregar una constante para evitar repetir el valor, por ejemplo, 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Esto hace que el código sea más fácil de entender y editar. También te permite cambiar el valor de la constante de forma muy sencilla:
Sub const_example() 'Declarar una constante + asignar un valor Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Alcance de las variables
Si la variable se declara al comienzo del procedimiento (Sub), solo se puede usar en este procedimiento. El valor de la variable ya no estará disponible después de que se ejecute el procedimiento.
Sub procedure1() Dim var1 As Integer '=> La variable es válida solo en este procedimiento End Sub Sub procedure2() '=> var1 no se puede usar aquí End Sub
Para usar una variable en cualquier procedimiento de módulo, solo necesitamos declararla al comienzo del módulo. Y si declara una variable como esta, estará disponible hasta que se cierre el libro de trabajo.
Dim var1 As Integer Sub procedure1() '=> var1 se puede usar aquí End Sub Sub procedure2() '=> var1 también se puede usar aquí End Sub
Si desea utilizar la misma variable en todos los módulos del libro, solo debe reemplazar Dim con Global en el ejemplo anterior:
Global var1 As Integer
Para usar una variable después de ejecutar el procedimiento en el que apareció, reemplace Dim con Static:
Sub procedure1() Static var1 As Integer End Sub
Para usar los valores de todas las variables en el procedimiento, agregue Static antes de Sub:
Static Sub procedure1() Dim var1 As Integer End Sub
Aquí hay un ejemplo rápido de cómo puede crear su propio tipo:
'Crear un tipo de variable Type customers last_name As String first_name As String End Type Sub variables() 'Declaración de una variable Dim cust1 As customers 'Asignando un valor a cust1 cust1.last_name = "Smith" cust1.first_name = "John" 'Ejemplo de uso MsgBox cust1.last_name & " " & cust1.first_name End Sub