
Introdução:
Existem situações onde não conseguimos resolver o problema proposto, simplesmente utilizando os comandos e fórmulas do Excel.
Nessas situações temos que fazer o uso de recursos mais avançados, tais como Macros e Programação VBA. A linguagem de programação do Excel (qualquer versão) é o VBA – Visual Basic for Applications.
O VBA é a linguagem de programação para todos os aplicativos do Microsoft Office: Word, Excel, Access e PowerPoint.
Nas lições desse curso você aprenderá sobre Macros.
Veremos o que é uma Macro, para que serve, quando devemos usar Macros, como criar e alterar Macros.
Em seguida aprenderemos os fundamentos básicos da linguagem de Programação VBA.
Veremos os conceitos teóricos da linguagem VBA e os comandos básicos, para que você possa criar programas simples.
Neste curso você aprenderá os fundamentos sobre Macros e VBA. Mostrarei exatamente o que é uma macro, o que é programação VBA, o ambiente de programação (o Editor de Códigos VBA), as principais funções do VBA e como criar as primeiras rotinas em programação VBA no Excel.
Vou iniciar o curso mostrando como criar uma macro e como verificar o Código VBA que é criado e associado com a macro, o qual na prática é quem “faz o trabalho” da macro. Também mostrarei como associar teclas de atalho e botões de comando com uma Macro.
O próximo passo será aprender a utilizar o Ambiente de Programação do VBA no Excel, também chamado de Editor do VBA. Você aprenderá a criar código, a “navegar” através dos objetos disponíveis e a utilizar os vários recursos de ajuda fornecidos pelo Editor de código VBA. Mostrarei as diversas partes que compõem o Editor do VBA e como utilizá-las.
Em seguida passarei ao estudo da linguagem VBA propriamente dita. Estes tópicos são a base da linguagem de programação VBA, base esta que você precisará para estudar os demais cursos de VBA que publicarei, futuramente, aqui na Udemy.
Como Criar e Executar Macros:
Conforme descrito na introdução do curso uma macro é uma seqüência de comandos (cliques de mouse ou toques de teclado) que são gravados em um Módulo de programação VBA e podem ser executados, sempre que necessário.
A grande vantagem de gravarmos uma seqüência de comandos é que poderemos utiliza-la sempre que necessário. Para isso basta executar a macro na qual foi gravada a seqüência de comandos.
As Macros são uma excelente opção para automatizar tarefas repetitivas. Com o uso de Macros temos um ganho de produtividade considerável, ao evitar que tenhamos que executar manualmente, os diversos passos de uma tarefa, passos estes que podem ser automatizados através do uso de uma macro.
Existem duas maneiras distintas para a criação de uma macro:
Melhor do que definições é a prática!!
Melhor do que uma série de definições é ver uma Macro em ação. Vamos a um exemplo prático bem simples, onde criaremos uma Macro. Em seguida vamos executa-la .
Na próxima lição analisaremos o código VBA criado pelo gravador de macros.
Do que é Feita uma Macro?
Na Lição anterior podemos ver uma macro em ação. Criamos uma macro chamada FormataVermCinza. Essa macro é composta por três comandos de formatação. Cada vez que a macro é executada, os três comandos de formatação são novamente executados e aplicados à célula onde esta o cursor. Até aqui tudo OK. Nenhuma novidade. A pergunta que pode surgir é:
Como é que o Excel 2010 faz esta mágica?
Ou de outra forma:
Do que é feita uma macro?
onforme veremos nessa lição, uma macro é gravada no Excel como uma seqüência de comandos VBA. Por exemplo, ao clicarmos no botão N para a aplicação de negrito, o Excel gera um comando VBA que faz a formatação em negrito.
Nessa lição aprenderemos a acessar o código VBA gerado pelo Excel (embora ainda não sejamos capazes de entender esse código, pois ainda não estudamos programação VBA).
Administração de Macros:
Nessa lição aprenderemos a renomear, excluir, editar e fazer outras alterações em macros.
Também aprenderemos a alterar outras opções associadas com a Macro, tais como o comando/atalho de teclado para executar a macro.
Existem algumas operações que podem ser feitas com uma macro, após a sua criação. A mais óbvia (e o motivo pelo qual uma macro é criada) é para executar a macro. Além da execução é possível executar outras operações com uma macro, conforme descrito a seguir:
- Renomear
- Excluir
- Alterar a Tecla de Atalho
Como Associar um Botão de Comando com uma Macro:
Nessa lição aprenderemos a criar um novo botão, na Barra de Ferramentas e a associar esse botão com a macro.
Dessa forma toda vez que precisarmos executar a macro, bastará clicar no botão associado com a macro.
Configurações de Segurança com Macros - A Central de Confiabilidade:
Conforme já descrito anteriormente, uma macro nada mais é do que uma seqüência de comandos VBA.
Existem, literalmente, milhares de comandos VBA, que podem fazer deste simples formatações, até enviar e-mails, formatar um HD, apagar arquivos, etc.
Como toda linguagem de programação, pode ser utilizada, por criminosos virtuais, para a criação de vírus, spyware e outras pragas virtuais.
Por isso que existem configurações de segurança, relacionadas com o uso de Macros, para minimizar os riscos de que você venha a executar, sem saber, uma macro que possa instalar um vírus ou um trojan em seu computador.
Importante: Obviamente que nada substitui o uso de um bom programa antivírus, sempre atualizado e também de um bom programa anti spyware. As configurações de segurança das macros são um item a mais, a reforçar a segurança do seu computador, contra ataques de criminosos virtuais.
Nesta lição veremos como acessar as configurações de segurança de Macros e a descrição das opções disponíveis.
Com o Excel o usuário pode alterar as configurações de segurança de macros para controlar que macros são executadas e em que circunstâncias ao abrir uma pasta de trabalho. Por exemplo, podemos configurar o Excel de tal forma a somente permitir a execução de macros digitalmente assinadas por um desenvolvedor confiável.
Vamos a um exemplo prático, onde mostrarei como alterar as configurações de segurança de macros, ao mesmo tempo que descreverei cada uma das opções disponíveis.
O Que é o VBA no Excel e Por Que Você Deve, com Urgência, Aprender a Programar em VBA?
Nas lições iniciais desse curso você aprendeu a criar macros simples, as quais reproduzem uma série de comandos de mouse e teclado.
Para que possamos criar macros mais sofisticadas e resolver problemas mais complexos com o Excel, precisamos utilizar programação VBA.
Conforme descrito anteriormente, a linguagem de programação do Excel (e de todos os aplicativos do Office) é o VBA: Visual Basic for Application.
Uma linguagem de programação, basicamente, é um conjunto de comandos, rotinas, objetos (com seus métodos, propriedades e eventos) e funções que executam tarefas específicas. Considere o exemplo genérico a seguir, onde são utilizados comandos genéricos (não são comandos VBA) para acessar uma tabela do Access a partir de uma planilha do Excel:
Começo da macro
‘ Comentários iniciais do Programa.
‘ Acessa dados da tabela pedidos do banco de dados
‘ C:\Bases de Dados\vendas.accdb
Acessar o banco de dados
Acessar a tabela Pedidos
Aplicar um filtro para País=’Brasil’
Exibir os dados obtidos na planilha atual
Formatar a primeira linha com negrito
Formatar a primeira linha com fonte azul
Encerrar a macro
Por que eu preciso aprender Programação VBA?
Bem, assista este vídeo, para saber a resposta.
O Editor de Código VBA - Parte 1:
O Excel fornece um ambiente de programação bastante poderoso, com uma série de recursos que facilitam a criação de código VBA.
Neste tópico vamos aprender a utilizar os aspectos básicos do Ambiente de Programação do VBA.
O ambiente de programação é um editor que facilita a criação de código VBA.
Dentro do ambiente de programação são oferecidas uma série de facilidades e dicas para que o Programador possa encontrar, facilmente, os objetos disponíveis, bem como os métodos e propriedades de cada objeto.
Se não tivéssemos disponível um Ambiente de Programação, teríamos que lembrar da sintaxe de todos os comandos, dos métodos e propriedades dos objetos. Convenhamos que isso é praticamente impossível, pois com o VBA temos acesso a milhares de objetos (é isso mesmo: milhares de objetos, comandos e funções).
O ambiente de Desenvolvimento fornece uma série de facilidades para a criação de código VBA. Por exemplo, ao digitar o nome de um objeto e um ponto será aberta, automaticamente, uma lista com todos os métodos e propriedades deste objeto. Ao invés de lembrar do nome dos métodos/propriedades, basta selecioná-los em uma lista.
Se selecionarmos um método, ao digitarmos o parênteses de abertura, será exibida uma lista com os argumentos esperados pelo método, bem como o tipo (texto, número, data, etc.) de cada argumento.
Se digitarmos um comando incorretamente, o Ambiente de Desenvolvimento emite uma mensagem e coloca em destaque o comando que foi digitado incorretamente.
Estas são apenas algumas das facilidades fornecidas pelo Editor de Código do VBA.
Para conhecermos melhor o referido ambiente, vamos a um exemplo prático. Vamos abrir uma planilha, que contém uma macro chamada AplicaNegrito e editar essa macro.
Lembre que para editar uma macro, temos que acessar o código VBA associado à macro. Isso é feito no Editor do VBA, ou seja, no Ambiente de Desenvolvimento do VBA.
Vamos ao Vídeo!
Editor de Código VBA - Parte 2:
Nesta lição mostrarei mais alguns importantes recursos do Ambiente de Programação do VBA.
Mostrarei como o ambiente procura ajudar o programador, à medida que este digita o seu código.
Também descreverei a estrutura de código contida em uma planilha do Excel.
Para mostrar as funcionalidades do ambiente de programação, utilizarei um exemplo prático.
Declaração e Utilização de Variáveis no VBA:
A partir desta lição, você iniciará o estudo dos fundamentos da linguagem VBA.
O VBA é composto por uma série de comandos básicos, os quais fazem parte de praticamente toda linguagem de programação. São comandos para declaração de variáveis, para realização de operações aritméticas e lógicas e comandos para fazer testes lógicos e para executar a repetição de um conjunto de comandos, com base em uma ou mais condições.
Esses comandos básicos serão utilizados em praticamente todos os exemplos deste curso e em qualquer rotina de programação que você venha a desenvolver na prática.
Iniciaremos o nosso estudo de VBA pela definição do conceito de variáveis a aprendendo a declarar variáveis no VBA.
Nota: A medida que os conceitos forem sendo apresentados, faremos alguns testes. Para os testes criarei uma macro chamada MacroTeste, a qual irei associar uma combinação de teclas de Atalho: Ctrl+Shift+T. Para testar os comandos, a medida que estes forem sendo apresentados, vamos acessar o código VBA da macro MacroTeste (usando o Editor VBA) e inserir os comandos a serem testados. Em seguida voltaremos para a planilha e executaremos a Macro para testar os comandos. Para facilitar o processo de execução da Macro usaremos a combinação de teclas Ctrl+Shift+T, a qual será associada à macro. Vou utilizar uma planilha chamada Módulo 1 – Exemplos Básicos VBA.xlsm (No vídeo tem o link para baixar esta planilha).
A seguir descrevo os passos para criação da MacroTeste e para associar a combinação Ctrl+Shift+T com esta macro. Você criará a macro sem nenhum comando. Os comandos serão inseridos e testados, nos exemplos práticos, das lições deste módulo, usando diretamente comandos VBA.
Assista no Vídeo ->
Fazendo Cálculos e Comparações com o VBA – Operadores Aritméticos:
Para realizarmos cálculos e comparações entre variáveis, utilizamos operadores.
Neste item trataremos sobre operadores aritméticos e operadores de comparação.
Os operadores são utilizados para fazer operações matemáticas com variáveis, tais como adição, subtração, divisão, multiplicação, potenciação, etc.
Estruturas e Operadores de Comparação:
Além de declaração de variáveis e cálculos básicos, tais como soma, adição, multiplicação, etc., o VBA fornece uma série de comandos conhecidos como estruturas de controle e repetição. As estruturas de controle são utilizadas para a realização de testes. Por exemplo:
“se o valor de x for maior do que o valor de y, execute estes comandos, caso contrário execute os seguintes comandos”.
Os testes condicionais são intensamente utilizados em programação. Eu até diria que é impossível não utilizá-los, conforme você mesmo constatará nos diversos exemplos deste livro.
Em um primeiro grupo, temos as chamadas estruturas de decisão. São comandos/estruturas que realizam um teste lógico, e executam determinados comandos quando o teste resultar verdadeiro, ou um conjunto diferente de comandos, quando o teste resultar falso. Agora passaremos a analisar as estruturas de decisão, disponíveis no VBA.
IMPORTANTE: Se você quiser pode utilizar a macro MacroTeste, para testar cada um dos exemplos de códigos a seguir. Basta seguir os passos indicados na lição anterior, onde você acessa o código da macro MacroTeste, apaga todos os comando que estão dentro da macro, mantendo sempre os comandos Sub MacroTeste() e End Sub, que são os comandos de abertura e fechamento da macro. Depois de apagar os comandos de dentro da macro é só digitar o código dos exemplos, salvar pressionando Ctrl+B e executar pressionando F5.
Para realizar testes lógicos, nós utilizamos os chamados operadores de comparação.
Assista o Vídeo!
Estruturas de Repetição:
Em determinadas situações, precisamos repetir um ou mais comandos, um número específico de vezes, ou até que uma determinada condição torne-se verdadeira ou falsa. Por exemplo, pode ser que haja a necessidade de percorrer todas as linhas de dados de uma determinada planilha, até que a última linha com dados seja alcançado. Para isso, utilizamos as chamadas estruturas de repetição, ou Laços. A partir de agora, aprenderemos as estruturas de repetição disponíveis no VBA.
IMPORTANTE: Se você quiser pode utilizar a macro MacroTeste, para testar cada um dos exemplos de códigos a seguir. Basta seguir os passos indicados nas lições anteriores, onde você acessa o código da macro MacroTeste, apaga todos os comandos que estão dentro da macro, mantendo sempre os comandos Sub MacroTeste() e End Sub, que são os comandos de abertura e fechamento da macro. Depois de apagar os comandos de dentro da macro é só digitar o código dos exemplos, salvar pressionando Ctrl+B (para salvar) e executar pressionando F5. Lembrando sempre que o código dos exemplos deve ser digitado entre os comandos Sub MacroTeste () e End Sub.
Funções de Tipos de Dados e de Conversão de Tipos de Dados - Parte 1:
Além dos comandos básicos do VBA, vistos até agora, tais como declaração de variáveis, operadores aritméticos, estruturas de decisão e laços, estão disponíveis para uso no VBA, as centenas de funções de planilha, disponíveis no Excel. Por exemplo, você pode usar no código VBA, funções tais como SOMA, Média e assim por diante.
Um detalhe importante é que no código VBA, devem ser utilizadas as funções com o nome em Inglês: SUM ao invés de SOMA, Avg ao invés de Média e assim por diante.
Na prática, existe um objeto chamado WorksheetFunction (funções de planilha) e as funções são consideradas métodos deste objeto. Por exemplo, para chamar a função Soma, temos que usar o comando:
WorksheetFunction.Soma(parâmetros da soma)
Não se preocupe em entender esta sintaxe neste momento, pois ainda não vimos mais detalhes sobre objetos, métodos, propriedades e parâmetros. Vamos continuar o nosso estudo e aprender a usar as funções, através de exemplos práticos. Mais adiante, aprendermos mais sobre objetos, métodos, eventos e parâmetros.
A partir dessa lição veremos uma série de aspectos que vão além do básico do VBA. Inicialmente vamos estudar uma série de funções disponíveis no Excel. Vamos dividir estas funções em categorias para facilitar o seu entendimento. Iniciaremos falando um pouco mais sobre tipos de dados e funções para conversão de tipos de dados, ou seja, funções que fazem a conversão de um tipo de dado para outro, como por exemplo de texto para número. Este tópico é de grande importância, principalmente quando criamos código que efetua cálculos, tais como uma folha e pagamentos ou cálculos de impostos.
Depois passaremos a analisar uma série de funções internas do VBA. São funções que fazem parte do Microsoft Excel, como por exemplo a função Date(), que retorna a data do sistema. Na seqüência do capítulo, aprenderemos a criar nossas próprias funções e Sub-rotinas. Aprenderemos as diferenças entre uma Sub-rotina e uma função, e quando utilizar uma ao invés da outra.
Tipos de dados e funções para conversão de tipos
Neste item, aprenderemos a determinar qual o tipo de um dado que está armazenado em uma variável, bem como a converter valores de um tipo para outro, utilizando as funções para conversão de tipos.
Determinando o Tipo de Dados contido em uma variável:
Existem diversas funções, que permitem que seja determinado o tipo de valor contido em uma variável. Existem diversas aplicações para este tipo de função. Por exemplo, ao digitar dados em um formulário do Excel, podemos utilizar uma função para determinar se os valores digitados pelo usuário, não apresentam problemas. Por exemplo, o usuário pode ter digitado, por engano, texto em um campo que deve conter valores numéricos. Vamos ao estudo das funções que detectam o tipo de dados armazenado em uma variável.
Funções de Tipos de Dados e Conversão de Tipos de Dados - Parte 2:
Nesta lição continuaremos o estudo das funções para determinação e conversão de tipos no VBA.
Funções de Conversão de Tipos – Parte 1:
Nesta lição aprenderemos a utilizar as principais funções para conversão de tipos de dados.
Existem situações em que um determinado tipo de dado, deve ser convertido para outro.
Por exemplo, se tivermos um número, armazenado na forma de texto, precisamos convertê-lo para inteiro ou Double, para que possamos realizar cálculos.
Em um dos exemplos no final deste curso, faremos um exemplo de cálculo do DV do CPF, onde o CPF é um valor do tipo texto. Ao extrairmos cada dígito do CPF, estes serão extraídos como caracteres de texto. Precisaremos utilizar uma função de conversão, para convertê-los para números, a fim de que possamos efetuar os cálculos necessários.
Na seqüência, apresento as principais funções de conversão, bem como um pequeno fragmento de código, exemplificando a utilização de cada uma delas.
Nunca é demais lembrar que se você quiser, pode utilizar a macro MacroTeste, criada e explicada nas lições anteriores, para testar cada um dos exemplos de códigos que eu apresento. Basta seguir os passos indicados anteriormente, onde você acessa o código da macro MacroTeste, apaga todos os comando que estão dentro da macro, mantendo sempre os comandos Sub MacroTeste() e End Sub, que são os comandos de abertura e fechamento da macro. Depois de apagar os comandos de dentro da macro é só digitar o código dos exemplos, salvar pressionando Ctrl+B e executar pressionando F5. Lembrando sempre que o código dos exemplos deve ser digitado entre os comandos Sub MacroTeste () e End Sub.
Funções de Conversão de Tipos – Parte 2:
Vamos apresentar mais algumas funções do VBA, para a conversão de tipos de dados.
Funções Para Trabalhar com Texto:
Nessa lição veremos as principais funções para tratamento de Texto, via programação VBA no Excel.
Funções Para Trabalhar com Valores de Datas e Horas e Funções Matemáticas:
Nesta lição veremos uma série de funções, relacionadas ao tratamento de valores de data e hora e a realização de cálculos matemáticos.
Módulos, Procedimentos e Funções - Eis o Que Existe de Mais Importante no VBA:
Nas lições anteriores, aprendemos a utilizar as funções prontas, que já fazem parte do Excel. Porém podemos (e precisaremos) criar nossas próprias funções.
A partir desta lição aprenderemos a criar nossas próprias funções e Sub-rotinas, usando programação VBA no Excel.
O princípio por trás da criação de funções e sub-rotinas, é o de reaproveitamento de código e facilidade de manutenção do programa. Imagine que estejamos criando uma planilha para cálculos financeiros, por exemplo, depreciação contábil. Vamos supor que em diversos locais, seja necessária a realização de um determinado cálculo de depreciação. Poderíamos colocar o código/fórmulas que faz o cálculo, em cada um dos locais, onde o cálculo seja necessário. Porém esta não é a melhor maneira de criarmos nossos programas. Imagine, por exemplo, quando fosse necessário alterar a maneira de realizar os cálculos (o que poderia ocorrer devido à mudanças na legislação fiscal ou contábil). Teríamos que repassar todos os locais onde o cálculo é feito, procurando os pontos onde o código está , e fazer as alterações. E se esquecêssemos de um único local, teríamos sérios problemas, pois haveria cálculos sendo feitos incorretamente, da maneira antiga.
Para resolver estes problemas, poderíamos criar uma função ou sub-rotina que faz os cálculos de depreciação. A função/sub-rotina seria criada dentro de um módulo de código do VBA, na própria planilha. Depois, em cada local onde precisamos fazer os cálculos, é só chamar a função (ou sub-rotina), para fazer os cálculos. Quando fosse necessária a alteração da metodologia de cálculo, era só alterar a função (ou sub-rotina) e pronto, os novos cálculos passarão a ser feitos com base na nova metodologia. Isto poupa esforço, reduz o número de linhas de código, e facilita a manutenção, além de reduzir a possibilidade de erros.
Agora é chegada a hora de aprendermos a criar funções e sub-rotinas. Estes procedimentos/funções são criados em módulos de código VBA associados a planilha. Quando uma destas funções/procedimentos for necessária, basta chamar a respectiva função/procedimento que o Microsoft Excel se encarrega de localizar a função/procedimento, passar os parâmetros necessários (se for o caso) e receber os resultados retornados, caso seja uma função.
Vamos a outro exemplo. O Excel tem centenas de funções internas, para realizar os mais variados tipos de cálculos e operações. Mas evidentemente que mesmo com um grande número de funções, não estão disponíveis funções para todos os cálculos que você necessitará na prática. Por exemplo, não existe uma função simples para cálculo de Imposto de Renda com base na faixa de salário. Usando programação VBA, você pode criar uma função para cálculo do IRPF e utilizá-la em suas planilhas.
NOTA: Vamos falar um pouco mais sobre o termo Procedimento. Um procedimento é um grupo de instruções que pode ser chamado pelo nome atribuído ao procedimento. Neste contexto, funções e sub-rotinas e macros são tipos diferentes de procedimentos. Nesta e nas próximas lições você aprenderá mais sobre funções e sub-rotinas e verá alguns exemplos práticos.
O Escopo de Variáveis - Por Gentileza, Entenda, Bem, Este Conceito:
Nesta lição trataremos de um assunto de grande importância: Escopo de variáveis.
Quando você cria sub procedimentos e funções personalizadas é muito importante conhecer bem o conceito de Escopo de variáveis.
Conforme será visto nesta lição, o escopo define em que locais do código VBA uma determinada variável é válida e possui um valor associado a ela.
Criando Funções Personalizadas com VBA no Excel - Parte 1:
Nesta lição você aprenderá a criar funções personalizadas e a utilizá-las em suas planilhas.
Vou mostrar como criar uma função bastante simples. Será uma função para cálculo do imposto de renda Pessoa Física, com base na “Tabela Progressiva Anual Para Cálculo do Imposto”, publicada na página da Receita Federal: www.receita.fazenda.gov.br
Esta tabela é constantemente atualizada. Por isso, se for criar uma planilha de cálculo de Imposto de Renda, antes, consulte o site da receita, para usar os valores atualizados.
Cálculo do DV do CPF e do CNPJ - Como é o Algoritmo de Cálculo:
Nessa e nas próximas duas lições, veremos o uso do VBA para solucionar mais um exemplo prático.
Vamos criar uma função personalizada, chamada ValidaCPF. Em seguida usaremos essa função para fazer o cálculo do DV de um conjunto de CPFs. Observe que para a criação desta função, usaremos apenas os comandos e funções internas básicas do VBA, vistas nas lições anteriores deste módulo.
Importante: O algoritmo de cálculo do DV de CPFs e CNPJs é de domínio público, já tendo sido publicado no diário oficial da união e em diversas revistas de informática, finanças e negócios, de circulação nacional.
Nessa lição explicarei como funciona o cálculo do DV do CPF.
Cálculo do DV do CPF - Criando a Função ValidaCPF:
Nessa lição vamos criar uma função chamada ValidaCPF.
Essa função recebe, como parâmetro, um valor de CPF no formato 111.111.111-11 ou o endereço de uma célula que contém um CPF nesse formato.
A função retorna a palavra Válido se o CPF for Válido e Inválido se o CPF for inválido.
É importante salientar que a função que será criada nesta lição, só funcionará corretamente, se o CPF estiver no formato 111.111.111-11, ou seja, com os pontos e com o traço.
Para criar uma função que possa ser utilizada na planilha, devemos criar a função dentro de um Módulo do VBA, conforme descrito no exemplo de criação da função Calcula_IRPF, em uma das lições anteriores, neste curso.
Criaremos a função ValidaCPF, dentro do Módulo1 da planilha Números de CPF.xlsm. O link para download desta planilhas está no vídeo.
Cálculo do DVD do CPF - Como Usar a Função Valida CPF:
Nessa lição veremos como utilizar a função ValidaCPF, criada na lição Anterior.
Mais Exemplos de Criação de Funções Personalizadas com VBA no Excel:
Nesta lição apresentarei mais alguns exemplos de criação de funções personalizadas. É importante lembrar que para que uma função personalizada, possa ser utilizada em todas as planilhas de uma pasta de trabalho, esta função deve ser criada em um módulo de código do VBA, conforme exemplificado e, detalhadamente explicado, nas lições anteriores.
Nesta lição vamos criar duas funções que serão bastante úteis e que, com certeza, você utilizará nas planilhas que criar no Excel.
Para criar estas funções vou utilizar o objeto Range, para fazer referência a faixa de células onde estão os valores de dados a serem utilizados pelas funções.
Na tabela a seguir descrevo as funções que iremos criar nesta lição:
Função | Descrição | Parâmetro 1 | Parâmetro 2 | Parâmetro 2 |
Conta_Intervalo | Retorna o número de valores, de uma faixa de células, que estão dentro de um determinado intervalo. | Faixa onde estão os valores, onde será feita a contagem. | Valor do limite inferior da faixa. | Valor do limite superior da faixa. |
Soma_Intervalo | Soma os valores, de uma faixa de células, que estão dentro de um determinado intervalo. | Faixa onde estão os valores, onde será feita a soma. | Valor do limite inferior da faixa. | Valor do limite superior da faixa. |
Mais Exemplos de Criação de Funções Personalizadas com VBA no Excel:
Nesta lição mostrarei mais alguns exemplos de códigos de funções personalizadas que poderão ser úteis em suas planilhas.
Visão Geral do que Foi Visto Neste Curso:
Neste curso você aprendeu os fundamentos sobre Macros e sobre a programação VBA no Excel.
Eu mostrei exatamente o que é uma macro, o que é programação VBA, o ambiente de programação, as principais funções do VBA e como criar os primeiros programas e funções personalizadas.
Lição 01 – Uma Introdução às Macros
Lição 02 – O Que São Exatamente Macros??
Lição 03 – Conhecendo do que “é feito” uma Macro
Lição 04 – Administração de Macros
Lição 05 – Associando Botões com Macros
Lição 06 – Macros – Opções de Segurança
Lição 07 – Introdução ao VBA
Lição 08 – O Editor de Código VBA – Parte 1
Lição 09 – O Editor de Código VBA – Parte 2
Lição 10 – VBA – Declaração de Variáveis
Lição 11 – Cálculos e Operadores Aritméticos
Lição 12 – Estruturas If...Then e os Operadores de Comparação
Lição 13 – Estruturas For...Next, Do...While e Do...Until
Lição 14 – Funções de Tipo de Dados – Parte 1
Lição 15 – Funções de Tipo de Dados – Parte 2
Lição 16 – Funções de Conversão de Tipos – Parte 1
Lição 17 – Funções de Conversão de Tipos – Parte 2
Lição 18 – Funções para Tratamento de Texto
Lição 19 – Funções de Data e Hora e Matemáticas
Lição 20 - Módulos Procedimentos e Funções – Parte 1
Lição 21 - Módulos Procedimentos e Funções – Parte 2
Lição 22 – Criando Funções Personalizadas – Parte 1
Lição 23 – Cálculo do DV do CPF – Parte 1
Lição 24 – Cálculo do DV do CPF – Parte 2
Lição 25 – Cálculo do DV do CPF – Parte 3
Lição 26 – Mais Exemplos de Funções Personalizadas
Lição 27 – Mais Exemplos de Funções Personalizadas
Lição 28 – Conclusão
Módulo 02 – O Modelo de Objetos da Programação VBA no Excel
Nas lições deste módulo eu apresentarei o conceito mais importante quando se trata de programação VBA no Excel: “A Hierarquia de Objetos do Excel”.
Você verá que com o uso dos Objetos do Excel é possível acessar qualquer elemento de uma planilha. Apresentarei o primeiro objeto na Hierarquia de Objetos:
O Objeto Application. Este é, sem dúvidas, o conceito mais importante que você precisará dominar, e bem, sobre programação VBA no Excel.
Entendendo bem o conceito de objetos, hierarquia de objetos, métodos, propriedades e eventos de objetos, você dará um grande passo e tudo parecerá mais fácil.
Se você não entender bem este conceito, tudo parecerá mais difícil e confuso.
Por isso aqui vai a minha recomendação:
Estude com calma e assista estas lições quantas vezes forem necessárias, até não restarem mais dúvidas sobre o que são objetos, o que é a hierarquia de objetos do Excel e o que são métodos, propriedades e eventos de objetos.
Um objeto representa um elemento da planilha do Excel ou o próprio Excel. Por exemplo, o objeto mais “alto” na hierarquia de objetos é o objeto Application. Este objeto representa o próprio Excel, ou seja, o aplicativo Excel. Descendo um pouco mais na hierarquia temos o objeto Workbook.
O objeto Workbook representa uma pasta de trabalho do Excel. Dentro de uma pasta de trabalho (arquivo .xlsx ou .xlsm), podemos ter uma ou mais planilhas. As planilhas são representadas por objetos Worksheet.
Dentro de uma planilha posso ter dados em várias faixas de células da planilha. Uma faixa de células é representada pelo objeto Range. Para acessar uma faixa de Células você pode usar a propriedade Cells e assim por diante.
O parágrafo anterior serve para dar uma pequena ideia do que é possível de ser feito, usando a Hierarquia de Objetos do Excel na programação VBA. Literalmente é possível ter acesso a qualquer elemento de uma planilha do Excel.
Por exemplo, você poderia criar uma rotina que percorre todos os dados de uma ou mais planilhas de uma pasta de trabalho e coloca em negrito e fonte vermelha, todos os dados que atendam a determinadas condições. Ou você pode criar uma rotina que percorre uma faixa de células (Range) e exclui todas as linhas em branco.
Cada objeto da Hierarquia de objetos do Excel tem métodos e propriedades. Os métodos são utilizados para executar determinadas ações. Por exemplo, abrir uma planilha, ativar uma planilha, selecionar uma faixa de células, excluir uma faixa de células e assim por diante.
Os métodos estão sempre associados a ações e são representados, por isso, por verbos. As propriedades descrevem características dos objetos. Por exemplo, o objeto Range tem uma propriedade chamada Count, a qual retorna o número de células da faixa. As propriedades representam características dos objetos.
Neste módulo eu farei uma descrição do modelo de Objetos do Excel, apresentarei uma visão geral do modelo, bem como uma descrição da sintaxe para uso de métodos e propriedades de um objeto.
Também farei um estudo detalhado do objeto Application.
Você aprenderá a utilizar uma série de métodos e propriedades do objeto Applications. Também mostrarei o conceito de coleções e como utilizar as coleções do objeto Application. Além dos exemplos teóricos, para ilustrar o uso dos métodos e propriedades do objeto Application, também apresentarei uma série de exemplos práticos, para ilustrar a utilização do objeto Application.
Se eu tivesse que resumir a importância deste módulo, resumiria no fato de entender o que é um modelo de Objetos, principalmente o modelo de objetos do Excel.
Não se preocupe em decorar métodos e propriedades, pois, conforme mostrarei, o próprio Excel fornece ferramentas para que possamos encontrar ajuda, rapidamente, sobre os métodos e propriedades de qualquer objeto. E evidentemente que eu mostrarei como utilizar estas ferramentas.
Entendendo Hierarquia de Objetos, Bibliotecas, Métodos, Propriedades e Coleções:
Uma Hierarquia/Modelo de Objetos, como a do Excel, formada por vários objetos, cada um deles com dezenas (alguns com centenas) de métodos e propriedades, também é conhecida como uma Biblioteca.
Nesta lição vamos entender exatamente o que são e como se relacionam, os seguintes itens: Bibliotecas, Objetos, Propriedades, Métodos, Coleções.
Os diversos objetos disponíveis estão agrupados em Bibliotecas.
Uma Biblioteca é um conjunto de objetos que são utilizados para uma determinada função/atividade. Por exemplo, todos os objetos para acesso a dados são agrupados em uma biblioteca chamada DAO - Data Access Objects. Existe outra biblioteca para acesso a dados, conhecida como ADOx - Activex Data Objects. Existe a biblioteca com os diversos objetos do Microsoft Excel 14.0 Object Library, que é a biblioteca principal de objetos do Excel 2010 e assim por diante.
Existem dezenas de bibliotecas disponíveis. Isso demonstra bem o poder da utilização do VBA em conjunto com os Objetos/Bibliotecas disponíveis.
Em cada Biblioteca estão disponíveis dezenas/centenas de objetos. Cada objeto é utilizado para um conjunto de ações específico. Por exemplo: O objeto RecordSet é utilizado para acessar dados de uma tabela de um banco de dados do Access ou do SQL Server. Uma vez criado um objeto RecordSet, podemos realizar uma série de operações sobre os diversos registros da tabela associada ao objeto. Um objeto Range é utilizado para fazer referência a uma faixa de células em uma planilha do Excel. Uma vez criado o objeto Range, podemos utilizar os diversos métodos e propriedades deste objeto.
Cada objeto possui um conjunto de métodos, propriedades e coleções. Um método realiza uma operação específica, como por exemplo, o método Calculate, do objeto Range. Este método é utilizado para recalcular as células na faixa representada pelo objeto Range.
No código VBA, utilizamos a seguinte sintaxe, para fazer acesso aos métodos e propriedades de um objeto:
NomeDoObjeto.NomeDoMétodo(par1, par2, ..., parn)
Por exemplo, para utilizar o método Quit, de um objeto Application, atribuído a variável ExApp, utilizaríamos a seguinte sintaxe:
ExApp.Quit
Uma propriedade descreve uma característica do objeto. Por exemplo, temos uma propriedade do objeto Range, chamada Count, a qual retorna o número de células de um objeto Range. Por exemplo, para atribuir à variável quantos, o número de células de um objeto Range, associado a variável ExRange, utilizamos a seguinte sintaxe:
quantos = ExRange.Count
Uma coleção é um conjunto de elementos do mesmo tipo. Por exemplo, todo banco de dados do Microsoft Access, possui uma coleção chamada Forms. Através desta coleção podemos ter acesso a todos os Formulários do banco de dados. Toda planilha do Excel tem uma coleção chamada Worksheets. Através dessa coleção temos acesso a todas as planilhas de uma pasta de trabalho do Excel (arquivo .xlsx ou .xlsm) e assim por diante.
Podemos percorrer todos os elementos de uma coleção, utilizando a estrutura de Controle For...Each, que será tratada, na prática, nas próximas lições. A estrutura For...Each é utilizada para "percorrer" todos os elementos de uma coleção. Por exemplo, se quisermos percorrer todos os elementos da coleção Worksheets de uma pasta de trabalho do Excel, exibindo o nome de cada planilha, devemos utilizar a estrutura For/Each, para percorrer todos os elementos da coleção Worksheets, exibindo o nome de cada um dos elementos.
Um Excelente Estudo a Todos!
VBA – Principais Objetos – Descrição
Nesta lição farei uma breve descrição dos principais objetos do Modelo de Objetos do Excel.Ter uma visão geral dos principais objetos é importante, principalmente para se ter um entendimento preciso de quando utilizar cada um dos objetos para solucionar problemas práticos.
Ao descrever os principais objetos, apresentarei pequenos exemplos de código, apenas para ilustrar o uso destes objetos.
Não se preocupe em utilizar estes códigos agora. O objetivo, nesta lição, é apenas didático, para mostrar a sintaxe dos comandos. Nas demais lições deste curso você aprenderá, em detalhes, a utilizar os métodos e propriedades destes objetos, através de exemplos práticos.
VBA - Navegando na Hierarquia de Objetos - O Navegador de Objetos
Nesta lição mostrarei como utilizar o recurso Object Browser (Navegador de Objetos).Este recurso está disponível no ambiente de programação do VBA. Utilizando o Objetct Browser é possível selecionar uma biblioteca para que sejam exibidos somente os objetos da biblioteca selecionada.
Em seguida você pode clicar em um dos objetos disponíveis. Serão exibidos todos os métodos e propriedades do referido objeto.
Aí você pode selecionar um método e/ou propriedade e pressionar a tecla F1 para obter ajuda sobre o método e/ou propriedade selecionado.
Em resumo, o Object Browser é uma maneira de navegar através das bibliotecas de programação disponíveis, bem como através dos objetos disponíveis em cada biblioteca e dos métodos e propriedades de cada objeto e obter mais informações sobre o item selecionado.
No Vídeo eu mostrarei um exemplo prático de utilização do Object Browser.
O Objeto Application - Uma Visão Geral
Nesta lição vamos iniciar o estudo detalhado, dos principais objetos do Modelo de Objetos do Excel. Iniciaremos este estudo pelo objeto Application, o qual, conforme já descrito anteriormente, representa o próprio Excel.
O objeto Application tem, ao todo, 218 propriedades e métodos. Quando trabalhamos dentro de uma planilha do Excel, não é preciso a criação explícita de um objeto Application.
Por exemplo, se dentro do código, quisermos fazer referência a uma determinada célula, não precisamos criar um objeto Application, depois um objeto Workbook, depois um objeto Worksheet para, finalmente, poder acessar as células de uma planilha usando um objeto Range ou a propriedade Cells.
Ao invés disso, podemos fazer referência direta à célula desejada. Com isso o Excel supõe que estamos trabalhando com a instância atual do Excel, dentro da pasta de trabalho atual (arquivo .xlsx ou .xlsm), dentro de uma das suas planilhas, o que é bastante razoável. Apenas teríamos que criar toda essa hierarquia de objetos, se quiséssemos fazer referência a uma célula de uma planilha de uma pasta de trabalho externa.
Nessa lição farei uma introdução ao objeto Application. Nas próximas lições estudaremos, em detalhes, os métodos e propriedades do objeto Application.
Nesta lição mostrarei como declarar uma variável como sendo do tipo Application e como inicializá-la, usando código VBA. Vou demonstrar a declaração e utilização do objeto Application, através de exemplos práticos.
Exemplo: Considere o trecho de código a seguir:
Public Sub TesteApp()
Dim App As Application
Set App = Excel.Application
'Exibe algumas propriedades do objeto Applicaton.
MsgBox "Impressora padrão: " & App.ActivePrinter
MsgBox "Versão do Excel: " & App.Build
MsgBox "Onde está instalado o Excel: " & App.Path
End Sub
Veja detalhes no Vídeo...
Nesta lição vamos iniciar um estudo detalhado, dos principais métodos e propriedades do objeto Application. Faremos este estudo utilizando pequenos trechos de código, os quais ilustram a utilização dos métodos e propriedades do objeto Application.
IMPORTANTE: Para testar estes pequenos trechos de código basta abrir o Excel, acessar o editor de código VBA (Alt+F11), criar um procedimento e inserir o código do exemplo dentro do procedimento. Depois é só colocar o cursor em qualquer linha do procedimento e pressionar a tecla F5 para executá-lo. Todos os detalhes sobre como criar um procedimento e executá-lo estão nas lições de Introdução ao VBA, no Capítulo 1. Em caso de dúvidas, volte e revise as primeiras lições do Módulo 01.
Nesta lição você aprenderá a utilizar alguns métodos e propriedades os quais são utilizados para alterar a visualização das planilhas do Excel, tais como a propriedade DisplayAlerts, que suprime ou ativa as mensagens de aviso e a propriedade DisplayFormulaBar, a qual é utilizada para exibir ou ocultar a barra de fórmulas.
Nesta lição você aprenderá a utilizar alguns métodos e propriedades, utilizados para habilitar e/ou desabilitar recursos do Excel.
Por exemplo, existe uma propriedade que habilita/desabilita eventos, outro que habilita/desabilita sons e assim por diante.
Nesta lição mostrarei como é possível associar uma função e/ou procedimento a uma combinação especial de teclas, como por exemplo Ctrl+Ç. Ou seja, você pode configurar o Excel, para que execute um procedimento ou função, toda vez que o usuário pressionar uma combinação especial de teclas.
Também é possível fazer com que seja executada uma função ou procedimento em um tempo programado.
A associação de uma função e/ou procedimento, com uma combinação de teclas é feito usando o método Onkey, do objeto Application, o qual estudaremos logo a seguir.
Nesta lição você aprenderá a utilizar alguns métodos e propriedades do objeto Application, para trabalhar com arquivos do Excel.
Veremos que existe desde uma propriedade que define a pasta padrão para os arquivos do Excel (pasta que é selecionada, automaticamente, quando você usa os comandos Guia Arquivo -> Abrir, Salvar ou Salvar como...), até métodos para exibir uma caixa de diálogo para que o usuário selecione um arquivo e que retorna o nome deste arquivo, juntamente com o caminho completo.
Por padrão, o Excel faz o recálculo automático das planilhas. Sempre que o valor de uma célula é alterado, todas as fórmulas que dependem do valor que foi alterado são recalculadas, para exibir os valores atualizados.
Você pode controlar a maneira como o Excel faz o recálculo, usando o Guia Arquivo -> Opções. Será aberta a janela Opções do Excel. Nas opções no painel da esquerda clique em Fórmulas. Na janela que é exibida, bem na parte de cima, você tem a opção Cálculo da Pasta de trabalho. Por padrão vem marcada a opção Automático, ou seja, o recálculo é feito, automaticamente, sempre que houver mudanças em um ou mais valores da planilha.
Para desabilitar o cálculo automático você deve marcar a opção manual e clicar em OK. Por exemplo, para planilhas muito grandes, o recálculo automático pode fazer com que você tenha que esperar vários minutos após alterar um determinado valor.
Nestas situações, pode ser vantagem desabilitar o recálculo automático. Aí você altera os valores necessários e depois pressiona a tecla F9 para forçar um recálculo de toda a planilha.
Nas lições do Módulo 1, você aprendeu os conceitos básicos para a criação de funções e procedimentos personalizados. Apresentei inclusive alguns exemplos simples, de criação de funções personalizadas, como por exemplo uma função para cálculo do Imposto de Renda e uma função para cálculo do DV do CPF. Nas demais lições deste módulo, apresentarei uma série de conceitos avançados sobre a criação de Procedimentos e Funções, sobre o uso de Procedimentos e Funções e sobre o tratamento de erro no VBA.
Dica: Não existe limite para o número de linhas de código que pode haver em um procedimento ou função. Porém uma boa prática de programação é não criar procedimentos ou funções muito extensos. Sempre que possível é indicado que você crie procedimentos ou funções para executar tarefas específicas, ou seja, dividir um problema maior em etapas menores e implementar um procedimento ou função para solucionar cada etapa específica. Depois você pode criar um procedimento principal, no qual você chama os diversos procedimentos/funções auxiliares, para solucionar as diversas etapas do problema.
Nesta e nas próximas lições você aprenderá mais detalhes sobre a declaração de argumentos e sobre a passagem de parâmetros para um sub procedimento e/ou função.
Na última lição eu falei um pouco mais sobre a declaração de parâmetros, tipo de parâmetros e tipo de retorno de uma função.
Você também acompanhou, passo a passo, a criação de uma função Personalizada – SomaEsperta, e depois aprendeu a utilizar esta função. Esta é uma técnica importante, pois apesar de o Excel disponibilizar milhares de funções prontas, que já fazem parte do Excel, evidentemente que não existem funções prontas no Excel, capazes de atender todas as necessidades de cálculo do dia-a-dia.
Por isso a criação de funções personalizadas, com o uso do VBA, abrem-se novas e amplas perspectivas no uso de Excel. Nesta lição continuaremos o estudo sobre funções e sub procedures no Excel.
Na lição anterior você aprendeu sobre a utilização de parâmetros Opcionais em procedimentos e funções do VBA. Você viu que para definir um parâmetro como Opcional, utilizamos a palavra chave Optional. Você também aprendeu sobre a lógico do uso da função IsMissing, para determinar se um parâmetro opcional foi ou não definido. A questão que fica é como utilizar este procedimento.
Existem diferentes maneiras para a execução deste procedimento. Vou optar por criar um segundo procedimento, chamado ExMudaSelecao, no qual farei diversas chamadas ao procedimento MudaSelecao, usando diferentes valores para os seus argumentos. Em seguida executarei o procedimento ExMudaSelecao, diretamente a partir do editor do VBA.
Nesta lição aprenderemos sobre os chamados argumentos nomeados. Você deve ter observado, dos exemplos anteriores, que ao definir uma lista de argumentos para uma função/procedimento, estes argumentos tem que ser informados, quando da chamada da função/procedimento, na mesma ordem em que foram declarados. Como alternativa tínhamos os argumentos opcionais, normalmente declarados no final da lista, e que, por serem opcionais, poderão ser omitidos na chamada da função/procedimento, conforme exemplo da Lição anterior.
Considere o exemplo a seguir:
Public Function CalculaImposto(BaseDeCálculo as Double, Percentual As Double)
Esta função tem dois parâmetros, obrigatórios, os quais devem ser chamados, na ordem em que foram declarados. A seguir temos um exemplo, onde o valor das variáveis Base e Taxa foram passadas na chamada da função:
ParaPagar = CalculaImposto(Base, Taxa)
Este tipo de argumento é conhecido como Argumento Posicional, pois é a posição do argumento, na chamada da função/procedimento, que define a qual argumento se refere o valor passado. No exemplo anterior, o valor da variável Base, será atribuído ao argumento BaseDeCálculo devido á sua posição: primeira na chamada, que corresponde ao primeiro argumento declarado na criação da função. O valor da variável Taxa, será atribuído ao argumento Percentual, que corresponde ao segundo argumento declarado na criação da função. Observem que o nome do argumento declarado pode ser diferente do nome da variável passada como parâmetro. Poderíamos nem mesmo utilizar uma variável, mas sim diretamente passar valores como parâmetros, conforme exemplo a seguir:
ParaPagar = CalculaImposto(35230, 27.5)
O VBA permite a utilização dos chamados Argumentos nomeados, ou seja, é possível atribuir um nome para um ou mais argumentos. A vantagem de utilizar argumentos nomeados é que, quando da chamada da função/procedimento, podemos passar os argumentos em qualquer ordem, desde que informemos o nome do argumento. A sintaxe para utilização de argumentos nomeados é um pouco diferente da sintaxe para argumentos padrão e será discutida nesta lição.
Você já aprendeu que ao declarar uma função ou procedimento, é possível declarar um ou mais argumentos. Ao utilizar uma função ou procedimento, você deve informar os valores para os argumentos, na mesma ordem em que foram definidos durante a declaração da função ou procedimento. Este processo é conhecido como passagem de parâmetros para a função ou procedimento, ou seja, ao chamar a função ou procedimento, passamos valores que serão utilizados pelo código da função ou procedimento.
Existem duas maneiras diferentes de fazer a passagem dos parâmetros e é importante para o programador, entender exatamente a diferença entre estas duas maneiras:
Este conceito é muito importante e vamos entendê-lo através de alguns exemplos simples. Inicialmente vamos ver o que acontece quando utilizamos o tipo de passagem padrão, que é o tipo ByVal, onde apenas o valor do parâmetro é passado para a função/procedimento.
Em diversos exemplos das lições anteriores, utilizamos a função MsgBox para exibir uma janela com uma mensagem. Sempre utilizamos a função MsgBox de uma maneira básica, para exibição de trechos de texto e valor de variáveis, concatenando as partes da mensagem com o operador &. Nesta lição faremos um estudo mais detalhado da função MsgBox.
O funcionamento básico da função MsgBox é exibir uma mensagem em uma caixa de diálogo e aguardar que o usuário clique em um botão. A função retorna um valor do tipo Integer, valor este que indica qual botão o usuário clicou.
A função InputBox exibe uma janela com uma mensagem e um campo para que o usuário digite um valor ou uma entrada de texto. Também são exibidos botões tais como OK e Cancelar. O valor digitado pelo usuário será o valor de retorno da função. O principal uso da função InputBox é permitir que o usuário digite informações e retornar o valor digitado pelo usuário para ser usado pela rotina de programação VBA que exibiu o InputBox.
Por exemplo, você poderia ter uma planilha que faz uma série de cálculos, os quais dependem da cotação diária do dólar. Neste caso você poderia colocar uma função InputBox, associada ao evento ao Abrir da planilha (um dos assuntos deste módulo será sobre os eventos do Excel), de tal maneira que toda vez que a pasta de trabalho for aberta, será exibida uma caixa de diálogo, solicitando que você digite a cotação atual do dólar em relação ao Real. Com base neste informação, todas as planilhas são recalculadas e exibem valores atualizados, com base na última cotação fornecida pelo usuário.
Existem diferentes tipos de erros que podem ser gerados em uma rotina de programação VBA.
Erros de sintaxe: O primeiro e mais óbvio é o erro de sintaxe, onde um comando é digitado incorretamente. Por exemplo, ao invés de uma vírgula (,) você digita um ponto-e-vírgula (;) e vice-versa. Este tipo de erro é o mais simples de detectar, pois o próprio ambiente de programação do VBA emite uma mensagem, quando um comando é digitado incorretamente (com erro de sintaxe)
Erros de lógica: Um segundo tipo de erro, este o mais difícil de ser detectado, são os chamados erros lógicos. Este tipo de erro é difícil de ser detectado porque o programa executa normalmente, sem ser emitida nenhuma mensagem de erro, porém os resultados obtidos estão incorretos. Este tipo de erro pode ter inúmeras e diferentes causas. Por exemplo, você pode ter inserido uma fórmula incorretamente, pode ter errado na criação de um teste condicional, trocando um sinal de maior (>) por um de menor (<) ou vice-versa. Para localizar este tipo de erro você tem que utilizar os recursos de execução passo a passo, disponíveis no Editor de Código VBA, os quais serão descritos nas próximas lições.
Erros de compilação: Alguns erros não tem como ser detectados pelo editor do VBA como sendo erros de sintaxe, pois são comandos que não estão em uma única linha. Por exemplo, você pode ter iniciado um laço Do, sem ter encerrado o laço com um Loop ou pode ter iniciado um laço For...Each, sem ter encerrado o laço com um comando Next. Estes erros somente são detectados quando o código é executado, ou seja, durante a primeira compilação do código VBA. Antes de executar, o VBA compila o código, ao compilar detecta o erro e exibe uma mensagem.
Erros em tempo de execução: Existem determinados tipos de erros que podem ocorrer dependendo de condições externas. Por exemplo, se você criou uma rotina VBA para importar dados de um arquivo de texto para uma planilha do Excel e este arquivo de texto fica disponível em um drive de rede. Ao executar esta rotina, o computador deve ter acesso ao referido drive de rede. Se o computador tiver acesso ao drive de rede, a rotina será executada normalmente. Se por algum motivo o computador perder o acesso à rede e a rotina for executada enquanto o computador estiver sem acesso à rede, será gerado um erro em tempo de execução. Outro exemplo de erro em tempo de execução é de uma rotina que foi programada para ler dados em um arquivo no pendrive e a rotina é executada sem que um pendrive esteja inserido na porta USB. Estes erros são chamados de erros em tempo de execução, porque somente serão detectados durante a execução do código VBA, não sendo possível detectá-los antes. Os erros em tempo de execução é que são candidatos ao tratamento de erros. Por exemplo, no código VBA, você pode prever o fato de o usuário não ter colocado o pendrive na porta USB. Neste caso, você deve usar um tratamento de erro eficiente, o qual exibe uma mensagem informando que o pendrive deve ser inserido e dando a opção de o usuário clicar em OK para continuar, ao invés de simplesmente encerrar o procedimento com uma mensagem de erro. Ou seja, o tratamento de erros é utilizado para contornar situações onde o erro foi gerado devido a uma condição externa que pode ser contornada (como por exemplo o fato de o usuário não ter inserido um pendrive na porta USB).
Nesta lição apresentarei alguns exemplos práticos e técnicas de utilização da instrução OnError, para o tratamento de Erros.
Nesta lição apresentarei alguns exemplos práticos e técnicas de utilização da instrução OnError, para o tratamento de Erros.
Nesta lição você aprenderá um dos recursos que eu considero mais importantes e mais úteis para a depuração de erros e, principalmente, para a detecção de erros lógicos: “A execução passo a passo e o acompanhamento dos valores de variáveis.”
Na lição anterior você aprendeu a executar um procedimento passo a passo, usando a tecla de função F8. Nesta lição você aprenderá como definir quais variáveis terão seu valor monitorado, a medida que o código é executado passo a passo. Este recurso é útil para detectar variáveis que não foram inicializadas corretamente ou para identificar expressões de cálculos com erros lógicos, as quais acabam por gerar resultados incorretos.
Vamos entender como fazer o acompanhamento das variáveis, através de um exemplo prático, no qual utilizarei um procedimento que recebe, como parâmetros, o valor dos lados de um retângulo e calcula e exibe o valor da área, do perímetro e da diagonal do retângulo.
Nesta lição iremos executar o procedimento CalcRetangulo, passo a passo, para acompanharmos como funciona a inspeção de variáveis. Você deve estar com o editor VBA ainda aberto, o qual foi utilizado na última lição.
Neste módulo tratamos de uma série de assuntos de fundamental importância para a programação VBA no Excel 2010. Iniciamos o capítulo falando sobre o Modelo de Objetos do Excel.
Este é um conceito de fundamental importância e entendê-lo faz toda a diferença para poder programar com eficiência usando VBA no Excel.
Em seguida detalhamos uma série de tópicos sobre a criação de funções/procedimentos, declaração de argumentos e passagem de parâmetros. Para encerrar o capítulo abordamos sobre o tratamento de erros e os recursos de depuração do Editor do VBA.
No próximo módulo você aprenderá sobre o objeto mais utilizado na programação VBA no Excel: “O Objeto Range”.
Módulo 02 - O Modelo de Objetos do Excel:
Lição 01 – O Que é um Modelo/Hierarquia de Objetos?
Lição 02 – Principais Objetos – Descrição
Lição 03 - Navegando na Hierarquia de Objetos
Lição 03 –Objeto Application – Introdução
Lição 05 – Objeto Application – Utilização
Lição 06 – Objeto Application – Objetos Filho
Lição 07 – Objeto Application – Exibindo/Ocultando
Lição 08 – Objeto Application – Habilitando e Desabilitando Recursos do Excel
Lição 09 – Associando Macros à Teclas Especiais
Lição 10 – Obj. Application – Operações com Arquivos
Lição 11 – Obj. Application – Recálculo de Planilhas
Lição 12 – Criação de Funções e Procedimentos – Tópicos Avançados – Parte 1
Lição 13 – Criação de Funções e Procedimentos – Tópicos Avançados – Parte 2
Lição 14 – Criação de Funções e Procedimentos – Tópicos Avançados – Parte 3
Lição 15 – Criação de Funções e Procedimentos – Tópicos Avançados – Parte 4
Lição 16 – Criação de Funções e Procedimentos – Tópicos Avançados – Parte 5
Lição 17 – Criação de Funções e Procedimentos – Tópicos Avançados – Parte 6
Lição 18 – A Função MsgBox em Detalhes
Lição 19 – A Função InputBox em Detalhes
Lição 20 – Tratamento de Erros no VBA – Parte 1
Lição 21 – Tratamento de Erros no VBA – Parte 2
Lição 22 – Tratamento de Erros no VBA – Parte 3
Lição 23 – Tratamento de Erros no VBA – Parte 4
Lição 24 – Tratamento de Erros no VBA – Parte 5
Lição 25 – Tratamento de Erros no VBA – Parte 6
Lição 26 – Conclusão
No próximo capítulo faremos um estudo detalhado do objeto Range. Este objeto representa uma ou mais faixas de células em uma planilha do Excel. Já dá para ver que, sem nenhuma dúvida, o objeto Range é o objeto mais utilizado na programação VBA no Excel. Também apresentarei diversos exemplos práticos de utilização do objeto Range.
Apresentação do Objeto Range
Vamos fazer uma rápida recapitulação de como é a hierarquia de objetos do Modelo de Objetos do Excel? Vamos lá.
· Objeto Application: O objeto de nível mais alto é o objeto Application, o qual representa a própria aplicação do Excel, ou seja, Application = Excel. Por exemplo, quando você abre o Excel, é criada uma instância do objeto Application, na memória do computador.
· Objeto Workbook: O objeto Workbook representa uma pasta de trabalho do Excel, ou seja, um arquivo .XLSX ou XLSM. Por exemplo, você pode abrir o Excel (objeto Application) e abrir um ou mais arquivos .XLSX ou XLSM (objetos Workbook). Por isso que o objeto Application, tem uma coleção chamada Workbooks, ou seja, uma coleção que contém uma referência a todas as pastas de trabalho abertas. Em resumo: Pasta de Trabalho = Arquivo .XLSX ou XLSM = objeto Workbook.
· Objeto Worksheet: Dentro de uma mesma pasta de trabalho (arquivo .XLSX ou .XLSM – estou sendo repetitivo para fixar os conceitos), pode haver várias planilhas (objetos Worksheet). Por padrão, ao criar uma nova pasta de trabalho, são criadas, dentro da nova pasta de trabalho, três planilhas: Plan1, Plan2 e Plan3. O objeto Worksheet é utilizado para fazer referência a uma planilha de uma pasta de trabalho. Por isso que o objeto Workbook (pasta de trabalho), contém uma coleção chamada Worksheets (planilhas), através da qual é possível fazer referência a todas as planilhas da pasta de trabalho atual.
· Objeto Range: Em cada planilha de uma pasta de trabalho, está disponível um grande número de células. Na verdade, no Excel 2010, estão disponíveis: 17.179.869.184 células (resultado da multiplicação do número de linhas (1048576) pelo número de colunas (16384). Para representar um intervalo da planilha, por exemplo de A1 até C100, é utilizado o objeto Range. Em resumo Range = uma faixa de células de uma planilha.
Após termos situado exatamente a posição do objeto Range, na hierarquia de objetos do Excel, podemos iniciar o estudo deste objeto. Nesta lição mostrarei que existem inúmeras maneiras diferentes de criar um objeto Range, usando programação VBA.
Muito bem, vamos então fazer um estudo completo do objeto Range?
Declarando um objeto Range:
Existem diferentes opções que retornam um objeto Range. Por exemplo, a propriedade Range, que está disponível nos objetos Application e Worksheet, é uma das maneiras de retornar um objeto Range.
Outra forma de retornar um objeto Range é utilizar a propriedade Cells do Objeto Application. A propriedade Cells retorna um objeto Range representando todas as células da planilha ativa. Se o documento ativo não for uma planilha (por exemplo, se for uma folha de gráfico), essa propriedade falhará. Esta propriedade é do tipo “Somente leitura”.
Você também pode utilizar a propriedade Cells do objeto Range. Neste caso, a propriedade Cells retorna um objeto Range representando as células do intervalo especificado. Somente leitura.
Também está disponível uma propriedade Cells no objeto Worksheet. Neste caso, a propriedade Cells retorna um objeto Range representando todas as células da planilha (não apenas as células atualmente em uso). Somente leitura.
Em resumo, existem diversas maneiras para criar um objeto Range no código VBA. Muito melhor do que as explicações teóricas é vermos diversos exemplos práticos. Nesta lição apresentarei alguns exemplos simples de declaração de um objeto Range. Na próxima lição apresentarei mais exemplos de criação de um objeto Range.
Nesta lição falarei um pouco mais sobre como funciona a propriedade Cells, do objeto Range e como acessar células específicas, dentro de uma faixa, usando os índices da propriedade Cells.
Nesta lição continuarei a mostrar diferentes maneiras para retornar um objeto do tipo Range, no código VBA.
Uma faixa (Range) é formada por uma ou mais linhas e uma ou mais colunas. Com isso o objeto Range oferece propriedades e coleções para trabalhar diretamente com uma linha ou coluna do objeto Range.
Nesta e na próxima lição faremos o estudo dos seguintes itens:
Propriedade Column
Coleção Columns
Propriedade Row
Coleção Rows
Nesta lição apresentaremos a descrição e exemplos de uso da propriedade Row e da coleção Rows, do objeto Range.
Nesta lição continuaremos a estudar uma série de propriedades, métodos e coleções do objeto Range. Na parte final do módulo, apresentarei uma série de exemplos práticos, baseados no objeto Range e no uso das propriedades, métodos e coleções que estudaremos nestas e nas próximas lições.
Nesta lição continuaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
Nesta lição continuaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
Nesta lição continuaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
Nesta lição continuaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
O Método FindNext:
O método FindNext é utilizado para continuar uma pesquisa que tenha começado com o método Find.
Este método localiza a próxima célula que coincida com as mesmas condições que foram definidas para a última execução do método Find e retorna um objeto Range representando essa célula.
Não afeta a seleção da célula ativa.
Nesta lição continuaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
O Método FindPrevious:
Este método é utilizado para continuar uma pesquisa que tenha começado com o método Find.
Localiza a célula anterior que coincida com as mesmas condições e retorna um objeto Range representando essa célula.
Não afeta a seleção da célula ativa.
Nesta lição continuaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
O Método Sort:
Este método é utilizado para classificar uma faixa associada com o objeto Range.
Se não for especificada uma faixa, será classificada a região atual, na qual está a célula ativa. Antes de entendermos a sintaxe do método Sort, vamos apresentar um exemplo prático, o que facilitará o entendimento deste método, dos seus parâmetros e da sua sintaxe.
Também vamos estudar o Método Replace, em detalhes.
O Método TextToColumn:
Este método analisa uma coluna de células contendo texto, dividindo-o em várias colunas.
Este método é bastante útil em situações onde você importou dados de um arquivo de texto, onde os dados no arquivo de texto estavam fora do padrão, impedindo que as colunas fossem importadas individualmente.
Neste caso, após a importação, você usa o método TextToColumn, para separar o texto que está em uma única coluna, em várias colunas. Antes de aprendermos a sintaxe completa deste método, vamos ver um exemplo prático.
Nesta lição finalizaremos o estudo dos principais métodos, propriedades e coleções do objeto Range.
A partir desta lição, até o final deste módulo, apresentarei uma série de exemplos práticos, de utilização do objeto Range.
Nos exemplos mostro como usar o objeto Range no VBA, para a resolução de uma série de problemas práticos, do dia-a-dia.
Com certeza você encontrará exemplos úteis, que irão ajudá-lo a resolver problemas que você está enfrentando com o uso do Excel.
Nesta lição vamos ver um exemplo de uma macro que solicita ao usuário que seja digitado um valor.
Em seguida, a macro irá procurar em todas as planilhas de todas as pastas de trabalho abertas, por células que contém o valor digitado e irá colocar estas células em destaque, alterando a cor de fundo destas células. Inicialmente vamos apresentar o código.
Em seguida vamos vê-lo em funcionamento e por último apresentar alguns comentários para esclarecer o funcionamento do código.
Nesta lição vamos continuar com mais alguns exemplos de uso do objeto Range e de técnicas relacionadas a operações em linhas de dados na planilha.
Exemplo 01: Neste exemplo mostrarei como fazer a exclusão de linhas, baseado em um ou mais critérios de pesquisa. Esta técnica também é conhecida como Exclusão Condicional.
[IMPORTANTE]: Sempre que for feita a exclusão de linhas, usando código VBA, é importante que você faça um laço para percorrer todas as linhas, porém no sentido contrário ao tradicional, ou seja, de baixo para cima. Esta técnica evita que linhas que atendam ao critério de busca sejam descartadas. Por exemplo, vamos supor que você está percorrendo um laço no sentido normal, ou seja, da primeira para a última linha. Agora imagine que a linha 2 atendo ao critério selecionado. Neste caso, a linha dois será excluída e a linha 3 passará a ser a linha 2, a linha 4 passará a ser a linha 3 e assim por diante. Porém imagine que a antiga linha 3, agora linha 2 depois da exclusão, também atenda ao critério. Neste caso esta linha (antiga linha 3, atual linha 2, não será excluída), pois a pesquisa continuará na linha 3 (antiga linha 4). Isso faz com que uma ou mais linhas que atendam aos critérios, não sejam excluídas. Fazendo o laço no sentido contrário, este problema é contornado.
Exemplo: Neste exemplo mostrarei como verificar se a seleção efetuada pelo usuário é composta de uma única coluna ou de uma única linha. Esta técnica é útil quando, como parte da entrada de dados de um programa no Excel, o usuário deve selecionar uma faixa de dados que seja uma única coluna ou uma única linha. Neste caso, se a seleção não for uma única linha ou uma única coluna, você pode emitir uma mensagem, solicitando que o usuário refaça a seleção. Isso evita erros.
Nesta lição apresentarei alguns exemplos de utilização do objeto Range, para a solução de situações práticas envolvendo colunas no Excel.
Nesta lição apresentarei alguns exemplos de utilização do Objeto Range para operações de Editar, Copiar e Colar linhas e colunas.
Também apresentarei alguns exemplos do uso do VBA e do objeto Range, para acessar e definir o valor de células em uma planilha do Excel.
Nesta lição apresentarei mais alguns exemplos práticos de utilização do Objeto Range.
Nesta lição apresentarei mais alguns exemplos práticos de utilização do Objeto Range.
Você aprenderá a usar o código VBA para definir fórmulas em uma ou mais células.
Nesta lição apresentarei mais alguns exemplos práticos de utilização do Objeto Range.
Nos exemplos desta lição você aprenderá a determinar os limites de uma faixa, tal como detectar qual a última entrada em uma linha ou coluna.
Resumo e Visão Geral do Módulo 03
Nas lições deste módulo você aprendeu a trabalhar com o objeto que realmente faz o trabalho no Excel: Objeto Range.
Falando de uma maneira bem simples, o objeto Range representa uma ou mais faixas de células em uma planilha do Excel. Como a grande maioria do trabalho (para não dizer a totalidade) com o Excel está relacionado a valores em uma faixa de células, fica clara a importância do objeto Range.
Macros e Programação VBA no Excel - Curso Básico e Prático!
Este é um Curso de Programação VBA no Excel, para Quem Não sabe Nada de Programação VBA e quer Aprender Passo a Passo.
Introdução:
Existem situações onde não conseguimos resolver o problema proposto, simplesmente utilizando os comandos e fórmulas do Excel. Nessas situações temos que fazer o uso de recursos mais avançados, tais como Macros e Programação VBA.
A linguagem de programação do Excel é o VBA – Visual Basic for Applications.
O VBA é a linguagem de programação para todos os aplicativos do Microsoft Office: Word, Excel, Access e PowerPoint.
Nas lições deste curso você aprender os fundamentos sobre Macros e Programação VBA no Excel.
As lições deste curso se aplicam a qualquer versão do Excel!
Você vai aprender sobre o que é uma Macro, para que serve uma Macro, quando devemos usar Macros, como criar e alterar Macros.
Em seguida você aprenderá os fundamentos básicos da linguagem de Programação VBA.
Serão apresentados os conceitos teóricos da linguagem VBA e os comandos básicos, para que você possa criar programas simples e úteis.
Neste curso você aprenderá os fundamentos sobre Macros e Programação VBA no Excel.
O Curso aborda todos os conhecimentos iniciais, necessários, para que você possa começar sua carreira como Programador VBA e, o principal, possa utilizar o VBA para resolver problemas práticos do seu dia a dia, os quais, sem o uso do VBA, ficariam sem solução.
Mostrarei exatamente o que é uma macro, o que é programação VBA, como é o ambiente de programação do VBA (o Editora VBA), as principais funções internas do VBA e como criar as primeiras rotinas em programação VBA no Excel.
Vou iniciar o Curso mostrando como criar uma macro e como verificar o Código VBA que é criado e associado com a macro, o qual na prática é quem “faz o trabalho” da macro. Também mostrarei como associar teclas de atalho e botões de comando com uma Macro.
O próximo passo será aprender a utilizar o Ambiente de Programação do VBA no Excel, também chamado de Editor do VBA.
Você aprenderá a criar código VBA, a “navegar” através dos objetos disponíveis e a utilizar os vários recursos de ajuda fornecidos pelo Editor de código VBA. Mostrarei as diversas partes que compõem o Editor do VBA e como utilizá-las.
Em seguida passarei ao estudo da linguagem VBA propriamente dita. Estes tópicos são a base da linguagem, os quais serão utilizados em todos os exemplos práticos deste curso
Neste curso você aprenderá sobre os fundamentos do VBA, tais como:
Seguindo o nosso estudo, apresentarei as principais funções internas do VBA. Farei a apresentação dividindo as funções em categorias, tais como funções de Data/Hora, funções de texto e assim por diante.
Para encerrar o curso você aprenderá sobre o conceito de Módulos, procedimentos e funções. Este conceito é muito importante para que você aprenda a criar código que possa ser reaproveitado. Isso aumenta, e muito, a sua produtividade no uso do VBA,
Teremos exemplos práticos sobre a criação de uma função de validação do DV do CPF.
Também apresentarei exemplos de criação de outras funções personalizadas, usando VBA, as quais, com certeza, serão muito úteis no seu dia a dia.
Um Excelente Estudo a Todos!!!