Mais uma aula do nosso curso de VBA, focado em Excel. Continuando os estudos, hoje vamos ver alguns conceitos fundamentais sobre escopo, tipos de dados, as diferenças conceitos como funções, eventos, métodos, procedimentos, etc. Vamos lá.
Lembrando que esse é curso é resultado de uma parceria entre o Oficina da Net e o site Aprender Excel. Todas as aulas do curso de VBA podem ser vistas aqui.
Objetos
No VBA chamaremos de objetos um conjunto específico de dados que correspondem aos elementos e códigos programados em que iremos trabalhar. Quando programamos podemos criar códigos que se aplicam tanto a todas as nossas planilhas abertas em uma pasta de trabalho, ou então a somente uma delas. 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 que sera aberta 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.
Este objeto será importante para sabermos onde estamos trabalhando e o que estamos modificando ou interagindo.
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 mais detalhada e 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. Vamos ver agora alguns dos conceitos que compõem esses parâmetros:
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 do código de uma 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 com funções contábeis. Se vcê já programou em alguma linguagem ou estudou nosso curso de Lógica, pode entender um módulo se pensar que ele é um container tal qual um vetor, porém, este daqui agrupa métodos.
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 acessada pelas partes do código. 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. Após executar o intervalo onde a a variável Dim está definida, a memória elimina o espaço onde a mesma está alocada. 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. Da mesma forma que 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:
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. Fica aqui apenas a titulo de curiosidade, pois a menos que você seja um programador que precisa se preocupar com a otimização da memória e desempenho, ela não terá muita utilidade.
Para declarar o tipo da variável é tão simples quanto o escopo. Veja um exemplo:
<strong>
Dim id As Integer
</strong>
No caso acima estou declarando uma variável chamada "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 e logo veremos mais sobre. Por ora outro exemplo:
<strong>
Dim nomeFunc As String
</strong>
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.
<strong>
Dim planilha1 As object
Set planilha1 = Worksheets(1)
</strong>
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.
Dim planilha1 As object Set planilha1 = Worksheets(1)
Veja que temos casos específicos na tabela 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. Então diremos isso para o Excel da seguinte forma:
<h2>
Public Const pi = 3.14
</h2>
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 nossas primeiras macros. Até lá.
E não esqueça que todas as aulas do nosso curso de VBA podem ser vistas aqui.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.