No VBA, e na programação em geral, variável é um recurso para guardar informações.
Variavel = "Uma informação"
Variáveis são utilizadas para armazenar dados, como por exemplo números ou textos.
Antes de se utilizar de uma variável é recomendável declará-la, indicado seu nome (e seu tipo de dados, que será visto adiante).
A declaração é feita através da palavra Dim, como no exemplo abaixo:
Dim VarTexto
Dim VarNumero
VarTexto = "Eu fui declarada previamente"
O nome da variável, que vem após a palavra Dim, deve respeitar os seguintes critérios:
Ao nomear variáveis dê preferência a nomes específicos como DescontoVendas ao invés de nomes genéricos como Var1. Isto facilitará a compreensão do código posteriormente.
Não inicie variáveis com números!
Dim 1variavel 'Esta declaração está errada!
Após definir o nome da variável, é recomendável declarar também o seu tipo de dado. Isto informa ao VBA que tipo de informação esperar de cada variável, evitando erros com associações indevidas e possibilitando otimizar a alocação da memória do computador.
Dim VarTexto As String 'String é um tipo de dado para texto
Dim VarNumero As Integer 'Integer é um tipo de dado para números inteiros
Por padrão no VBA não é obrigatório declarar variáveis, porém isso ajuda na performance e na precisão dos resultados.
Na tabela, os principais tipos de variáveis, suas entradas, as respectivas alocações de bytes, e seus intervalos de abrangência:
Tipo de Dado | Entrada de Dados | Alocação de Bytes | Intervalo Permitido |
---|---|---|---|
Byte | Numérico | 1 | 0 a 255 |
Integer | Numérico | 2 | -32.768 a 32.767 |
Long | Numérico | 4 | -2.147.483.648 a 2.147.483.647 |
Single | Numérico | 4 | +/- 3.402823E+28 |
Double | Numérico | 8 | +/-1.79769313486232E+308 |
Currency | Numérico | 8 | +/-922.337.203.685.477,5808 |
Decimal | Numérico | 12 | +/-79.228.162.514.264.337.593.950.335 |
String | Texto | 1 | 1 por caractere |
Date | Data | 8 | 1° de Janeiro de 100 a de 31 de Dezembro de 9999 |
Boolean | Binário | 2 | True ou False |
Object | Objeto | 4 | Qualquer objeto |
Variant | Qualquer | 16 | Qualquer dado |
Variáveis com tipo não declarado serão classificadas como Variant. Esta classificação de dados exige mais do computador que executará o código.
É um bom hábito declarar de forma precisa o tipo de dado das variáveis, não só por otimização, mas também por ser uma prática necessária em algumas outras linguagens de programação.
O tipo Decimal não pode ser declarado, apesar de existir. É possível acessá-lo apenas através de uma associação ou conversão (com CDec, na qual será visto mais adiante).
Depois de declarar uma variável é possível associar um valor a ela.
No VBA os valores são atribuídos da direita para a esquerda($\leftarrow$), utilizando o sinal de igual (=).
VarTexto = "SuperExcelVBA"
VarNumero = 10
MsgBox VarTexto
MsgBox VarNumero
Uma forma de se obter os valores a partir do usuário é através do Inputbox.
VarNome = Inputbox("Qual seu nome?") Msgbox VarNome
Experimente executar o código abaixo para ver o que acontece!
Sub experimentar() VarNome = Inputbox("Qual seu nome?") Msgbox VarNome End Sub
Com o mesmo conceito de associação (da esquerda para direita), podemos realizar operações. A execução do código sempre ocorre de cima para baixo.
VarNumero = 5
VarNumero = VarNumero + 7
Msgbox VarNumero
O resultado depois da execução acima de VarNumero é 12.
A programação VBA não deve ser confundida com equações matemáticas. O exemplo acima seria equivalente a VarNumero $\leftarrow$ 7 + VarNumero. Como previamente VarNumero tinha o valor 5 associado a ela, a segunda atribuição de VarNumero seria equivalente a VarNumero = 7 + 5, resultando em 12.
Ao declarar uma variável de um tipo de dados, muitas vezes será possível associar conteúdo de outro tipo a ela. Contudo, o VBA tentará fazer a conversão para o tipo declarado (E.g. um número como texto). Caso ele não consiga, retornará um erro.
Dim VarTexto As String
VarTexto = 1
VarTexto acima será um texto (e não será possível executar contas matemáticas com ela).
Dim VarNumero As Integer
VarNumero = "Dois"
O VBA tentará associar "Dois" a VarNumero realizando a conversão automática, porém retornará um erro:
Para que a conversão funcionasse a assossiação deveria ser feita com "2" (ao invés de "Dois").
Ao depurar o código, experimente utilizar a Janela de Variáveis Locais, na qual estarão explícitos os tipos de dados.
As variáveis booleanas aceitam apenas os valores True e False. Porém, em alguns casos estes termos são exibidos de forma traduzida para a língua do sistema:
Apesar do MsgBox exibir "Verdadeiro" ou "Falso", os valores continuam sendo True ou False.
Exercício Sugerido
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE