Variáveis VBA


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"

Nomeando uma Variável

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!

Tipos de Dados

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).


Exibir Tópico Avançado

Atribuindo Valores - Inputbox

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.


Conversão Automática de Dados

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:

Tipos Incompatíveis

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.


Tradução na Exibição

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:

Teste Booleano

Apesar do MsgBox exibir "Verdadeiro" ou "Falso", os valores continuam sendo True ou False.



Fixando o Aprendizado

Exercício Sugerido

Conversor Métrico


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.

© 2019 SuperExcelVBA | SOBRE

Protected by Copyscape