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
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"
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
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