TOP

VBA-Lección 6.2. Tipos de datos (Variables)

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

matriz unidimensional

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:

'Asignación de valores para celdas coloreadas array2(0, 0) = "Valor en celda roja" array2(4, 1) = "Valor en celda verde" array2(2, 3) = "Valor en celda azul"

constantes

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

Creando tu propio tipo de variable

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