TOP

VBA-Lição 6.2. Tipos de dados (Variables)

YouLibreCalc for Excel logo

Na lição anterior, vimos variáveis nas quais determinados dados podem ser escritos, mas não podem conter mais de um valor. Para contornar essa limitação, existem arrays em VBA que podem armazenar vários valores.


Aqui estão alguns exemplos de matrizes diferentes:

Sub variables()
    'Um exemplo de declaração de uma variável
    Dim var1 As String
    
    'Um exemplo de declaração de um array unidimensional
    Dim array1(4) As String
    
    'Um exemplo de declaração de um array bidimensional
    Dim array2(4, 3) As String
    
    'Um exemplo de declaração de um array tridimensional
    Dim array3(4, 3, 2) As String
End Sub

Matriz unidimensional

Dim array1(4) As String

Uma matriz unidimensional pode ser considerada uma tabela que consiste em uma coluna. O array array1(4) é um array unidimensional que pode conter 5 registros. Por que 5? Porque os números de registros na matriz começam em zero (0, 1, 2, 3, 4).

Agora vamos considerar uma matriz bidimensional:

Dim array2(4, 3) As String

Já vai parecer uma tabela com 5 linhas e 4 colunas:

'Atribuindo valores para células coloridas
array2(0, 0) = "Valor na célula vermelha"
array2(4, 1) = "Valor na célula verde"
array2(2, 3) = "O valor na célula azul"

Constantes

Assim como as variáveis, as constantes podem ser usadas para armazenar valores, mas a diferença é que os valores não podem mudar. Podemos adicionar uma constante para evitar a repetição do valor, por exemplo 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

Isso torna o código mais fácil de entender e editar. Também permite alterar o valor da constante de forma bastante simples:

Sub const_example()
   'Declarando uma constante + atribuindo um 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

Escopo das variáveis

Se uma variável for declarada no início de um procedimento (Sub), ela poderá ser usada somente neste procedimento. O valor da variável não estará mais disponível após a execução do procedimento.

Sub procedure1()
   Dim var1 As Integer
   '=> A variável é válida apenas neste procedimento
End Sub

Sub procedure2()
   '=> var1 não pode ser usado aqui
End Sub

Para usar uma variável em qualquer procedimento de módulo, precisamos apenas declará-la logo no início do módulo. E se você declarar uma variável como esta, ela estará disponível até que a pasta de trabalho seja fechada.

Dim var1 As Integer

Sub procedure1()
   '=> var1 pode ser usado aqui
End Sub

Sub procedure2()
   '=> var1 também pode ser usado aqui
End Sub

Se quiser usar a mesma variável em todos os módulos do livro, você só deve substituir Dim por Global no exemplo anterior:

Global var1 As Integer

Para utilizar uma variável após executar o procedimento em que ela aparece, substitua Dim por Static:

Sub procedure1()
    Static var1 As Integer
End Sub

Para usar os valores de todas as variáveis no procedimento, adicione Static antes de Sub:

Static Sub procedure1()
    Dim var1 As Integer
End Sub

Criando seu próprio tipo de variável

Aqui está um exemplo rápido de como você pode criar seu próprio tipo:

 'Criando um tipo de variável
 Type customers
    last_name As String
    first_name As String
 End Type
   
 Sub variables()
    'Declaração de uma variável
    Dim cust1 As customers
   
    'Atribuindo um valor a cust1
    cust1.last_name = "Smith"
    cust1.first_name = "John"
   
    'Exemplo de uso
    MsgBox cust1.last_name & " " & cust1.first_name
 End Sub