Variáveis
Variáveis guardam dados temporários na memória, e podem ter seus valores enchergados dentro do procedimento em que ela foi criada ou em todos os procedimentos. A variável para poder ser bem ser utilizada, é necessário que saibamos utilizar o seu tipo adequado. Cada tipo ocupa uma determinada quantidade de bytes na memória, e o uso indevido poderá sobrecagar a mesma.
Para atribuirmos um determinado valor a uma variável, temos que indicar o nome da mesma.
Tipos de Variáveis
Tipo |
Espaço |
Faixa |
---|---|---|
Integer (Inteiro) |
2 bytes |
-32.768 até 32.767 |
Long (Inteiro Longo) |
4 bytes |
-2.147.483.648 a 2.147.483.648 |
Single (Ponto Flutuante simples) |
4 bytes |
1.401298E45 a 3.402823E38 |
Double (Ponto Flutuante duplo) | 8 bytes | 4.940656458D-324 a 1.79769313D308 |
Currency (Moeda) | 8 bytes | -92233720368545477.5808 a 922337203685477.5807 |
String (Texto) | 1 byte p/caractere | 0 a 65.500 caracteres |
Boolean (True ou False ) | 2 bytes | |
Byte | 1 byte | Armazena números entre 0 e 255 |
Date (Data e Hora) | 8 bytes | |
Object | 4 bytes | Utilizada para fazer referência a um objeto no Excel |
Variant | 16 bytes | Armazena qualquer tipo de dados |
Para utilizarmos um dos tipos acima, existe o comando Dim, cuja definição é: Dimensiona ou reserva um espaço na memória. Não é obrigatória a declaração da variável, porém ela assumirá como Variant, ocupando um espaço excessivo dependendo do que ela irá fazer.
Exemplo de Declaração de Variáveis
Forma 1:
Dim Numero As Integer
Dim: Comando que reserva espaço na memória
Número: Nome da variável
As: Palavra chave utilizada para separar o nome da variável do tipo de dados
Integer: Tipo da variável, neste caso será para números inteiros.
Forma 2:
Dim Numero1 As Integer, Numero2 As Integer, Total As Single
Vantagens de se utilizar variáveis
Declaração obrigatória da variável
Para que a declaração da variável seja obrigatória, ou se você declarar por exemplo a variável com o nome Código (observe o acento no primeiro o) e utiliza-la como Codigo, será exibido mensagem de erro (Variável não definida). Para isso vá até o Menu Ferramentas / Opções. Selecione a Guia Editor. Marque a opção Requerer declaração de variável.
Array
As variáveis tipo array representa um conjunto de variáveis com o mesmo nome e com o mesmo tipo. Elas podem ser: Uni-Dimensional ou Multi-Dimensionais.
Um array uni-dimensional é constituído por uma única lista de elementos indexáveis. Esta lista tem um elemento inicial e um outro final sendo que a cada elemento da lista corresponde um único índice, tradução do lugar que ocupa na lista, que o identifica.
Um array bi-dimensional é um pouco mais complexo e é constituído por um conjunto de listas do mesmo comprimento, este formato é normalmente conhecido como array ou matriz. É portanto constituída por linhas e colunas e cada elemento é identificado por um índice composto pela intercecção dos números da linha e da coluna.
Declaração de um array Uni-Dimensional
Dim Numero(10) As Integer
Número é o nome do array
10 é o número de elementos que o array pode armazenar. Exemplo:
Numero(1) = 20 --> Estamos atribuindo o valor 20 para o array Numero na posição 1.
Declaração de um array Multi-Dimensional
Dim Tabela(5,5) As String
Tabela é o nome da variável, os números entre parênteses indicam que a tabela irá ter 5 linhas e 5 colunas, podendo assim armazenar 25 elementos do tipo String. Uma planilha do Excel é formada por uma array Multi-Dimensional, como uma tabela ou arquivo de dados.
Domínio das variáveis e constantes
O que é domínio?
Scopo ou domínio de um elemento refere-se à área na aplicação na qual esse mesmo elemento pode ser acessado e utilizado, ou seja onde é que o elemento é reconhecido.
Domínio das variáveis
É onde a variável foi declarada e mantida seu valor até que saia deste procedimento.
Existem 3 níveis de domínio para as variáveis
As declarações de tipos User Defined que são escritas no Declarations do módulo têm domínio de Projecto.
Âmbito do Procedimento
Estas variáveis são declaradas no corpo do procedimento com o a instrução Dim.
São variáveis criadas quando da execução do procedimento e automaticamente destruídas quando o procedimento termina, sendo que só são reconhecidas dentro do procedimento que as declarou. Assim sendo, qualquer tentativa realizada por um procedimento no sentido de trabalhar com variáveis definidas no corpo de um outro procedimento não terá êxito.
Sub Ambito_Procedimento()
Dim Var_1 As Integer
Var_1 = InputBox ("Informe um número Inteiro")
MsgBox "Foi este o número informado: " & Var_1
Ambito_Procedimento_2
End Sub
Sub Ambito_Procedimento_2()
MsgBox "Foi este o número que introduziu: " & Var_1
End Sub
A execução destas rotinas resultará no seguinte:
A primeira mensagem (MsgBox no Procedimento Ambito_Procedimento) exibirá o número informado pelo utilizador que fora armazenado na variável Var_1.
A segunda mensagem, oriunda da instrução MsgBox do Procedimento Ambito_Procedimento_2 não exibirá o valor informado, porque a variável Var_1 nele referida é considerada como uma variável interna do processo, e portanto criada dentro do procedimento Ambito_Procedimento_2. Como tal, embora possua o mesmo nome que a variável da rotina Ambito_Procedimento_1 não existe qualquer ligação entre elas, são duas variáveis distintas.
Neste caso se se pretendesse que o valor da primeira variável fosse reconhecido no procedimento chamado, ter-se-ia de o passar por parâmetro.
Âmbito do Módulo
Uma variável como Âmbito do Módulo pode ser acessada por todas as rotinas existentes no módulo onde a variável é declarada.
Para declarar uma variável do nível modular, deverá declará-la com a palavra chave Dim na seção Declarations do respectivo módulo VBA. Neste caso qualquer variável aí declarada será considerada de nível modular por padrão, para tornar esse fato mais explicito poder-se-á utilizar a palavra chave Private na declaração:
Exemplo:
Private Var_2 As String
Exemplo:
Dim Var_1 As Integer ' ou Private Var_1 As Integer
Sub Ambito_Modulo()
Var_1 = InputBox (“Introduza um número Inteiro”)
Ambito_Modulo_2
End Sub
Sub Ambito_Modulo_2()
MsgBox "Foi este o número que introduziu: " & Var_1
End Sub
Neste caso como a variável é reconhecida no módulo por qualquer rotina nele existente, desde que seja referida sempre pelo mesmo nome, o procedimento Ambito_Modulo_2 irá exibir o valor informado pelo utilizador no procedimento Ambito_Modulo.
Âmbito do Projeto
As variáveis assim definidas têm o âmbito correspondente a todo o projeto, isto é podem ser acessadas e alteradas em todos e quaisquer módulos. Para declarar variáveis deste tipo deverá fazê-lo na seção Declarations de qualquer módulo, para tal deverá utilizar a palavra chave Public.
Exemplo:
No Módulo1 tem-se:
Public Var_1 As Integer
Sub Ambito_Projeto()
Var_1 = InputBox ("Introduza um número Inteiro")
Ambito_Projecto_2
End Sub
No Módulo2 tem-se :
Sub Ambito_Projeto _2()
MsgBox "Foi este o número que introduziu: " & Var_1
End Sub
A execução do procedimento Ambito_Projeto no Módulo1 mandou executar o procedimento Ambito_Projeto do Módulo2, e o valor atribuído à variável Var_1 foi acessado posteriormente noutro procedimento de outro módulo, dado tratar-se de uma variável global.