Dando continuidade ao nosso curso de VBA, focado em Excel, vamos ver hoje alguns conceitos fundamentais sobre escopo, tipos de dados, as diferenças entre funções, eventos, métodos, procedimentos, etc. Vamos lá.

Todas as aulas do nosso curso de VBA podem ser vistas aqui.

Objetos

No VBA temos suporte a conjuntos específicos de objetos que correspondem aos elementos do Excel em que iremos trabalhar. Podemos criar códigos que se aplicam a todas as planilhas abertas em uma pasta de trabalho, ou então somente uma delas, por exemplo. Lembra da aula passada, quando demos 2 cliques na planilha em que desejávamos programar? Faça o procedimento novamente e verá que no canto superior esquerdo da janela de edição poderemos ver "Workbook", que representa uma pasta de trabalho, "Worksheet", que representa uma planilha, e o objeto "Range", que representa um intervalo de células específico.

Curso de VBA 02 - Tipos de dados, variáveis, escopo, funções, métodos e mais

Este objeto será importante para sabermos onde estamos trabalhando e com o que estamos modificando ou interagindo. Portanto, atente-se a eles ok?

Como é apenas nossa segunda aula, nunca é demais reforçar que a "pasta de trabalho" corresponde a um arquivo que pode conter diversas "planilhas". Não confundir, ok? Confira aqui uma explicação com imagens.

Propriedades, Funções, Procedimentos, Eventos e Métodos

Para realizar uma tarefa o Excel utiliza um objeto específico criado por nós e então o manipula usando os parâmetros que definimos em nosso código.

Propriedades - São as características do objeto, que, conforme vimos na aula anterior, podemos definir naquele retângulo no canto esquerdo inferior da janela de edição, ou através de código mesmo.

Métodos - São ações que os objetos podem executar algo. Métodos também são chamados popularmente de funções, mas para sermos mais teóricos, vamos dividir os métodos em 2 classificações:


Funções - São códigos que leem as propriedades, executam uma ação e retornam algo como resultado, seja ele numérico, de texto ou verdadeiro ou falso. No código deve ser definido começando com Function e terminando com End Function. Exemplo de função pode ser visto aqui;

Procedimentos - São códigos que leem as propriedades, executam uma ação e NÃO retornam nada como resultado. No código deve ser definido começando com Sub e terminando com End Sub. Veja um exemplo de procedimento aqui;

Eventos - Código que é executado sempre que algo específico e definido pelo programador ocorre na planilha. Por exemplo, você pode criar um evento para dar uma mensagem de boas-vindas sempre que a planilha for aberta, ou então, uma mensagem de tchau sempre que a mesma for fechada. Exemplo de um evento aqui;

Agora que você já sabe nossa definição de procedimentos, funções, eventos, etc. cumpre lembrar que não deve se ater a ela 100%, isso porque é comum encontrar divergências em diferentes sites ou livros de programação VBA. Infelizmente os conceitos não são totalmente fechados ou definidos e muita confusão ainda acontece.

Módulos

Um módulo pode ser descrito como um container, pois ele é um agregador de diversos métodos. O código dentro dele será organizado em procedimentos que realizam tarefas específicas. Por facilidade e organização costumamos agrupar em um mesmo módulo todos os métodos que executam tarefas similares, por exemplo, um módulo que agrupe as funções contábeis.

Caso você não tenha entendido o porquê de agrupar funções em uma parte separada do código principal, calma que logo logo você vai entender a partir do próximo parágrafo quando falarmos sobre as declarações de variáveis.

Declarações de Variáveis

Quando você está programando algo é necessário que diga ao computador qual os dados que esse seu programa vai manipular. Se você vai criar uma função que retorna uma soma, por exemplo, é necessário dizer qual o valor 1 e o valor 2, no mínimo. Do contrário ele não saberá o que somar, correto?

Este valor 1 e valor 2 são chamadas de variáveis, e são importantes também por informar ao sistema que ele deve separar um espaço de memória para que a mesma possa ser armazenada e então manipulada (por conta disso é que aprenderemos logo abaixo o tamanho que cada tipo de dados precisa).

Quando você for declarar suas variáveis terá de definir 2 coisas: seu escopo e seu tipo de dados:

Escopo

O escopo é o local onde a variável poderá ser utilizada. Existem 4 tipos de escopo:

Dim - Quando o valor é retido somente pelo tempo em que o Excel estiver executando a operação a qual pertence. Pode ser usada dentro dos métodos ou módulos;

Static - Se você declarar uma variável como Static está dizendo ao Excel que preserve o valor atribuído a ela mesmo após a execução do procedimento, método, função ou evento no qual participa. Pode ser usada dentro dos métodos;

Private - Se você definir a variável X como Private todos os procedimentos, métodos, eventos e funções que fazem parte do MESMO módulo poderão utilizar ela normalmente e quantas vezes desejarem. Pode ser usada dentro dos módulos;

Public - Caso declare uma variável como Public então sua variável poderá ser acessada por qualquer módulo dentre os existentes na sua pasta de trabalho. Assim como o Private, só pode ser usada dentro dos módulos;

Um erro que pode ocorrer é que não precisamos descrever toda vez nosso escopo, pois o Excel ira entender implicitamente o que está tentando declarar. Claro que se ele está fazendo isto implicitamente, pode haver falhas, correto? Portanto, para evitarmos tais falhas temos de ordenar a ele que não faça declarações implícitas. Faremos isso com a instrução Option Explicit antes dos procedimentos em um módulo.

Assim é só ficar tranquilo, pois o Excel não vai deduzir nada. Muito pelo contrário: Caso você esqueça de definir sua variável ele irá dar erro:

Curso de VBA 02 - Tipos de dados, variáveis, escopo, funções, métodos e mais

Tipos de dados

Depois de definir o escopo, ou seja, onde sua variável será utilizável, é preciso definir o tipo dela, ou melhor dizendo, o tipo de dados que ela poderá aceitar.
Confira a tabela abaixo e depois explicaremos alguns detalhes:

Nome Tamanho Intervalo
Integer 2 bytes -32768 a 32767
Long 4 bytes -2.147.483.648 a 2.147.483.467
Single 4 bytes -3,4 x 1038 a 3,4 x 1038
Double 8 bytes 1,7 x 10308 a 1,7 x 10308
Currency 8 bytes -9223372036854,5808 a 9223372036854,5807
String 1 byte por caractere 0 a aproximadamente 65.500
Boolean 2 bytes Verdadeiro ou Falso
Date 8 bytes 01/01/100 a 31/12/9999
Object 4 bytes Qualquer referência a objeto
Variant 16 bytes + 1 byte para cada caractere Válido para qualquer tipo de dados

Viu a coluna tamanho? Era sobre ela que estávamos falando um pouco acima quando dissemos que o sistema reservaria espaço em memória para armazenar a variável.

Para declarar o tipo da variável é tão simples quanto o escopo. Veja um exemplo:

Dim id As Integer

No caso acima estou declarando uma variável e nome "Id"que só estará disponível durante o tempo de sua utilização (pois ela é Dim) e que poderá amazenar qualquer valor que vá de -32768 até 32767 (pois é Integer). O "As" significa em inglês "como", ou seja, estamos dizendo ao Excel que armazene a variável id como Integer.

A palavra "As" é uma palavra reservada da linguagem. Guarde bem essas palavras, pois logo veremos mais sobre. Por ora vejamos outro exemplo:

Dim nomeFunc As String

No exemplo acima temos o tipo String que é o tipo de dados capaz de armazenar caracteres alfanuméricos e utilizaremos geralmente para armazenar conjuntos de letras, mais conhecidos como palavras e frases.

Dim planilha1 As object
Set planilha1 = Worksheets(1)

Um último tipo que pode causar confusão é Object que irá - com a ajuda da instrução Set - fazer referência a uma variável-objeto. Veja como criamos uma variável planilha1 e dissemos que ela seria a Worksheet real que o Excel trabalha.

Veja que temos casos específicos para armazenar verdadeiro ou falso (Boolean) ou até mesmo data.

Constantes

Como o nome já diz, variáveis podem "variar" seu conteúdo e receber um novo valor a cada execução, como um contador, por exemplo. No entanto, há as constantes que são exatamente o contrário: aquelas que terão sempre o valor que você definiu.

O exemplo mais clássico é o valor de Pi, utilizado para calcular questões geométricas. Sabemos que ele será sempre o mesmo 3.14, pois é uma constante matemática. Então precisaremos dizer isso ao Excel da seguinte forma:

Public Const pi = 3.1

Agora, todos os módulos vão poder utilizar o valor de Pi que fora declarado e não poderão alterá-lo.

Palavras reservadas

Agora que você já sabe o tipo e o escopo está quase pronto para começar a declarar suas variáveis. Sim, quase, pois só falta mais um detalhezinho: Aprender a nomear as mesmas, pois não são todos os nomes que poderão ser usardos.

Para declarar o nome de uma variável você tem de seguir algumas regras. São elas:

1 - Deve começar por uma letra;

2 - Não pode ser palavra composto, ou seja, nada de uma variável ter mais de uma palavra separada por espaços. Uma saída para isso é usar o underline (_). Por exemplo: "nome da variavel" está incorreto, mas "nome_da_variavel" não tem problema algum.

3 - A maioria dos caracteres especiais são proibidos. As únicas exceções são: _, $, %, #, @. &, !. Porém, todas elas tem de ficar no final do nome da variável. Exemplo: Variavel$ e não $variavel. Ahh, e nada de acentos nas palavras, ok?

4 - Por fim, outra questão a ser observada é o uso das palavras reservadas da linguagem. Estas palavras reservadas são palavras que toda linguagem de programação possui e são usadas para descrever o que o programador deseja fazer, por exemplo: você não pode declararuma variável com o nome Public, pois essa palavra está reservada para um dos escopos, lembra?

A lista completa de palavras reservadas é:

as, byref, byval, case, close, const, date, declare, dim, each, else, empty, false, for, friend, function, get, input, if, is, len, let, lock, next, new, nothing, on, open, option, print, public, private, resume, seek, select, set, static, string, sub, then, to, true, type, variant, with, while, write.

Bom pessoal. A aula já está bastante longa e acho melhor pararmos por aqui. Na próxima aula veremos os laços de repetição e começaremos a criar nossos primeiros códigos. Até lá.

E não esqueça que todas as aulas do nosso curso de VBA podem ser vistas aqui.