Variáveis no VBA Excel – Guia Completo

Quer aprender o que são variáveis no VBA e como declará-las? Então você está no lugar certo!

As variáveis ​​são usadas em quase todas as linguagem de programação e no VBA não é diferente. Neste artigo você irá aprender o que são variáveis e como usá-las em seus projetos de VBA no Excel. Confira!

Índice de conteúdo

O que são Variáveis VBA

É interessante pensar nas variáveis ​​como contêineres que contêm informações. Seu único objetivo é rotular e armazenar dados na memória. Esses dados podem ser usados ​​em todo o seu programa.

Para criar uma variável no VBA, é necessário seguir as seguintes regras:

  • Deve ter menos de 255 caracteres
  • Nenhum espaçamento é permitido
  • Não deve começar com um número
  • Ponto final também não é permitido
  • O VBA não faz distinção entre maiúsculo e minúsculo. Portanto, ‘Valor’ e ‘valor’ são iguais para o VBA.
  • O VBA possui alguns nomes reservados. Por exemplo, você não pode usar a palavra ‘Next’ como um nome de variável, pois é um nome reservado para o loop For Next.

A grande vantagem de usar uma variável é que você pode alterar o valor da variável no código e continuar a usá-lo no código. Por exemplo, abaixo está um código que soma os 5 primeiros números positivos e exibe o resultado em uma caixa de mensagem:

Sub SomaCincoPrimeiros()
Dim i As Integer
Dim k as Integer
For i = 1 To 5
k = k + i
Next i
MsgBox k
End Sub

Neste exemplos temos duas variáveis que são i e k. Veja que a utilidade de uma variável está no fato de que ela pode ser alterada enquanto seu código está em andamento.

Tipos de Dados de Variáveis no VBA

Para fazer o melhor uso das variáveis, é uma boa prática especificar o tipo de dados da variável. O tipo de dado que você atribui a uma variável depende do tipo de dado que você deseja que essa variável armazene.

A razão disso é que o computador não pode diferenciar entre os números (1,2,3…) e as sequências de caracteres (a, b, c,…). Portanto, para fazer essa diferenciação, usamos tipos de dados.

A tabela abaixo mostra todos os tipos de dados disponíveis que você pode usar no Excel VBA:

Tipo de Dados Bytes Usados Faixa de Valores
Byte 1 byte 0 a 255
Boolean 2 bytes Verdeiro ou Falso
Integer 2 bytes -32,768 to 32,767
Long (long integer) 4 bytes -2,147,483,648 to 2,147,483,647
Single 4 bytes -3.402823E38 a -1.401298E-45 para valore negativos; 1.401298E-45a 3.402823E38 para valores positivos.
Double 8 bytes -1.79769313486231E308 a -4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos.
Currency 8 bytes -922,337,203,685,477.5808 a 922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 sem ponto decimal ;+/-7.9228162514264337593543950335 com 28 casas à direita do decimal
Date 8 bytes 1 de janeiro de 100 a 31 de dezembro de 9999
Object 4 bytes Qualquer referência de objeto
String (variable-length) 10 bytes + comprimento da string 0 a aproximadamente 2 bilhões
String (fixed-length) Comprimento da corda 1 a aproximadamente 65.400
Variant (with numbers) 16 bytes Qualquer valor numérico até o intervalo de um Double
Variant (with characters) 22 bytes + Comprimento da corda Mesmo intervalo que para String de comprimento variável
User-defined Varia O intervalo de cada elemento é igual ao intervalo de seu tipo de dados.

Observe na tabela acima que quando especificamos um tipo de dados para uma variável em um código, estamos informando ao VBA como armazenar essa variável e o quanto de espaço alocar para ela.

Por exemplo, se você precisar usar uma variável que armazene os números de meses do ano, poderá usar o tipo de dados Byte (que pode armazenar valores de 0 a 255). Como a quantidade de meses não será superior a 12, isso funcionará bem e também reservará menos memória para essa variável.

Por outro lado, se você precisar de uma variável para armazenar os números de linhas no Excel, precisará usar um tipo de dados que possa acomodar um número de até 1048756. Neste caso, é melhor usar o tipo de dados Long.


Como declarar variáveis no VBA

Como uma boa prática de codificação, você deve declarar o tipo de dado de variáveis ​​(ou constantes) ao escrever o código. Isso garante que o VBA aloque apenas a memória especificada para a variável e isso poderá acelerar o código.

Abaixo está um exemplo de declaração de diferentes tipos de dados para diferentes variáveis no VBA.

Sub DeclarandoVariaveis()
Dim Y As Integer
Dim Email As String
Dim Nome As String
Dim ContaLinhas As Long
Dim DataAtual As Date
End Sub

Observe que para declarar um tipo de dados, você precisa usar a instrução Dim (que é a abreviação de Dimension).

Por exemplo, em ‘Dim Y As Integer‘, declaramos a variável Y como o tipo de dados Integer. Isso significa que o VBA saberá que o X pode conter apenas o tipo de dados inteiro.

E se tentarmos atribuir um valor que não seja um número inteiro, iremos receber um erro. Veja o exemplo abaixo:

Como declarar variáveis no VBA

 

Importante: Também pode optar por não declarar o tipo de dados da variável. Neste caso, o VBA considera automaticamente a variável do tipo de dado Variant. Um tipo de dado variante pode acomodar qualquer tipo de dado. Embora isso possa parecer conveniente, não é uma prática recomendada usar tipos de dados variantes, pois eles tendem a ocuparem mais memória e podem tornar seu código VBA mais lento.

Escopo de Variáveis

Até aqui nós vimos como declarar uma variável e atribuir tipos de dados a ela. Agora abordaremos o escopo das variáveis ​​e como você pode declarar uma variável para ser usada apenas em uma sub-rotina, em um módulo inteiro ou em todos os módulos.

Variáveis Locais (Dentro de uma única sub-rotina)

Quando declaramos uma variável em uma sub-rotina, essa variável poderá ser usada apenas para essa sub-rotina. Isso significa que não podemos usá-la em outras sub-rotinas no módulo e assim que a sub-rotina termina, a variável é excluída e a memória usada por ela é liberada.

Veja o exemplo abaixo onde as variáveis ​​são declaradas na sub-rotina e serão excluídas quando essa sub-rotina terminar.

Variáveis Locais

Variáveis do nível do módulo (Dentro de um módulo)

Se você precisa que uma variável esteja disponível para todos os procedimentos em um módulo, declare-a na parte superior do módulo (e não em nenhuma sub-rotina). Veja o exemplo abaixo:

Variáveis do nível do módulo

Após declarar a variável na parte superior do módulo, você pode usá-la em todos os procedimentos desse módulo.

Variável Dentro de um módulo

Variáveis públicas (Em todos os módulos)

Por fim, se você precisa que uma variável esteja disponível em toda a pasta de trabalho, declare-a com a Public (em vez de Dim). Veja o exemplo abaixo onde na parte superior do módulo estamos declarando a variável ‘TaxaComissao’ que ficará acessível a todos os módulos da pasta de trabalho.

Variáveis públicas

Para funcionar corretamente, a variável publica deve ser declarada usando a palavra-chave Public em qualquer um dos módulos (na parte superior antes de qualquer procedimento).

Variáveis que retém o valor (Estáticas)

Anteriormente vimos que quando usamos variáveis locais, assim que o procedimento termina, a variável perde seu valor e é excluída da memória do VBA. No entanto, se você precisa que a variável retenha o valor, basta usar a palavra-chave Static.

No exemplo abaixo quando eu executamos o código várias vezes, o VBA irá mostra o valor 10 todas as vezes.

variáveis estáticas no Excel

Por outro lado, se usarmos a palavra-chave Static em vez de Dim, e executar o código várias vezes, o VBA continuará mostrando valores em incrementos de 10. Isso acontece pois a variável ‘J’ estará retendo o seu valor e o usa no cálculo novamente.

Variável que retém o valor no Excel


Constantes no VBA

Conforme vimos, as variáveis mudam durante a execução do código. Por outro lado, se você deseja ter valores fixos, poderá usar constantes. As constantes permitem atribuir um valor a uma sequência nomeada que você pode usar em seu código.

A grande vantagem de usar uma constante é que facilita a criação e a compreensão do código, além de permitir o controle de todos os valores fixos em um único local.

Por exemplo, se você estiver calculando comissões e a taxa de comissão for 20%, poderá criar uma constante (TaxaComissao) e atribuir o valor 0,2 a ela.

Futuramente se a taxa de comissão mudar, você só precisará fazer a alteração em um local, em vez de alterá-la manualmente no código em qualquer lugar.

Para melhor compreensão, veja o exemplo abaixo no qual atribuímos um valor à constante:

Sub CalcularComissao()
Dim ValorComissao As Double
Const TaxaComissao As Double = 0.2
ValorComissao = Range(“A1”) * TaxaComissao
MsgBox ValorComissao
End Sub

A linha abaixo mostra o momento em que a contante é declarada

Const TaxaComissao As Double = 0.2

Note que ao declarar constantes, você precisa começar com a palavra-chave “Const“, seguida pelo nome da constante. Além disso, se você não declarar o tipo de dados, ela será considerada um tipo de dado variante.

Assim como as variáveis, as constantes também podem ter escopo com base em onde e como elas são declaradas. Ou seja:

1. Dentro de uma única sub-rotina (constantes locais): Ficam disponíveis apenas na sub-rotina / procedimento no qual elas são declaradas. À medida que o procedimento termina, essas constantes são excluídas da memória do sistema.

2. Dentro de um módulo (constantes no nível do módulo): São declaradas na parte superior do módulo (antes de qualquer procedimento). Neste caso, ficam disponíveis para todos os procedimentos no módulo.

3. Em todos os módulos (constantes públicas): São declarados usando a palavra-chave ‘Public’, na parte superior de qualquer módulo (antes de qualquer procedimento). Eles estão disponíveis para todos os procedimentos em todos os módulos.

Confira também as seguintes dicas de Excel VBA:

E então, o que achou da dica sobre variáveis no VBA? Deixe seu comentário abaixo e continue acompanhando mais dica sobre VBA no Excel aqui em nosso site!