Tipos de variáveis no VBA

Nesta parte do curso de VBA iremos falar sobre os tipos de variáveis presentes no VBA, assim como fazer para declarar uma variável, os erros ao utilizar de forma incorreta uma variável e algumas boas práticas.

O que é uma variável no VBA?

Variável é uma forma de armazenar um valor, aonde esse valor pode ser utilizado posteriormente para realizar cálculos ou alguma outra operação.

Declarar uma variável além de ser uma boa prática, também serve para reservar um espaço em memória que será utilizado para guardar o valor que será armazenado naquela variável.

Caso o computador não saiba qual o tamanho de memória que ele deve reservar, ele irá reservar o maior espaço possível em memória, e isso não é muito eficiente.

Por que utilizar uma variável?

Variáveis servem para limpar um pouco o seu código e deixá-lo mais organizado. Um exemplo é armazenar o resultado de uma operação em uma variável e toda vez que quiser utilizar o resultado da operação basta chamar a variável, ao invés de ter que realizar a operação novamente.

Isso deixa o seu código mais fácil de ler e também lhe poupa trabalho de ter que ficar escrevendo a mesma operação toda vez.

Como declarar uma variável?

Declarar uma variável antes de utilizá-la, não é obrigatório. A não ser que o “Option Explicit” esteja presente no seu código. Iremos explicar o que é isso, mais para frente neste tutorial.

Caso queira declarar uma variável, ela deve ser primeiramente declarada e depois ser usada.

O formato para declarar uma variável é o seguinte:

  1. Dim nome_da_variavel as tipo_da_variavel
  2. Dim nome_da_variavel

Apesar de não ser obrigatório declarar o tipo da variável, essa é uma boa prática, já que assim o computador irá saber exatamente qual o tamanho necessário de memória, que será utilizado.

Caso contrário, ele irá reservar o maior tamanho possível de memória disponível.

Se o tipo da variável não for informado, será alocado o maior espaço possível, já que o VBA irá considerar que essa variável é do tipo Variant.

O VBA por padrão considera que variáveis sem tipo, serão consideradas como Variant.

Não se preocupe! Iremos falar logo abaixo o que é Variant.

Ao declarar o tipo da variável, você está informando quais valores a variável poderá aceitar.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

Olha o que acontece quando informamos  que uma variável é de um tipo, porém atribuímos a ela um valor diferente do tipo dela.

essa imagem mostra o que acontece em um código do VBA quando atribuímos um valor a uma variável, aonde esse valor é diferente do valor que a variável aceita

Sub variaveis()
Dim var As Integer
var = 1
MsgBox "O valor da variável é = " & var

var = "Excel pra Ontem"
End Sub

Neste exemplo atribuímos o tipo Integer(iremos explicar logo abaixo o que é isso!) para a variável var. Ou seja o único tipo de valor que o “var” irá aceitar será Integer.

Logo em seguida atribuímos o valor para a variável “var” e depois mostramos o valor em uma janela.

Até aqui tudo funcionando muito bem, agora quando vamos tentar atribuir um texto para a variável, o VBA para de executar o código e mostra uma janela com o tipo de erro que fez ele parar.

Neste caso o erro é “Tipos incompatíveis“. Que basicamente quer dizer que o tipo da variável é incompatível com o valor que está sendo armazenado nela.

Se você estiver usando uma versão em inglês, o erro que irá aparecer para você será “Type mismatch

Declarar mais de 1 variável

Para declarar mais de uma variável é bem fácil. Na mesma linha que a primeira variável foi declarada, basta colocar uma vírgula(,) e declarar a próxima variável, sem ser necessário escrever a palavra Dim novamente.

Dim nome_da_variavel as tipo_da_variavel, nome_da_variavel_2

Tipos de variáveis no VBA

Vamos abrir a seguir os tipos mais comuns de variáveis.

  • Boolean = valores True ou False
  • Byte = valores de 0 a 255
  • Currency = valores de -922.337.203.685.477,5808 até 922.337.203.685.477,5807
  • Date = datas entre 1/Janeiro/100 até 31/Dezembro/9999
  • Double = números entre -1,79769313486231E308 até -4,94065645841247E-324, e 4,94065645841247E-324 até 1,79769313486232E308
  • Integer = números inteiros de -32.768 até 32.767
  • Long = números inteiros de -2.147.483.648 até 2.147.483.647
  • String = texto com até 2 bilhões de caractéres.
  • Variant = tipo genérico. Se for utilizado caractéres, a variável irá aceitar até 2 bilhões de caracteres. Caso seja utilizado valores numéricos, a variável irá aceitar valores entre  entre -1,79769313486231E308 até -4,94065645841247E-324, e 4,94065645841247E-324 até 1,79769313486232E308. Quando se declara a variável somente utilizando o Dim (Dim nome_da_variável), o VBA irá considerar que esta variável é do tipo Variant.

Logo no começo demos um exemplo do que acontece quando declaramos uma variável e atribuímos a ela um valor diferente do qual ela foi declarado. Agora iremos dar um exemplo do que acontece quando definimos um tipo de variável e alocamos valores do tipo que ela aceita porém com valores maiores.

imagem que mostra o que acontece quando definimos um tipo de variável e alocamos valores do tipo que ela aceita porém com valores maiores.

Sub variaveis()
Dim var As Integer
var = 32767
MsgBox "O valor da variável é = " & var

var = 32768
End Sub

Veja que a variável var é do tipo Integer e com isso o valor máximo que ela aceita é 32.767. Ao atribuirmos um valor maior que esse, o VBA para de rodar.

Caso no seu programa, você necessite de um valor maior que 32.767, será necessário atribuir um outro tipo para a variável que não seja Integer.

O que é Option Explicit?

Por padrão, não é obrigatório declarar o tipo da variável. Porém, por boa prática e segurança é recomendado declarar o tipo de variável.

Imagina declarar uma variável e colocar uma Integer nela, e no meio do código você utilizar essa mesma variável, como se fosse uma String.

Dependendo de como a sua Macro estiver escrita, pode ser que ela pare de funcionar e mostre uma mensagem de erro, ou mesmo realize uma operação inesperada.

Por isso a boa prática e segurança, é declarar uma variável com o seu tipo.

Para tornar obrigatório declarar o tipo da variável, basta incluir no início do módulo o seguinte código:

Option Explicit

Exemplo sem Option Explicit?

Sub variaveis()

var = 1
MsgBox "O valor da variável é = " & var

var = "Excel pra Ontem"
MsgBox "O valor da variável é = " & var
End Sub
Sub variaveis()
Dim var
var = 1
MsgBox "O valor da variável é = " & var

var = "Excel pra Ontem"
MsgBox "O valor da variável é = " & var
End Sub

Note que nos dois primeiros códigos a Macro rodou sem erro. Agora iremos mostrar um dos problemas ao utilizar a mesma variável porém armazenar tipos diferentes.

A imagem mostra um dos problemas ao utilizar a mesma variável porém armazenar tipos diferentes.

Sub variaveis()
Dim var
var = 1
MsgBox "O valor da variável é = " & var

MsgBox "O valor da variável mais 1 é = " & var + 1

var = "Excel pra Ontem"
MsgBox "O valor da variável é = " & var + 1
End Sub

Algo que pode acontecer quando você estiver programando a usa macro é atribuir um valor a uma variável e realizar uma operação que ela não aceita.

Neste caso tentamos realizar a operação de soma em uma variável que tem um texto como valor. Por isso, sempre preste atenção nos valores que uma variável está recebendo.

Exemplo com Option Explicit?

Option Explicit
Sub variaveis()

var = 1
MsgBox "O valor da variável é = " & var

var = "Excel pra Ontem"
MsgBox "O valor da variável é = " & var
End Sub

A imagem mostra o que acontece quando se utiliza uma variável sem iniciá-la.

Note que neste pedaço de código, temos o “Option Explicit” o que nos obriga a declarar a variável antes de usá-la. Como não declaramos a variável, o VBA não consegue executar a macro.

Option Explicit
Sub variaveis()
Dim var
var = 1
MsgBox "O valor da variável é = " & var

var = "Excel pra Ontem"
MsgBox "O valor da variável é = " & var
End Sub
Option Explicit
Sub variaveis()
Dim var As Integer
var = 1
MsgBox "O valor da variável é = " & var

var = "Excel pra Ontem"
MsgBox "O valor da variável é = " & var
End Sub

Neste dois últimos códigos, eles rodaram sem erro já que declaramos a variável. Note que não foi necessário declarar o tipo da variável para que a macro rodasse. Somente declarar a variável, sem o tipo, já era o suficiente para que a macro rodasse sem erros.

Isso mostra que o “Option Explicit” obriga que uma variável seja declarada, mas não sendo necessário declarar o tipo da variável para que a macro rode.

Palavras Reservadas

Como toda linguagem de programação o VBA possui algumas palavras reservadas, que são utilizadas por ele e por isso não podem ser utilizadas como nome de variáveis. Um exemplo é a palavra input.

O input é utilizado pelo VBA para ler dados de um arquivo externo, por isso ao utilizar a palavra input como nome de variável, o VBA irá parar de rodar e mostrará a seguinte mensagem de erro:

A imagem mostra o que acontece quando se utiliza uma palavra reservada. Na imagem foi utilizado o input.

A lista completa de palavras reservadas, podem ser encontradas no site da Microsoft.

Dicas para nomear uma variável

  1. O nome da variável deve começar com uma letra.
  2. O nome da variável, caso seja composto, deve ser separado por underline(_). Espaços e pontos não são aceitos ao nomear uma variável e o VBA não irá rodar.
  3. Como falamos logo acima, palavras reservadas não podem ser utilizadas para nomear uma variável.
    1. Caracteres especiais não são aceitos. Os únicos que são aceitos são: _, $, %, #, @, ., &, e !. Porém eles não podem vir no começo do nome da variável. E acento o nome da variável nem pensar.A imagem mostra o que acontece quando se utiliza um carácter especial para nomear uma variável. Alguns caracteres reservados podem ser utilizados para nomear uma variável, porém eles não podem vir no começo do nome da variável.
  4. O tamanho máximo do nome da variável é 254 caracteres.
  5. O VBA não faz distinção se o nome da variável está em maiúsculo ou minúsculo. Com isso a variável VAR e var são consideradas pelo VBA como a mesma variável.

Se Inscreva no nosso curso gratuito de VBA