Blog

Postado em em 31 de janeiro de 2023

Variáveis VBA – O que são e como usar?

As variáveis no VBA representam uma ajuda incrível para quem deseja organizar sua codificação e evitar problemas. É uma maneira de tornar o desenvolvimento mais ágil e seguro, de modo a evitar mais erros. Também constitui uma forma de organizar o uso de memória no sistema.

Saiba mais sobre o assunto com este conteúdo completo!

O que são variáveis no VBA?

Variáveis no VBA são quaisquer nomes que sejam diferentes dos reservados pela biblioteca de nomes do VBA e representam espaços de memórias que são reservados no computador para armazenar conteúdos (valores). 

Existem diversos tipos de variáveis para armazenar tipos de dados específicos (número, texto, data, objetos etc).

Quando não se tem uma variável, o programador precisa monitorar o valor e fazer cálculos o tempo todo — algo que é completamente inviável.

Por isso, usar variáveis é algo tão simples e básico. No VBA e em outras linguagens, elas nem mesmo precisam ser declaradas, o que facilita muito o uso.

Há linguagens, porém, que forçam a declaração e definem erros quando isso não ocorre.

Para que servem?

O conteúdo armazenado nas variáveis no VBA em um momento pode variar dentro de um mesmo código de VBA em outro momento. 

Ou seja, ele pode assumir valores diferentes, conforme o código está em execução, assumindo o mesmo nome. Por isso é chamado de variável.

Como trabalhar com variáveis no VBA?

Ao longo da nossa série de consolidação de dados em planilhas iremos trabalhar com diversas variáveis e seus tipos. Hoje nós nos limitaremos à declaração de alguns tipos delas e a explicação de como armazenam valores. 

Esse post irá ajudar a entender os próximos passos dessa série, que no final visa fazer a consolidação de dados no Excel.

No nosso arquivo de exemplo usado no vídeo, temos duas abas, com tabelas preenchidas com dados de tipos iguais, mas que são diferentes. Veja abaixo:

Para começar tudo, iremos abrir o VBA (Alt+(Fn)+F11). Em seguida iremos na guia Inserir, e clicar em Módulo, para começar um módulo novo (Módulo 1, por padrão), em branco, onde iremos escrever nosso código.

A partir desse módulo em branco, iremos começar uma nova Sub (subrotina), que será o nome do nosso código. Ao inserir “Sub (nome do nosso código)” e dar Enter, automaticamente é preenchido um End Sub no final do código. O código será sempre o que estiver escrito entre Sub e End Sub.

Vamos começar declarando as variáveis. Precisamos declarar o tipo de variável para o VBA entender a quantidade de memória que o computador irá utilizar para armazenar aquele valor específico. Lembrando que não é obrigatório declarar as variáveis no VBA antes de utilizá-las (mas precisamos defini-las, ou seja, dizer o que elas assumirão ou armazenarão, se formos utilizá-las após essa definição no código).

Como no nosso exemplo temos dados de tipos de texto, e números, tanto inteiros pequenos e grandes, quanto decimais, vamos declarar variáveis dos tipos String, Integer, LongLong e Double, respectivamente. Veja abaixo a parte do código que irá representar a declaração:

Leitura do Bloco de declaração:

Dim nome As String é a instrução que fará a declaração da variável “nome” como um texto

Dim numero As Integer é a instrução que fará a declaração da variável “numero” como um número inteiro

Dim numero_decimal As Double é a instrução que fará a declaração da variável “numero_decimal” como um número decimal

Dim numero_grande As LongLong é a instrução que fará a declaração da variável “numero_grande” como um número inteiro muito grande

OBS: De primeira faz sentido usar a variável “numero_grande” como Long (por não sabermos os limites de valores que ela comporta). Mas, se rodarmos o código, o VBA nos retornará um erro de “Estouro”. Mas por que?

Porque a variável numero_grande irá assumir o valor de 313.536.843.185 e a variável do tipo Long, por definição, só assume valores de -2.147.483.648 a 2.147.483.647. Por isso devemos usar a LongLong, um tipo de variável que assume valores de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (válido somente em plataformas de 64 bits), segundo a Microsoft.

Agora vamos para a parte que iremos passar os dados para serem armazenados nas variáveis declaradas. Abaixo temos o código para armazenar os valores da primeira aba (planilha) do nosso exemplo:

Leitura do Bloco de armazenamento para 1ª aba:

nome = Cells(1, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 1ª linha (linha = 1) da 2ª coluna (coluna = 2) da nossa primeira aba na variável “nome”

numero = Cells(2, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 2ª linha (linha = 2) da 2ª coluna (coluna = 2) da nossa primeira aba na variável “numero”

numero_decimal = Cells(3, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 3ª linha (linha = 3) da 2ª coluna (coluna = 2) da nossa primeira aba na variável “numero_decimal”

numero_grande = Cells(4, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 4ª linha (linha = 4) da 2ª coluna (coluna = 2) da nossa primeira aba na variável “numero_grande”

OBS: Leitura para “Cells” no VBA é feita da seguinte forma: Cells(LINHA,COLUNA).

E se quiséssemos pegar os valores da Segunda Aba?

Para isso, devemos declarar uma variável que irá representar a segunda aba. Essa variável é a variável Object, porque a aba (planilha) é um objeto do programa do Excel e é assim que deve ser declarado. Veja abaixo como ficará o código para fazer o mesmo procedimento de armazenar os valores da primeira aba com a segunda aba:

Leitura do Bloco de armazenamento para a 2ª aba:

Para definir um objeto no VBA devemos usar o comando Set antes do nome da variável (declarada ou não) escolhida para que o VBA entenda que ela vai assumir um (“valor” de) objeto. 

Precisamos “setar” ele para que o código entenda que ele irá substituir um objeto (que pode, mas geralmente não muda) no código inteiro, e não será uma variável que substituirá um valor (texto, número, data) que poderá mudar várias vezes durante o código.

Dim aba_secundaria As Object é a instrução que fará a declaração da variável “aba_secundaria” como um objeto.

Set aba_secundaria = Sheets(“Segunda Aba”) é a instrução que passará para o VBA que queremos usar a variável “aba_secundaria” exatamente como a segunda aba do Excel, como uma substituição. Onde ela aparecer no código, entenderemos que essa variável vai substituir a segunda aba, em todas as partes em que ela aparecer no código.

nome = aba_secundaria.Cells(1, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 1ª linha (linha = 1) da 2ª coluna (coluna = 2) da nossa segunda aba na variável “nome”

numero = aba_secundaria.Cells(2, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 2ª linha (linha = 2) da 2ª coluna (coluna = 2) da nossa segunda aba na variável “numero”

numero_decimal = aba_secundaria.Cells(3, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 3ª linha (linha = 3) da 2ª coluna (coluna = 2) da nossa segunda aba na variável “numero_decimal”

numero_grande = aba_secundaria.Cells(4, 2).Value é a instrução do código que dirá que queremos armazenar o valor da célula da 4ª linha (linha = 4) da 2ª coluna (coluna = 2) da nossa segunda aba na variável “numero_grande”

OBS: Dim e Set

Dim: significa dimensionar (ou declarar) uma variável

Set: significa “setar”, ou seja, fazer a variável assumir algo ou atribuir algo a ela. É utilizada para atribuir uma referência de um objeto a uma variável.

Esteja ciente que as variáveis no VBA armazenam uma quantidade diferente de memória temporária do computador (fonte: Microsoft). 

Se você não declarar o tipo, ele irá armazenar a maior quantidade de memória possível para conseguir interpretar todos os tipos de dados, porque ele “não sabe” qual tipo de dado será armazenado.

Isso é considerado algo ineficiente para o código. Por exemplo, para um código pequeno não faz muita diferença, mas para um código extenso sim, faz bastante diferença no tempo de execução.

Quais os tipos de variáveis no VBA?

Já vimos o que é uma variável no VBA e sua importância. Agora, vamos entender melhor os tipos e especificar como se diferenciam entre si.

Temos o boolean, que se divide em True ou False. O Byte, que traz valores de 0 a 255.

Há o Date, que especifica datas e números que demarcam tempo. Já o Double serve para especificar números com casas decimais e elementos hexadecimais.

O Integer define números inteiros, que vão até 32 mil. O tipo Long também define números inteiros, só que os maiores, com a possibilidade de representar bilhões.

E o String é um texto, que pode ser pequeno ou ter até 2 bilhões de caracteres.

Já o tipo Variant é um tipo genérico, que permite abrigar qualquer tipo de dado em um espaço criado sem definição pelo VBA.

Como definir uma variável no VBA?

Uma variável é um espaço de memória, como já falamos. É uma definição que ajuda a guardar dados para depois usar em uma situação específica. 

Com uma variável, você não precisa repetir operações ou memorizar determinadas informações; pode simplesmente usar a variável sempre que necessário.

Para definir uma variável, você precisa igualar o nome dela a um valor, o que pode ser uma célula, por exemplo. 

Como lembrar de declarar variáveis no VBA?

Para lembrar de declarar, você pode estabelecer uma fase obrigatória antes da escrita do código que sempre define as principais variáveis, como um bloco anterior que você escreve primeiro. 

Então, antes mesmo de começar o código, o programador já se pergunta sobre as variáveis que vai precisar. Isso força a pensar a lógica de antemão e a ter mais organização para gerenciar melhor esses tipos de dados. 

Vale lembrar que a declaração é diferente da atribuição a uma variável. Isso pode ser feito em duas linhas diferentes. 

A importância da declaração em si reside no fato de que, ao declarar, você mostra ao computador exatamente a quantidade necessária de memória que precisa alocar. 

Contudo, também é comum que você sempre pense em uma variável posteriormente. Nesse caso, depois de mudanças de decisão sobre os tipos de dados no meio da codificação, é possível simplesmente ir no bloco anterior e adicionar uma variável nova. 

Com a familiaridade e a constância de sempre declarar esse bloco, você vai esquecer menos e tornar isso um hábito saudável. 

Conclusão

Vimos o que são variáveis no VBA e aprendemos como usar e declarar. Assim, você já consegue organizar melhor o seu código para evitar perda de tempo e falhas.

Fique ligado na nossa série compilação de planilhas no VBA, nos posts aqui e vídeos no nosso canal do YouTube para os próximos passos a serem aprendidos! Até a próxima!

Quer sair do zero em Python e virar uma referência na sua empresa? Matricule-se agora mesmo no Python Impressionador!