Buscar

apostila-excel-macros-com-vba1604062944

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 84 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 84 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 84 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso de Excel 
Macros com VBA
Todos os direitos reservados para Alfamídia Prow. 
AVISO DE RESPONSABILIDADE 
As informações contidas neste material de treinamento são distribuídas “NO ESTADO EM 
QUE SE ENCONTRAM”, sem qualquer garantia, expressa ou implícita. Embora todas as 
precauções tenham sido tomadas na preparação deste material, a Alfamídia LTDA. não têm 
qualquer responsabilidade sobre qualquer pessoa ou entidade com respeito à 
responsabilidade, perda ou danos causados, ou alegadamente causados, direta ou 
indiretamente, pelas instruções contidas neste material ou pelo software de computador e 
produtos de hardware aqui descritos. 
2
Macros. 
Seguido gastamos uma grande quantidade de tempo executando tarefas repetitivas no 
Excel, ou mesmo em outras ferramentas do Microsoft Office. Tarefas como organizar uma 
planilha, importar dados de uma planilha e assim por diante. 
A Macro vem automatizar estas rotinas, ou seja, com um clique em um botão a rotina que foi 
gravada junto ao seu Excel executa todas as instruções que vocês faz durante este 
processo. 
Macro é um conjunto de comandos em seqüência que automatizam as tarefas do Excel, 
fazendo que você trabalhe com mais eficiência e menos erros. 
Para se criar uma macro é utilizada o VBA, Visual Basic for Aplications,.que é uma 
implementação do Visual incorporada em todos os programas do Microsoft Office 
funcionando como uma linguagem de programação muito parecida com o Visual Basic e que 
nos permite estender ou mesmo substituir rotinas de manipulação de dados, interface, barra 
de tarefas e formulários desenhados pelo usuário. 
Não é necessário o conhecimento que o usuário tenha conhecimento desta linguagem. As 
ferramentas do Microsoft Office tem um gravador de rotinas que gera exatamente o 
programa em VBA. 
3
Ferramentas do VBA – Faixa de Desenvolvedor. 
Para facilitar a vida do ususário para tratamento e gravação de macros o ideal é ativar a 
barra de desenvolvedor, pois esta, por padrão, vem oculta nas ferramentas do Microsoft 
Office. 
Para ativar a barra seguimos o seguinte caminho: 
Na guia Arquivo: 
 Opções:
Na tela que segue selecionar a opção personalizar faixa de opções e na tela da direita 
selecionar a guia desenvolvedor. 
4
O Excel exibe a faixa de Desenvolvedor conforme figura abaixo. 
Onde: 
Ícone Visual Basic – Abre o editor Visual Basic 
Ícone Macros – Exibe a caixa de diálogo Macro, na qual podemos optar por executar ou 
editar uma macro a partir da lista de macros. 
Ícone Gravar Macro – Inicia o processo de gravação de uma macro. 
Ícone Usar Referência Relativas – Alterna entre o uso de gravação relativa ou absoluta. 
Ícone de Segurança de Macro – Acessa a Central de Confiabilidade, onde podemos 
escolher ativar ou desativar macros para executar nesse computador. 
Gravar uma Macro 
Existem duas forma s de gravar uma macro: através do gravador de macros ou utilizando o 
editor e neste desenvolver o programa utilizando as instruções em Visual Basic for 
Applications. 
Gravador de Macros. 
Indo na guia do Desenvolvedor, selecionar a seguinte sequencia: 
 Gravar Macros Na tela que segue. 
5
 Nome da macro: DIGITAR
 Tecla de atalho: Ctrl + Shift + D
 OK
 Clique na célula B4
 Digite EXCEL
 Clique na célula B5
 Digite MACROS
 Clique na célula B6
 Digite CURSO
 Clique no botão Parar Gravação
Observação: na gravação de uma macro podemos 
utilizar referências relativas ou absolutas. 
Uma vez criada e salva a macro podemos vincular esta a um botão ou imagem, na opção 
inserir da barra do desenvolvedor: 
Vai aparecer a a seguinte tela: 
Onde no Controle de Formulários escolhemos o botão. 
Definimos o mesmo na tela e depois selecionamos a 
macro a qual vincularemos ele. 
6
Para visualizar a macro gravada, na guia desenvolvedor teclar a opção Visual 
Basic. 
A tela que segue será apresentada: 
Onde no lado direito você tem toda rotina gravada pelo gravador de macros. 
VBA. 
Outra forma de criarmos macros, como já foi dita anteriormente é indo na guia do 
desenvolvedor e em seguida clicar na opção Visual Basic. 
Na tela a direita, você tem o editor onde irá digitar a sequência de comandos que vão gerar 
sua macro. 
7
Ambiente VBA 
Para acessar o ambiente de programação VBA, precisamos estar com o Excel aberto com o 
arquivo no qual irá conter as rotinas que vamos criar na sequencia. O acesso ao ambiente 
VBA se faz pressionando as teclas ALT+F11. Será aberta a janela conforme abaixo: 
Na janele apresentada não será mostrado o editor VBA, para tanto teremos que inserir um 
módulo clicando no Menu Inserir/ Módulo ou clicar no botão da barra de ferramentas e 
escolher a opção Módulo. 
 Barra de Ferramentas
Pela barra de ferramentas podemos executar a maioria dos comandos que vamos utilizar 
durante a fase de criação do código. 
- Permite alternar para o modo planilha, sem fechar o editor do Visual Basic.
- Permite inserir novos elementos dentro do ambiente de programação. Tais como:
User Form, Módulo, Módulo de Classe e Procedimento. 
- Salva a planilha Excel, com as alterações feitas no código.
- Recortar, Copiar, Colar. Possuem as mesmas funções conhecidas no ambiente
Windows. 
- Permite localizar determinadas palavras dentro do código escrito.
- Desfazer e Refazer. Possuem as mesmas funções conhecidas no ambiente
Windows. 
- Executar, Parar, Redefinir. Estes comandos especiais do ambiente VBA
controlam a execução de um bloco de código ou de um userform. 
- Ativa e desativa o modo de criação.
- Ativa a janela do Project Explorer.
8
- Ativa a Janela Propriedades.
- Ativa o pesquisador de objeto. Lista os objetos disponíveis no ambiente para trabalhar
com a codificação no Microsoft Excel. 
- Ativa e desativa a caixa de ferramentas para criação de Userforms.
- Aciona a documentação sobre o Microsoft Visual Basic, quando instalada junto o
Microsoft Office. 
 Janela Project Explorer
Se a janela não estiver visível, ative-a através 
do comando Exibir/Project Explorer ou 
pressionando simultaneamente as teclas 
(CTRL+R), ou ainda clicando no botão da 
barra de ferramentas. 
A janela Project Explorer exibe todos os 
elementos principais contidos dentro da pasta 
de trabalho Excel. Ela é composta de projetos 
VBA ativos, ou seja, todas as pastas de 
trabalho Excel abertas no momento. Cada 
pasta é dividida em Microsoft Excel Objetos, 
Formulários e Módulos (quando houver). A 
pasta de trabalho e suas planilhas são os 
objetos mostrados em Microsoft Excel Objetos, 
que também poderão ser codificados com 
VBA. Formulários vão conter os userforms criados para a aplicação, e Módulos conterá 
todos os módulos que possuem códigos públicos feitos pelo programador ou criados pelo 
Microsoft Excel na composição de macros. 
9
 Janela de Propriedades
Exibe todas as configurações que podem ser feitas nos Objetos (planilhas, userforms, 
entre outros) do ambiente de programação em tempo de objeto. 
Na figura acima a Janela Project Explorer exibe a pasta de Módulos e o módulo1. Este 
módulo1 mostra o código Le_dados. Para criarmos uma nova sub-rotina basta digitar no 
mesmo módulo logo abaixo da existente. Após digitarmos o demarcador Sub e o nome da 
sub-rotina abre e fecha parênteses e pressionarmos a tecla <enter> será exibida uma 
linha divisória a qual tem o objetivo de separar uma sub-rotina da outra, deixando bem 
claro onde termina uma sub-rotina e começa outra. 
10
Formas de manipular um objeto: 
 Alterar o seu conjunto de propriedades
 Ativar métodos específicos do objeto para executar determinadas tarefas
 Associar procedimentos aos eventos que podem ocorrer sobre o objeto
Exemplo 1: 
O valor Range("A1") é um objeto: manipulações feitas sobre ele implicam ações 
realizadas na célula A1. 
Exemplo 2 
O objeto ActiveCell se refere à célula ativa no momento da execução da macro: no 
exemplo acima, a célula selecionada receberá o valor 10,0 
11
PROPRIEDADES 
 São os estados internos de um objeto.
São as variáveis internas de um objeto.
As propriedades ou atributos são as características dos objetos. Quando definimos uma
propriedade normalmente especificamos seu nome e seu tipo. Podemos ter a ideia de que
as propriedades são algo assim como as variáveis onde armazenamos os dados
relacionados com os objetos.
Observe um dos exemplos abaixo: 
Range("A1").Value = "VBA - Excel!" 
Range("A1").Font.Name = "Arial" 
Range("A1").Font.Size = 11 
Como dito anteriormente, estas instruções se aplicam ao objeto Range("A1"), ou seja, à 
célula A1. Elas alteram ou definem propriedades deste objeto. Propriedades são, 
portanto, características de cada objeto; por exemplo, não existe uma propriedade Value 
para o objeto Application, mas ela existe para uma célula (objeto Range). 
MÉTODOS 
 São a forma de se interagir com um objeto.
 São funções ou transformações que podem ser aplicadas aos objetos.
 São a única forma de alterarmos os atributos de um objeto.
 São a interface do objeto para o mundo externo.
 São os procedimentos e funções de um objeto.
Métodos são ações aplicadas a um objeto. Ao contrário das propriedades, que modificam
suas características, métodos realizam ações mais amplas.
Exemplo: 
ActiveCell.Delete 
Application.Quit 
No exemplo acima, Delete é um método do objeto ActiveCell: ele apagará a célula ativa. 
Quit é um método do objeto Application; ele encerra o Excel (se tiver uma planilha 
aberta não salva, você deve salvá-la antes da conclusão desta ação). 
12
CLASSES E INSTÂNCIAS 
 Classe de objetos: conjunto de objetos com as mesmas propriedades, com os
mesmos métodos e que respondem aos mesmos eventos
 É a combinação em um único registro de campos que conterão dados e
procedimentos, funções.
 Instância: todo o objeto particular de uma classe
Uma classe descreve as variáveis, propriedades, procedimentos e eventos de um objeto.
Objetos são instâncias de classes; Você pode criar quantos objetos precisar depois que
você tenha definido uma classe.
Lista de objetos, propriedades e métodos 
A linguagem VBA possui um grande número de classes (definições de objetos), métodos 
e propriedades que facilitaa elaboração de macros, na barra de ferramentas do Editor VB 
podemos encontrar uma ferramenta, Pesquisador de Objeto, que lista hierarquicamente 
todos estes elementos. 
Para abrir o Pesquisador de Objeto, estando no editor VB, clique no ícone Pesquisador de 
objeto :, ou pressione F2. Será exibido uma janela conforme abaixo: 
A lista à esquerda exibe todas 
as classes; ao selecionar um de 
seus itens, a região à direita 
exibirá todas as propriedades e 
métodos disponíveis para um 
objeto daquele tipo. Na figura 
acima, foi selecionada a 
propriedade Font dos objetos da 
classe Range. 
As classes, métodos e propriedades subordinadas 
a um determinado objeto podem ser exibidos no 
momento da digitação de uma macro. Ao digitar o 
ponto após o nome do objeto em uso, esta lista 
será exibida automaticamente. 
13
Para confirmar a escolha da opção pressione a 
tecla TAB. 
Observe: 
Os métodos são exibidos com o ícone verde 
EVENTOS 
Eventos são ações que informam a um aplicativo que algo importante ocorreu, é algo que 
acontece aos objetos. Ocorre em resultado de uma ação do usuário, do sistema ou do 
próprio código. Por exemplo, quando o usuário clica em um formulário, o formulário pode 
desencadear um evento Click e chamar um procedimento que manipula o evento. 
Com os eventos você personaliza o comportamento dos objetos, tais como: pastas de 
trabalho, planilhas, gráficos, janelas, etc. 
Os procedimentos correspondentes aos eventos têm todos a seguinte forma: 
Private Sub Objeto_Evento(argumentos) 
Exemplos: 
Private Sub Workbook_Open() 
Ocorre quando o arquivo é aberto por ação do método Open. 
Private Sub Workbook_Activate() 
Ocorre quando o arquivo passa a ser o arquivo ativo por ação do método Activate. 
Private Sub Workbook_Newsheet(ByVal Sh As Object) 
Ocorre quando é inserida uma nova planilha (Sh referencia a nova planilha). 
14
Procedimentos e Funções 
Podemos trabalhar com duas estruturas 
diferentes com macros: funções e procedimentos. 
Procedimentos: é um conjunto de instruções em 
VBA que executam algum tipo de ação, mas não 
retornando valor algum. 
Função: também é um conjunto de instruções em 
VBA, mas por sua vez retorna obrigatoriamente 
um valor mesmo sendo nulo. 
DEFINIÇÃO DE ROTINAS/SUBROTINAS (MACROS) 
As Rotinas/sub-rotinas são os procedimentos Sub, aquelas cuja definição é delimitada 
pelas palavras-chave Sub e EndSub sedo que todas as rotinas de gravação de macros 
no Excel são definidas desta forma. 
Sub <nome_da_macro> ( ) 
<corpo_da_macro> 
End Sub 
O corpo da macro pode ser composto por um conjunto de instruções. 
15
Definição de Função 
Utilizando o editor do Visual Basic podemos criar nossas funções que ficaram vinculadas 
no assistente de funções como personalizadas. 
Por exemplo: 
Entrar no assistente de função e digite: 
Uma vez que uma função produz um valor ela poderá ser executada: 
 dentro de uma célula numa planilha, à semelhança de qualquer outra função do Excel.
dentro de qualquer outra função ou SubRotina. 
Ou pode utilizar o assistente de 
função: 
16
Clique em OK para a próxima etapa do assistente de função, conforme abaixo: 
Preencha as caixas de diálogo Freq e Med com a referência das respectivas células 
clique em OK. 
A montagem de uma função respeita a seguinte estrutura: 
Function <Nome da Função> ( <argumento1> As <Tipo>, …) As <Tipo> 
… 
<Nome da Função> = <Valor / Expressão> 
… 
End Function 
17
 Definição do tipo de dados para os argumentos e do tipo da função
Todas as variáveis envolvidas em uma função deve ter seu tipo definido. 
São elas: 
Nota: Se os tipos de dados não forem definidos será assumido por padrão como tipo 
Variant. 
Algumas funções facilitam em muito o nosso dia a dia, veja os exemplos abaixo. 
Exemplo 1: 
Criar uma função para obter o percentual do lucro. Para isso deve-se usar o preço de 
compra e preço de venda que se encontram na planilha. Conforme figura abaixo: 
18
Exemplo 2: 
Crie uma função que retorne uma string com a situação de cada aluno, conforme os 
critérios abaixo: A frequência deve ser acima de 75%, A média deve ser superior a 7,0. 
Se a média menor que 7,0, escrever a mensagem “Reprovado por média”; 
Se a frequência inferior a 75% , escrever a mensagem “Reprovado por frequência”; 
Se a média maior e igual a 7,0 e menor 9,5, escrever a mensagem “Bom”; 
Se a média maior e igual a 9,5, escrever a mensagem “Ótimo”. 
Exemplo 3 
Usando uma função do Excel em uma função no módulo VBA: 
Uma função pode chamar outra através da instrução application. 
19
Exemplo 4 
No exemplo abaixo uma função chama outra função dentro dela. 
Inputbox e msgbox 
Permitem a interação entre o usuário e uma macro ou programa, funciona como uma 
interface de comunicação. 
FUNÇÃO INPUTBOX 
InputBox é uma função que permite ao usuário introduzir dados no programa é portanto 
um mecanismo de entrada. 
Como é uma função produz um valor final. Este consiste nos dados inseridos pelo usuário 
no formato texto que normalmente são armazenados temporariamente em variáveis de 
uma macro ou programa. 
20
Sintaxe: 
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) 
O único argumento da função que não está entre colchetes é a mensagem do prompt, 
pois é o único argumento obrigatório; os outros são opcionais. Vamos conferir cada um: 
Prompt – É a mensagem a ser exibida ao usuário quando executada a inputbox. 
Title – É o título da caixa de mensagem, situado na barra de identificação (barra azul). 
Default – É um valor que já aparece preenchido na inputbox como valor padrão. 
XPos, YPos – É a posição em que a caixa de mensagem situa-se na tela. O padrão é o 
centro. 
HelpFile, Context – Utilizados para designar um arquivo e um contexto de ajuda para a 
caixa de mensagem. 
FUNÇÃO MSGBOXO MsgBox é um mecanismo de saída e permite ao usuário visualizar os dados produzidos 
pelo programa. 
Sintaxe 
MsgBox(prompt[, buttons] [, title] [, helpfile, context]) 
MsgBox também possui diversos parâmetros, mas somente o primeiro é obrigatório, 
sendo que todos os outros quando ignorados assumem valores atribuídos por padrão. 
Prompt – É a mensagem a ser exibida na caixa de mensagem. Se construir uma 
mensagem muito longa poderá utilizar o caractere Enter Chr(13); Exemplo: 
MsgBox "A Soma de 3 com 5 é :" & Chr(13) & " 8 " 
Buttons – Aqui temos várias opções de configuração de uma MsgBox. Se for omitido 
assumirá o valor 0 por padrão. A configuração “buttons” pode ser dividida em botões, 
comunicação visual e botões padrão; Veremos detalhes abaixo: 
Title – É o título da caixa de mensagem. Se este for omitido, aparecerá o padrão que é o 
nome da aplicação. 
HelpFile - Nome do arquivo que será utilizado para ajuda. Se for indicado este parâmetro 
o seguinte é obrigatório.
21
Context - Número do índice do tópico de ajuda. 
Exemplo: 
MsgBox "Erro de Sintaxe !!!", , "Mensagem de Erro" 
Opções de configuração Buttons: 
VbOKOnly - Exibe somente o botão de OK. 
VbOKCancel - Exibe os botões OK e Cancelar. 
VbAbortRetryIgnore - Exibe os botões Anular, Repetir e Ignorar.. 
VbYesNoCancel - Exibe os botões Sim, Não e Cancelar . 
VbYesNo - Exibe os botões Sim e Não. 
VbRetryCancel - Exibe os botões Repetir e Cancelar. 
VbCritical - Exibe o ícone de Mensagem Crítica. 
VbQuestion - Exibe o ícone de mensagem de Alerta. 
VbExclamation - Exibe o ícone de mensagem de InformaçãoWarning Message. 
VbInformation - Exibe o ícone de Information Message. 
VbDefaultButton1 - O primeiro botão é o selecionado por default. 
VbDefaultButton2 - O segundo botão é o selecionado por default. 
VbDefaultButton3 - terceiro botão é o selecionado por default. 
VbDefaultButton4 - O quarto botão é o selecionado por default. 
22
Exemplos: 
MsgBox "Data Inválida", vbCritical 
MsgBox "Operação concluída com sucesso!", vbInformation, "Conclusão" 
23
ESTRUTURA DE PROGRAMAÇÃO 
INSTRUÇÕES 
Toda linguagem de programação é formada por uma série de palavras chaves que uma 
vez estruturadas corretamente automatizam uma rotina e o VBA tem uma série dessa 
palavras. 
Para entender a estrutura de um programa e melhorar a sua performance, precisamos 
conhecer algumas estruturas da lógica de programação. 
 ESTRUTURA SEQUENCIAL
É o conjunto de ações que serão executadas numa sequencia linear de cima para baixo e 
da esquerda para a direita, isto é, na mesma ordem que foi escrita. 
Exemplo: 
Faça uma sub-rotina que leia o nome do aluno e 3 notas calcule e escreva a média 
aritmética. 
Após digitar o exemplo na janela de edição do VBA, clique no botão executar na barra 
de ferramentas ou no Menu Executar/Executar Macro. 
OBS.: Quando ocorrer um erro na digitação a linha ficará na cor Vermelho. Se houver um 
erro de compilação ou execução será mostrada uma marca na cor amarelo. 
24
 ESTRUTURA DE SELEÇÃO
Uma estrutura de seleção permite a escolha de um grupo de ações e estruturas a ser 
executado quando determinadas condições, representadas por expressões lógicas, são 
ou não satisfeitas. 
O SELEÇÃO SIMPLES 
Instrução IF (Se) Then (Então) 
Esta instrução avalia uma determinada condição lógica, e dependendo da resposta que 
esta condição retornar, será feito um bloco de algoritmo ou não. 
Sintaxe: 
if condição then 
Comandos 1 
.... 
Comandos N 
End if 
O comportamento do comando IF-THEN é o seguinte: primeiramente a condição é 
avaliada, podendo resultar em dois valores: TRUE (verdadeiro) ou FALSE (falso). Se a 
condição for verdadeira, os comandos 1 até N serão executados e, em seguida, o Bloco 
de comandos. Se a condição for falsa, nenhum dos comandos de 1 a N será executado e 
o programa irá diretamente para o Bloco de comandos.
25
O SELEÇÃO COMPOSTA 
Instrução IF (Se) THEN (Então) ELSE (Senão) 
Dentro da instrução if, ainda podemos utilizar uma segunda instrução (else - senão) que 
também avalia a condição lógica testada, porém somente sendo executado se esta 
condição for falsa. 
Sintaxe: 
If condição then 
Comando 1 
. 
. 
Comando N1 
Else 
Comando 2 
. 
. 
Comando N2 
Endif 
O comportamento do comando IF-THEN-ELSE é o seguinte: A condição é avaliada; se 
ela for verdadeira, os comandos 1 até Comando N1 serão executados; se a condição for 
falsa, os comandos 2 a comandos n2 serão executados. Em ambos os casos, o comando 
posterior a ser executado será o bloco de comandos. 
Para melhor compreensão, faremos agora um exemplo prático da utilização deste tipo de 
instrução. Façamos um algoritmo que leia o nome e as duas notas de um aluno, 
retornando a sua média e uma mensagem “Aprovado” ou “Reprovado” dependendo da 
sua média. A média mínima para aprovação será 6. 
26
O SELEÇÃO ENCADEADA 
É muito comum que dentro de um algoritmo tenhamos vários testes que tenham que ser 
feitos a uma mesma variável ou situação. Para este tipo de situação podemos utilizar o 
encadeamento (aninhamento) de instruções if. 
Exemplo: 
Pretende-se criar uma Rotina que identifique um indivíduo em função da sua idade. A 
classificação pretendida é a seguinte: 
Idade Classe Etária 
Menos de 3 anos Bebê 
Dos 3 aos 12 Criança 
Dos 13 aos 17 Adolescente 
Dos 18 aos 25 Jovem 
Dos 26 aos 65 Adulto 
Mais de 65 Idoso 
O SELEÇÃO DE MÚLTIPLA ESCOLHA 
Instrução Select case (caso) <variável> 
Utilizar uma sequência encadeada de testes lógicos apesar de interessante, em algumas 
situações pode tornar o código relativamente complexo. Quando possuímos uma lista de 
valores para executar se verifica a necessidade de um comando para agrupar todos 
esses valores em uma única cláusula. 
27
Quando nos deparamos com este tipo de situação existe uma instrução que se mostra 
mais otimizada e organizada para a manipulação dos dados. Select Case <Variável> 
executa um dos vários grupos de instruções, dependendo do valor de uma expressão. 
Select case <variável> 
Case <valor1> 
Comando1 
Case <valor2> 
Comando2 
... 
Case Else 
<Comando caso nenhuma opção acima for verdadeira> 
End Select 
Exemplo: 
Construa um programa que, tendo como dados de entrada o preço de um produto e um 
código de origem, emita o preço junto de sua procedência. Caso o código não seja 
nenhum dos especificados, o produto deve ser encarado como importado. 
Código de origem 
0 ou Menor - ERRO 
1 – Sul 
2 – Norte 
3 – Leste 
4 – Oeste 
5 ou 6 – Nordeste 
7, 8 ou 9 Sudeste 
10 até 20 – Centro Oeste 
25 até 50 – Nordeste 
28
Onde: 
- Case Is <= 0 - Use a palavra-chave Is com um operador de comparação (=, <>,<,<=,
>,ou >=) para especificar uma restrição nos valores analisados;
- Case 1 – Onde não tiver operador é considerado igualdade (=);
- Case 7, 8 – Várias cláusulas são separadas por vírgulas;
- Case 10 To 20 - Use a palavra-chave To para especificar os limites de um intervalo de
valores a ser analisados. O valor da expressão1 deve ser menor ou igual ao valor de
expressão2.
Você pode usar várias expressões ou intervalos em cada cláusula Case. Por exemplo, a 
seguinte linha é válida. 
- Case 1 To 4, 7 To 9, 11, 13, Is > Num
Case Else vai atuar sempre que o valor analisado não satisfazer nenhuma das cláusulas 
Case analisadas. Com Select Case as possibilidades podem estender-se facilmente, o 
que é ideal para a análise de uma grande lista de valores. 
29
 ESTRUTURAS DE REPETIÇÃO
o Estrutura Do...Loop (Faça...Laço)
Esta estrutura pode ser utilizada para repetir um trecho de código, enquanto uma 
determinada condição for verdadeira, ou até que uma determinada condição torne-se 
verdadeira. Podemos utilizar dois operadores condicionais diferentes: Do While. Nesta 
estrutura, enquanto a condição for verdadeira, o código dentro do laço é executado. 
Quando a condição tornar-se falsa, o primeiro comando após o final do laço será 
executado. Neste caso, se a condição for falsa já na primeira vez, olaço não será 
executado nenhuma vez. 
Estrutura Do While <condição>...Loop (Faça Enquanto <condição>....laço) 
Neste caso, estamos utilizando o operador condicional Do While, no início do laço. O 
formato geral, neste caso é o seguinte: 
Do While <condição> 
Comando1 
... 
ComandoN 
Loop 
Exemplo: 
Faz a soma dos 10 primeiros números maiores do que zero. 
30
Observe que dentro do laço, vamos Incrementando o valor da variável Contar, uma 
unidade para cada passagem do laço. Com isso, quando o valor de Contar, atingir 11, o 
teste do início do laço torna-se falso, e o laço é encerrado. 
o Estrutura For...Next
Utilizamos o laço For...Next, para repetir um segmento de código, um número 
determinado de vezes. Utilizamos esta estrutura, quando já sabemos o número de vezes 
que uma determinada seção de código deve ser repetida. Neste tipo de estrutura, 
normalmente, utilizamos uma variável como contador. Este contador varia de um valor 
inicial até um valor final. 
Formato do comando conforme abaixo: 
For contador=inicio To fim incremento 
Comando1 
Comando2 
... 
ComandoN 
Next 
No início a variável contador tem o valor definido para um determinado valor. Em cada 
passagem do laço, a variável contador é incrementada pelo valor definido em incremento. 
Caso não seja definido o incremento, será utilizado o padrão 1. 
Exemplo: 
Faz a soma dos 10 primeiros números maiores do que zero 
31
Neste exemplo, a variável i inicia com o valor 1. Em cada passo, o valor de i é 
acrescentado à variável Soma. Como o incremento não foi definido, será utilizado o 
padrão que é 1. Com isso, ao final do laço For...Next, a variável Soma, terá armazenado o 
valor da soma dos 10 primeiros números inteiros. 
Poderíamos utilizar um valor de incremento diferente de 1, para, por exemplo, obter a 
soma somente dos números pares menores do que 10: 
Objeto Range 
O Objeto range é uma propriedade do objeto Worksheet. Isso significa que objeto Range 
requer que uma planilha esteja ativa ou que ele referencie uma planilha. 
Esse objeto representa uma célula, uma coluna, uma linha, um conjunto de células, até 
todas as células de uma planilha; por isso é tão genérico e funcional. O objeto Range 
talvez seja o objeto mais utilizado no Excel VBA, afinal, você está manipulando dados em 
uma planilha. 
Um objeto Range pode ser representado de diversas formas. Pode ser: 
Range(“A1”): - Uma célula ,A1; 
Range(“B2:C3”): - Um intervalo de células, B2:C3. 
Range(“A1, B2:C3”): - Uma célula, A1, mais um intervalo B2:C3 
Range(“Lucro”): - Um intervalo com o nome “Lucro” 
Range.Value: - Valores das células do range 
Range(“B2:C3”).Cells(1, 2): - Referência à célula na 1ª linha e na 2ª coluna dentro do 
intervalo B2:C3 (célula C2) 
Range.Offset(RowOffset, ColumnOffset): - Desloca o range RowOffset linhas para 
cima/baixo e ColumnOffset colunas para a direita/esquerda 
32
Range.Address(RowAbsolute, ColumnAbsolute): - Endereço do range. 
Range.Count: - Número de células do range 
Exemplo: 
PROPRIEDADE NAME 
Esta propriedade permite nomear o intervalo de um Range especificado. 
PROPRIEDADE VALUE 
Retorna ou define o valor de uma determinada célula Range. 
Exemplo1: 
Exemplo2: 
'Onde, na primeira instrução se atribui ao range "A1:F20" o nome "Conjunto", e na última 
instrução se utiliza essa designação para referenciar o respectivo conjunto de células e 
atribuir-lhe o valor 1, na planilha ativa. 
33
Exemplo3: 
Com base na tabela abaixo vamos criar uma macro para calcular o salário de uma 
pessoa. Para isso a macro recebe as informações da planilha e devolve o salário na 
planilha. 
OBJETO RANGE X MÉTODO SELECT 
O Método Select seleciona o Range especificado. 
Range("A1").Select - Seleciona uma única célula que você vai escrever 
Range("A1,A5,B4").Select - Selecionar um conjunto de células alternadas. 
Exemplo: 
34
PROPRIEDADE CELLS 
A propriedade Cells refere-se todas as células do objeto especificado no intervalo, pode 
ser uma planilha ou o intervalo de células. Podemos utilizá-la com o objeto Range 
representando todas as células de dentro do range. Onde Cells(linha,Coluna). 
Range(Cell1,Cell2) 
Por exemplo, Range(“A1:B2”) é equivalente a Range(Cells(1,1),Cells(2,2). 
Cells.Select – Seleciona todas as células de uma planilha: 
Cells.ClearContents - Limpa todas as células de valores ou fórmulas que pode estar em 
uma planilha: 
Exemplo1: 
Crie uma macro baseada nos exemplos acima, execute o mesmo e observe que o 
intervalo foi preenchido com o número 2, logo após acrescente a linha conforme abaixo e 
execute a macro observando que está limpo. 
Exemplo2: 
Com base na planilha abaixo criar uma macro que calcule um acréscimo de 30% para os 
valores maior ou igual a 500 e escreva o valor reajustado na coluna ao lado; 
35
As três afirmações abaixo são equivalentes: 
ActiveSheet.Range.Cells (1,1) 
Range.Cells(1,1) 
Cells(1,1) 
A propriedade Cells tem uma propriedade com nome de Item que torna a propriedade 
Cells muito útil. A propriedade Item permite referenciar uma célula especifica em relação 
ao objeto Range. 
Sintaxe: 
Cells.Item(2,”C”) 
Cells.Item(2,3) 
PROPRIEDADE ACTIVECELL 
O ActiveCell propriedade retorna um objeto Range que representa a célula que está ativa 
na planilha especificada ou na planilha ativa. Você pode aplicar qualquer das 
propriedades ou métodos de um objeto Range para a célula ativa. 
36
Com base na planilha abaixo a macro que recebe 2 valores da planilha e uma opção, 
retorna o valor célula ativa. 
OBJETO FONT 
O objeto Font possui toda a formatação de fonte que podemos utilizar na interface do 
Excel. Vejamos as principais propriedades: 
Name – Define o tipo da fonte. 
Bold – True define o estilo da fonte é negrito. 
Itálic - True define se o estilo da fonte é itálico. 
Size – Define o tamanho da fonte. 
ColorIndex – define cor da fonte com valor inteiro de 1 a 56. 
37
OBJETO INTERIOR 
O objeto Interior define o plano de fundo para as células selecionadas Suas principais 
propriedades são: 
Color- Define a cor de preenchimento de uma célula em RGB 
ColorIndex - Define cor de preenchimento em valor inteiro de 1 a 56 cores. 
Pattern – Define um padrão para ser aplicado no fundo de uma célula. Existem dezoito 
padrões representados em valor inteiro de 1 a 18. 
Patterncolor e PatternColorindex – Definem a cor padrão a ser aplicada ao fundo da 
célula. 
PROPRIEDADE HORIZONTALALIGNMENT E VERTICALALIGNMENT 
Controla o alinhamento de dados das células contidas no range selecionado, tanto 
horizontalmente quanto verticalmente. As constantes podem ser: 
Alinhamento Horizontal: 
xlLeft – Alinhamento à esquerda. 
xlCenter- Alinhamento centralizado. 
xlRight- Alinhamento à direita 
xlDistributed ou xlJustify - Alinhamento justificado. 
Alinhamento Vertical: 
xlTop - Alinhamento superior 
xlCenter- Alinhamento centro (meio). 
xlBottom- Alinhamento inferior 
xlDistributed ou xlJustify.- Alinhamento justificado 
38
Exemplo1: 
As macros abaixo mostram recursos para alterar o tipo da fonte para Tahoma, tamanho 
12, cor azul, estilo Negrito e alinhamento centralizado. 
Exemplo do uso da propriedade Pattern. 
39
Exemplo do uso da propriedade PatternColorIndex. 
PROPRIEDADES COLOR E COLORINDEX 
As propriedades Color e ColorIndex definem a cor de uma borda, fonte ou preenchimento 
de uma célula. Sendo que color em RGB, ex: Color=RGB(255,0,0), enquanto ColorIndex 
especifica em valor inteiro, ex: ColorIndex=3, os dois são equivalentes. 
Uma função RGB trabalha com três parâmetros, que indicam a quantidade de vermelho, 
verde e azul na composição de uma cor, variando de 0 a 255. 
Exemplo: 
Exemplo: 
A macro abaixo gera uma tabela de cores com os respectivos números para ser utilizado 
com a propriedade ColorIndex. 
40
COLEÇÃO BORDERS 
A coleção Borders é responsável por determinar as características das bordas de um 
determinado Range. Com Borders são passadas as constantes que representam a bordaestá sendo alterada. 
xlDiagonalDown – Diagonal de cima para baixo. 
 xlDiagonalUp – Diagonal de baixo para cima. 
xlEdgeTop – Borda superior. 
 xlEdgeBottom – Borda inferior. 
 xlEdgeLeft – Borde esquerda. 
 xlEdgeRight – Borda direita. 
xlInsideHorizontal – Linha interna horizontal. 
xlInsideVertical – Linha interna vertical. 
PROPRIEDADE LINESTYLE E WEIGHT 
Propriedade LineStyle determina o estilo da linha a ser usada em bordas, Weight 
determina a espessura da borda. 
Adiciona uma borda a um intervalo definindo um estilo. Constantes para LineStyle. 
xlLineStyleNone – Sem estilo 
xlContinuous - padrão - 
xlDash - 
xlDashDot - 
xlDashDotDot - 
xlDot - 
xlDouble - 
41
Constantes para Weight a qual determina e espessura da borda. 
xlThin - padrão - 
xlMedium - 
xlThick – 
xlHairline - 
O exemplo a seguir adiciona uma borda dupla para as células C1 até D5 na planilha ativa. 
O exemplo a seguir define a cor da borda superior e inferior das células A2: G2 na cor 
vermelho. 
O exemplo a seguir define a cor da borda inferior das células A10: D10 na cor Azul no 
estilo traçado. 
PROPRIEDADE COUNT 
Esta propriedade conta número de células, colunas ou linhas de um Range. 
42
PROPRIEDADE COLUMN E ROW 
As propriedades Column e Row indicam coluna e linha, que formam a base de um range, 
ou seja, relativas à célula do canto superior esquerdo. 
PROPRIEDADE COLUMNS E ROWS 
Essas propriedades agem como coleções, que armazenam as informações de colunas e 
linhas de uma range. 
Exemplo: 
Observação: 
Outra forma de se obter o total de linhas em uma planilha é a seguinte: 
PROPRIEDADE RESIZE 
Essa propriedade permite alterar o tamanho de um intervalo com base na localização da 
célula ativa. Você pode determinar um novo intervalo conforme suas necessidades. 
Exemplo: 
43
PROPRIEDADE ADDRESS 
Retorna o endereço de células do objeto Range em questão. 
PROPRIEDADE OFFSET 
Provoca um deslocamento de um determinado número de linhas e colunas, tendo com 
base o range ao qual será aplicado o deslocamento. Offset(linha, coluna), onde linha e 
coluna são os deslocamentos de linha e coluna. 
Exemplo: 
A macro abaixo seleciona e preenche com um valor a célula que se encontra 3 linhas 
abaixo e 1 coluna à direita da célula que se encontra ativa na planilha ativa. 
FUNÇÃO ISEMPTY 
Retorna um valor booleano se uma única célula estiver vazia ou não 
Exemplo: 
44
MÉTODO ACTIVATE 
Método Activate torna uma célula ativa. 
O exemplo abaixo torna “C5” à célula ativa. Após a mesma recebe o formato negrito. 
MÉTODO COPY 
Copia o conteúdo de um range para outro range de destino ou para o clipboard. 
Exemplo: 
MÉTODO DELETE 
Exclui as células do Range especificado. 
Exemplo: 
45
MÉTODO MERGE 
Este método permite mesclar as células de um determinado Range. 
MÉTODO CLEAR 
Limpa todo e qualquer conteúdo das células dentro de um range. O conteúdo envolve 
valores, formatação e fórmulas. 
Exemplo: 
MÉTODO SORT 
Este método é utilizado para classificar os dados dentro de um Range de células. Os 
parâmetros mais relevantes desse método são: 
Keys – são os campos-chave de classificação. 
Order – ordenação indica duas constantes; 
xlAscending – classifica em ordem crescente. 
xlDescending – classifica em ordem decrescente. 
Header – especifica se a primeira linha contém cabeçalhos. 
MathCase – é para uma classificação sensitiva, onde letras minúsculas têm prioridade 
sobre as maiúsculas. 
Orientation – orientação que podem ser duas: 
xlSortColumns – classifica por colunas. 
xlSortRows – classifica por linhas 
46
Exemplo: 
47
Objeto Worksheet 
O objeto Worksheet representa uma planilha, especificada da coleção Worksheets. O objeto 
Worksheet é também um membro da coleção Sheets. Quando queremos referenciar uma 
Worksheets de uma pasta de trabalho necessitamos indicar qual planilha, para isso temos que 
especificar com o número de índice qual a posição da planilha. Por exemplo, Worksheets (1) é a 
primeira planilha da esquerda na pasta de trabalho, Worksheets(2),... e assim sucessivamente. 
Use Worksheets (índice), ou o nome da planilha Worksheets(“Plan1”), ou ainda se a planilha foi 
renomeada Worksheets(“Balanço”). 
Sheets é um conjunto de planilhas,. Sheets (1) é a primeira planilha na pasta de trabalho, ou 
Sheets(“plan1”), ou se a planilha foi renomeada indicar o novo nome Sheets(“FolhaPgto”). 
Exemplos: 
A macro abaixo escreve na Plan1 no intervalo A1:C5 o texto "OLÁ". 
Preenche com valor de 1 á 100 o intervalo de 10 linhas por 10 colunas. 
48
Métodos e eventos aplicados aos objetos Worksheets. 
PROPRIEDADE CODENAME 
Retorna o nome de código de uma planilha, que substitui a declaração Worksheets(índex). 
O CodeName da planilha só pode ser visto entrando no Editor do Visual Basic no Project Explorer. 
Conforme mostra a figura acima, o CodeName para a planilha com nome de guia “Balanço” é 
Plan1.Podemos fazer referência a esta planilha na pasta de trabalho usando: Plan1.Select ou 
Sheets ("Balanço"). Select ou Sheets (1). Select. 
PROPRIEDADE NAME 
A propriedade Name retorna o nome de uma planilha. Também pode ser usada para trocar o 
nome de uma planilha. 
Exemplo: 
A macro abaixo muda o nome de uma planilha especificada. 
49
PROPRIEDADE VISIBLE 
Controla a visibilidade de uma planilha, Podemos usar valores conforme a seguir: 
PlanilhaHidden – vai ocultar a planilha indicada. 
planilhaVisible - vai deixar visível a planilha anteriormente oculta. 
Exemplos: 
O exemplo abaixo oculta Plan2 
Exemplo abaixo exibe a Plan2 oculta pela macro anterior. 
Observação: 
Podemos utilizar o parâmetro xlVeryHidden ao invés de true ou false. Este irá ocultar a planilha e 
desabilitará a opção reexibir do menu. 
50
PROPRIEDADE ACTIVESHEET 
Retorna um objeto que representa a planilha ativa na pasta de trabalho ativa ou na janela especificada. 
Exemplos: 
O exemplo abaixo escreve na célula B2 da planilha ativa e mostra o nome da planilha. 
51
MÉTODO ADD 
O método Add permite adicionar novas planilhas à pasta de trabalho ativa. 
Exemplo 1: 
A macro abaixo adiciona à planilha “Bacana” a esquerda da planilha selecionada. 
Exemplo 2: 
O exemplo insere 4 novas planilhas após a última planilha. 
Exemplo 3: 
Insere uma planilha com nome após a última. 
52
MÉTODO ACTIVATE 
Torna uma planilha da coleção WorkSheets ativa, movendo o foco para a planilha especificada 
sem alterar a seleção do usuário. 
Exemplo: 
O exemplo abaixo torna ativa a “Plan2” na qual “D7” torna-se ativa e recebe o formato negrito. 
MÉTODO COPY 
Permite criar uma cópia fiel de uma determinada planilha, em uma posição especificada na 
coleção Worksheets. 
Exemplo: 
A macro abaixo faz um cópia fiel da planilha ativa, inserindo a cópia após a última planilha da 
coleção. 
MÉTODO DELETE 
Exclui um planilha da coleção WorkSheets. 
Exemplos: 
O exemplo abaixo exclui a planilha especificada. 
53
O exemplo abaixo exclui a última planilha da Coleção WorkSheets. 
MÉTODO MOVE 
Move uma planilha da coleção para local especificado. 
O exemplo abaixo move a planilha ativa para a última posição 
MÉTODO SELECT 
O método Select seleciona uma planilha ou varias planilhas, movendo a seleção do usuário para a 
nova planilha especificada. 
Exemplo1: 
Exemplo2: 
54
Exemplo3: 
EVENTO DE UM WORKSHEET 
Os eventos relacionados a um objeto Worksheet afetam apenas a planilha onde o evento ocorre. 
Para acessar os eventos de um objeto Worksheet dentro do ambiente VBA, você dá um duplo 
clique na planilha desejada. Vai aparecer a janela conforme abaixo. Clicando na caixa de 
combinação onde aparece Geral você encontrará o objeto Worksheet, na caixa de combinação da 
direita você escolhe o evento desejado. 
EVENTO ACTIVATE 
Este método é equivalente a clicar na guia na parte inferior da Planilha. Ocorre quando a planilha 
em que está o evento se torna a planilha ativa. 
Exemplo: 
55
EVENTO DEACTIVATE 
Deactivate ocorre quando outra planilhase torna a planilha ativa. 
Exemplo: 
EVENTO BEFOREDOUBLECLICK 
O evento BeforeDoubleClick permite controlar o que acontece quando o usuário dá um duplo 
clique na planilha. Esse evento possui argumentos: 
Cancel – que proporciona a possibilidade de cancelá-lo. 
Target – do tipo Range, através desse argumento, podemos identificar qual célula recebeu o duplo 
clique e dar os tratamentos desejados ao evento. 
Exemplo: 
EVENTO BEFORERIGHTCLICK 
Evento desencadeado quando o usuário clica com o botão direito do mouse em um intervalo. 
Target é o objeto clicado com o botão direito do mouse; Cancel configurado como True impede 
que a ação-padrão aconteça. 
Exemplo: 
56
EVENTO CALCULATE 
Ocorre toda vez que um cálculo é executado ou um valor de uma expressão matemática é 
alterado em uma célula da planilha que contém a macro. 
Exemplo: 
No exemplo abaixo, a cada vez que a célula C2 sofre uma alteração exibe uma mensagem, essa 
alteração pode ser no momento que está editando a expressão ou se um dos valores das células 
envolvidas na expressão sofrer uma alteração de valor. 
EVENTO CHANGE 
Ocorre quando uma das células da planilha teve o seu conteúdo alterado pelo usuário ou por 
agente externo. Por exemplo, quando o texto é inserido, editado ou excluído. Target é a célula que 
foi alterada. 
Exemplo1: 
57
Exemplo 2: 
Quando uma célula for preenchida com um valor, a cor de fundo da célula ficará em vermelho. 
Exemplo 3: 
A macro abaixo força a entrada do texto em caracteres maiúsculos. 
EVENTO SELECTIONCHANGE 
Ocorre quando um novo intervalo de células é selecionado dentro de uma planilha. Target é o 
intervalo recentemente selecionado e podemos dar o tratamento desejado. 
Exemplo: 
58
Objeto Workbook 
Workbook representa uma pasta de trabalho do Microsoft Excel. O objeto pasta de trabalho é um 
membro da coleção Workbooks. A coleção de pastas de trabalho contém todos os objetos 
Workbook atualmente aberto no Microsoft Excel. 
Como um objeto Workbook representa uma pasta de trabalho, podemos acessá-lo como um 
índice da coleção Workbooks da seguinte maneira: workbooks(1) ou pelo nome do arquivo 
workbooks(“nome arquivo”). O número de índice indica a ordem em que os arquivos foram abertos 
ou criados. Workbooks(1) é o primeiro livro criado e Workbooks(Workbooks.Count) é o último 
criado. 
PROPRIEDADE FULLNAME 
Obtém o nome da pasta de trabalho, incluindo o seu caminho no disco. 
Exemplo1: 
Essa função retorna o caminho do disco e o nome da pasta de trabalho ativa. 
Exemplo2: 
A função retorna apenas o nome da pasta de trabalho. 
Exemplo3: 
Esse exemplo de macro mostra caminho do arquivo ativo. 
59
PROPRIEDADE PATH 
Retorna o caminho onde esta a pasta de trabalho solicitada. 
MÉTODO ADD 
O método Add permite criar uma nova pasta de trabalho vazia e adicioná-la à coleção. 
Exemplo 1: 
O exemplo seguinte adiciona uma nova pasta de trabalho vazia ao Microsoft Excel. 
Exemplo 2: 
A macro abaixo cria um novo arquivo fecha salvando com nome. 
MÉTODO ACTIVATE 
Esse método torna uma pasta de trabalho ativa. 
MÉTODO CLOSE 
Fecha a pasta de trabalho desejada. Close tem alguns parâmetros, se caso omitido o 
funcionamento da ação será padrão Windows. 
A macro abaixo fecha a pasta de trabalho ativa sem salvar. 
Exemplo 1: 
60
Exemplo 2: 
Esse exemplo a macro fecha a pasta de trabalho ativa e o salva. 
Exemplo 3: 
A macro do exemplo abaixo fecha a pasta de trabalho ativa dando a opção de escolha se o 
usuário deseja salvar. 
MÉTODO SAVE 
Salva mudanças na pasta de trabalho. 
EVENTOS DE UM WORKBOOK 
A maioria dos eventos de um Workbook afetam globalmente uma aplicação. Para acessar os 
eventos de um Workbook dentro do ambiente VBA, você deve dar duplo clique em 
Esta Pasta_de_Trabalho, que está no Project Explorer e aí selecionamos o evento. 
61
Principais eventos de um objeto Workbook.. 
EVENTO ACTIVATE 
Ocorre quando a pasta de trabalho que contém esse evento torna-se ativa. 
EVENTO OPEN 
Esse procedimento é ativado quando uma pasta de trabalho é aberta, não necessita de nenhuma 
interface com o usuário.. 
Exemplo: 
A macro abaixo abre a pasta de trabalho com a planilha Janela ativada. 
EVENTO NEWSHEET 
Ocorre quando uma nova planilha é adicionada à pasta de trabalho ativa. 
No exemplo abaixo a macro será acionada quando inserir nova planilha, a nova planilha será 
inserida após a última já existente. 
EVENTO SHEETCHANGE 
Ocorre quando qualquer intervalo em uma planilha é alterado. Sh é a planilha; Target é o intervalo 
alterado. Para afetar uma planilha específica, referencie Worksheet_Change. 
Exemplo1: 
A macro abaixo abre uma pasta de trabalho quando você digita o nome da pasta de trabalho 
desejada em uma célula na planilha da pasta de trabalho ativa: 
62
Exemplo2: 
Esse exemplo só aceita valores menores ou igual a 500. Se você digitar um valor maior que 500 
em uma célula na pasta de trabalho, será exibida uma caixa de mensagem e o valor é removido. 
Vamos ver abaixo alguns exemplos onde usaremos Propriedades, Métodos e Eventos de um 
Workbook descritos acima. 
Exemplo 1: 
Esse exemplo cria um novo arquivo solicitando que o usuário digite o nome, após salva e fecha o 
novo arquivo. 
Exemplo 2: 
A macro abaixo abre uma pasta de trabalho existente, localizando o caminho onde a mesma se 
encontra. 
63
Objeto Application 
O objeto Application representa todo o aplicativo Microsoft Excel e seus derivados. Através dele, 
podemos configurar a visualização, execuções e outras funcionalidades do Excel. O Objeto 
Application possui várias propriedades e métodos. 
PROPRIEDADE THISWORKBOOK 
Retorna um objeto de pasta de trabalho que representa a pasta onde a macro código atual está 
funcionando. ThisWorkbook sempre devolve a pasta no qual o código está sendo executado. 
PROPRIEDADE DISPLAYALERTS 
Habilita ou desabilita a exibição de mensagens de alerta como resposta de algumas ações do 
Microsoft Excel enquanto uma macro está em execução. True habilita as mensagens, False 
desabilita. 
Exemplo1: 
Este exemplo fecha a pasta de trabalho “Tempo.xls” sem perguntar se deseja salvar alterações. 
Exemplo2: 
A macro abaixo exclui uma planilha sem aviso “Application.DisplayAlerts = False”, antes de 
excluir a segunda planilha mostra um aviso “Application.DisplayAlerts = True”. 
64
PROPRIEDADE SCREENUPDATING 
Essa propriedade permite desativar a atualização quando False. True a atualização da tela é 
ativada. 
Exemplo: 
No exemplo abaixo você verá uma folha em branco, sem qualquer movimento e, em seguida, uma 
folha onde as células de A1 a A10000 são iguais a "77". 
MÉTODO QUIT 
Esse método encerra o Microsoft Excel com a opção que pergunta ao usuário se deseja salvar os 
arquivos que estão sendo fechados, caso marque “não” fecha sem salvar. 
Exemplo: 
MÉTODO ONKEY 
Executa um procedimento especificado quando uma combinação de teclas ou chave é 
pressionada. 
Exemplo1: 
O exemplo desabilita a configuração padrão da tecla TAB. 
65
Exemplo2: 
Habilita a configuração padrão da tecla TAB. 
Exemplo3: 
Quando pressionar a tecla TAB será exibido uma caixa de mesnsagem. 
66
VARIÁVEIS DO TIPO OBJETO 
As variáveis do tipo objeto se refere a um objeto. Uma variável de objeto pode armazenar muitos 
valores, todas as propriedades associadas ao objeto estão associadas a variável objeto. 
Declaração da Variável Objeto 
Sintaxe: 
Dim <Var_Objeto> As Objeto ‘Atribuição de uma variável Objeto 
Set <Var_Objeto> = <Objeto> 
Onde: 
Set – palavra chave que indica a associação do objeto a uma variável do tipo objeto 
<Var_Objeto> - Variável Objeto 
<Objeto> - Tipo do objeto a ser atribuído à variável 
 Dim oob As Object - O tipo de variável de objeto que você usar para armazenar o objeto retornado
pode afetar o desempenho do seu aplicativo. Declarar uma variável de objeto com a cláusula As Object
cria uma variável que pode conter uma referência a qualquer tipo de objeto.
 Dim Cel As Range - Quandovocê define uma variável de objeto para um objeto Range, você pode
facilmente manipular o intervalo usando o nome da variável.
 Dim Planilha WorkSheet - Uma variável objeto Worksheet pode representar uma planilha ou um
conjunto de planilhas, assim você pode manipular as planilhas utilizando o nome da variável.
 Dim Arquivo Workbook – Quando você definir uma variável de objeto para um objeto Workbook,
você pode manipular as pastas de trabalho do Microsoft Excel fazendo referencia a variável.
 Dim X As Application – Uma variável objeto application pode representar todo o aplicativo Microsoft
Excel, contendo opções de configurações, métodos que retornam objetos e assim por diante.
Exemplo da Declaração: 
Dim aplicativo As Excel.Application 
Dim arquivo As Excel.Workbook 
Dim planilha As Excel.WorkSheet 
Set aplicativo = CreateObject("Excel.Application") 
Set arquivo = aplicativo.Workbooks.Add 
Set planilha = arquivo.Worksheets(1) 
67
Exemplo1: 
O exemplo seguinte cria a variável de objeto cel, após atribui a mesma o intervalo A1:E10 da 
plan1 na pasta de trabalho ativa. As instruções modificam propriedades do intervalo utilizando o 
nome da viriável que é referente ao objeto de intervalo. 
Exemplo2: 
Você pode combinar vários intervalos em um objeto Range usando o método Union. O exemplo 
seguinte cria um objeto Range chamado unicel, define-o com os intervalos A1:B2 e C3:D4 e, em 
seguida, formata com negrito os intervalos combinados. 
O exemplo abaixo abre uma nova pasta de trabalho do Microsoft Excel. 
68
Suplementos 
Os suplementos fornecem comandos e funcionalidades opcionais para o Microsoft Excel. 
Suplementos são projetos desenvolvidos em VBA Excel, com a extensão XLA completamente 
ocultos aos olhos do usuário. Uma vez que um suplemento é criado e instalado no Excel, as suas 
macros ou funções podem ser utilizadas em qualquer pasta de trabalho que estiver aberta. É 
permitido salvar dados no arquivo de suplementos, mas você não pode selecionar o arquivo. Além 
disso, se você gravar os dados no arquivo de suplementos que você quer disponibilizar 
futuramente, os códigos de suplementos precisam tratar o salvamento do arquivo. Você pode 
adicionar ThisWorkbook.Save ao evento Workbook_BeforeClose do suplemento. 
CONVERTENDO UMA PASTA DE TRABALHO EM UM SUPLEMENTO 
Siga os passos abaixo para converter uma pasta de trabalho em suplementos. 
Ao salvar a pasta, utilizar a opção salvar como e no tipo de arquivo escolher suplemento (*.xlam). 
69
Note que o arquivo muda a extensão de xlsm para xlam e o local de salvamento muda 
automaticamente para uma pasta de suplementos. 
 Converter arquivo em suplemento utilizando o Editor do VBA - Abra a pasta de trabalho que você deseja
converter em um suplemento. Alterne para o Editor VBA. No Project Explorer, dê um clique duplo em
ThisWorkbook. Na janela, Propriedades localize a propriedade chamada IsAddin e mude seu valor para
True, conforme figura abaixo:
Pressione Ctrl+G para exibir a janela de verificação Imediata. Nessa janela, salve o arquivo, 
utilizando uma extensão xlam, conforme a figura abaixo: 
70
INSTALANDO O SUPLEMENTO 
No menu de opçoes do excel, selecionar opções e suplementos. 
FECHANDO SUPLEMENTOS 
Desmarque o suplemento caixa de diálogo Suplementos. Isso fecha o suplemento para essa 
sessão e assegura que ele não será aberto durante sessões futuras ou até que você o ative 
novamente. 
Para excluir um suplemento é necessário fazer pelo Windons Explorer. Localize o arquivo 
renomeie e coloque em outro lugar, ou se realmente não quiser o suplemento pode excluir 
definitivamente com Delete. 
71
FORMULÁRIOS 
O userform é um formulário personalizável que o Microsoft Excel tem disponível para interagir com 
a planilha de cálculo. Aparece sobreposto à planilha de cálculo não permitindo qualquer seleção 
enquanto este estiver aberto. Podem-se colocar nos userforms uma grande quantidade de 
controles como textbox, listbox, image, combobox, entre muitos outros ou utilizar alguns activex. O 
objetivo é melhorar a utilização das planilhas quer visualmente quer funcionalmente. 
Desenhando o Formulário 
72
Formulário em execução 
Código em VBA para a inclusão dos dados na planilha 
Private Sub Fechar_Click() 
 Unload UserForm_Cadastro 
End Sub 
73
Private Sub OK_Click() 
Dim Linha As Integer 
If Me.TextBox_Nome.Value = "" Then 
MsgBox "Falta digitar o nome do Cliente", vbCritical, "Atenção" 
Me.TextBox_Nome.SetFocus 
 End If 
Range("A65536").End(xlUp).Offset(1, 0).Select 
Linha = ActiveCell.Row 
If MsgBox("Confirma a Inclusão ? ", vbYesNo, "Atenção") = vbYes Then 
Cells(Linha, 1) = TextBox_Nome.Value 
Cells(Linha, 2) = TextBox_Rua.Value 
Cells(Linha, 3) = TextBox_Bairro.Value 
Cells(Linha, 4) = TextBox_Cidade.Value 
Cells(Linha, 5) = TextBox_CEP.Value 
Cells(Linha, 6) = TextBox_Estado.Value 
End If 
TextBox_Nome.Value = "" 
TextBox_Rua.Value = "" 
TextBox_Bairro.Value = "" 
TextBox_Cidade.Value = "" 
TextBox_CEP.Value = "" 
TextBox_Estado = "" 
TextBox_Nome.SetFocus 
Range("A65536").End(xlUp).Offset(0, 0).Select 
Linha = ActiveCell.Row 
End Sub 
CONTROLES DE INTERFACE 
Rótulo (Label1) – permite colocar um texto dentro do formulário. Para alterar o texto a ser 
exibido no controle, clique na propriedade Caption e digite o texto desejado. Para formatar 
use as propriedades Font e ForeColor. 
 Caixa de Texto (TextBox1) – são as melhores formas de receber dados de entrada. A caixa de 
texto permite digitação de qualquer tipo de dados alfanumérico, numérico, datas e até mesmo 
caracteres especiais. 
Método set Focus – esse método dá foco á caixa de texto que o chamou. 
Evento Change - ocorre sempre que uma cauxa de texto tem sua propriedade Text alterada, ou 
seja, com qualquer digitação executada. 
Evento Enter – ocorre quaando a caixa de texto recebe o foco. 
Evento Exit – entra em ação sempre que a caixa de texto perde o foco. 
 Botão de Comando (CommandButton1) – os botões de comandos, normalmente, são os 
responsáveis pelo serviço pesado de um formulário. É através deles que as funções finais são 
executadas e que determinam as consequências da aplicação. Os botões são sempre o ponto de 
saída de um formulário. As propriedades recomendáveis para alteração: Name, Caption. As 
demais propriedades podem ser alteradas conforme conceitos descritos no item Propriedades 
Comuns. 
74
 Caixa de Combinação (ComboBox1) – serve para mostrar ao usuário uma lista de opções 
multipla escolha. Elas podem, ou não, permitir digitação, è uma boa forma de impedir que o 
usuário insira em sua planilha informações que não estejam se acordo com seus objetivos. Abaixo 
segue as principais propriedades especificas, Métodos e Eventos do controle caixa de 
combinação. 
Propriedade List – permite acesso a lista de opções. Por exemplo, se uma lista possuir cinco 
elementos, ComboBox1.list(0) será o primeiro, e ComboBox1.list(5) será o último elemento da 
lista. 
Propriedade Style – essa propreidade vai definir o estilo da caixa de combinação. Temos duas 
opções fmStyleDropDownCombo – permite a digitação, e fmStyleDropDownList – obriga a escolha 
de um item na lista. 
Propriedade ListIndex – essa é uma propriedade muito importante das caixas de combinação, pois 
retorna ou determina qual item está selecionado. Este retorno é um índex que nos permite 
acessar qualquer elemento de uma caixa de combinação. 
Propriedade ListCount – retorna a quantidade de ityens dentro da lista. 
Método AddItem - método que permite adicionar um novo item em uma caixa de combinação. 
Sua sintaxe: 
Onde Item é uma string ou variável indicando o texto do item a ser inserido, e Índex é a posição 
em que o item deve ser inserido na caixa de combinação. 
Método RemoveItem – Permite remover um item da lista de uma caixa de combinação. Sua 
sintaxe: 
Método Clear – remove todos os itens de uma caixa de combinação. 
 Caixa de Listagem (ListBox1) – as caixas de listagem tem basicamente as mesmas funções 
das caixas de combinação. Suaúnica diferença é que elas se apresentam no formato de lista 
aberta. Vejamos algumas propriedades especificas. 
Propriedade MultiSelect – permite múltipla escolha em uma caixa de mensagem. Temos três 
opções: fmMultiSelectSigle – permite a seleção de um único item da lista; fmMultiSelectMulti – 
permite mais de um item selecionada, utilizando o mouse para marcar e desmarcar os itens e 
fmMultiSelectExtended – permite mais de um item selecionado, utilizandoas teclas Ctrl e Shift em 
suas funções padrões de seleção. 
Propriedade Selected – através dessa propriedade, aliada ao índice, podemos determinar se um 
item está ou não selecionado. 
 Caixa de Seleção (CheckBox1) – caixa de seleção é um contole booleano, ou seja, permite 
escolher entre Sim e Não para um determinado item. 
Propriedade Value – esta propriedade define o estado do botão. True marca o botão e false 
desmarca. 
 Botão de Opção (OptionButton1) - Os botões de opção tem características semelhantes as 
caixas de combinação. Porem os botões não podem trabalhar sozinhos; são necessários pelo 
menos dois botões ou mais para que possa haver uma escolha entre os botões. Se colocar três 
ou mais botões no formulário, ao escolher um os outros automáticamente são desmarcados. Para 
conseguir criar vários blocos de opção em um mesmo formulário, devemos colocar um cotrole 
Frame, para que possa servir de contêiner de controle, assim os botões que estão dentro de um 
frame não influenciam no estado dos botões que estejam em outros frames ou no formulário. 
75
 Quadro (Frame1) – Muito utilizado como contêiner de controles, tais como, Botão de Opção e 
Caixa de Seleção. 
Propriedades Comuns aos Controles 
Name – propriedade que identifica o controle nos códigos. 
Caption – texto presente no controle. 
Left /Top - posição relativa ao canto superior esquerdo do formulário. 
Height / Width - altura e comprimento do controle 
BackColor - define cor do fundo do objeto selecionada. 
ForeColor - define cor do texto do objeto selecionado. 
BorderColor – permite definir a cor da borda do formulário. 
BorderStyle – determina o estilo de borda do formulário. 
BackStyle – determina o estilo do fundo do controle (transparente/opaco) 
Font – Exibe a caixa padrão de Fonte do Sitema onde podemos determinar a configuração dos 
textos exibidos no formulário ou nos controles. 
ControlTipText – exibe um texto de ajuda quando se deixa o mouse sobre o controle. 
Propriedades comuns em Caixa de Combinação e Caixa de Listagem 
RowSource - origem dos dados do controle. Pode ser um intervalo de células da planilha. 
ColumnCoun - número de colunas a serem exibidas no controle. 
ColumnWidths - tamanho de cada coluna. 
BoundColumn - coluna dependente associada à propriedade Value. 
TextColumn - coluna dependente associada à propriedade Text. 
Value - valor da coluna dependente. 
Text - valor presente na caixa. 
ControlSource - célula ligada à propriedade Value da caixa 
MÉTODOS DE UM USERFORM 
Show - apresenta o formulário 
Hide - esconde o formulário mas não o remove da memória 
Unload - remove o formulário da memória 
EVENTOS EM UM USERFORM 
Os eventos mostrados na sequência servem também para vários outros controles, portanto mais a 
frente podemos apenas expandir o conceito. 
Activate – ocorre quando o formulário for ativado. 
Click – dá-se toda vez que o formulário for clicado. 
Doubleclick – acontece sempre que o formulário receber um duplo clique. 
Deactivate – ocorre quando um formulário for desativado. 
Initialize – acontece toda vez que um formulário for carregado para memória. 
76
PROGRAMANDO O USERFORM 
Diferentemente dos outros módulos, dar um duplo clique no módulo do formulário abre o 
formulário no Modo de Criação. Para visualizar o código, clique com o botão direito do mouse no 
módulo ou no userform no Modo de Criação e selecione Exibir Código, ou de um duplo clique no 
userform. 
Exatamente como uma planilha, um userform tem eventos desencadeados por ações. Depois que 
o userform foi adicionado ao projeto, os eventos estarão disponíveis na lista suspensa que fica no
canto superior direito da janela de código, selecionando-se Userform na lista suspensa Objeto,
canto superior esquerdo da janela código.
Vários eventos para o userform podem ser selecionados na lista suspensa na parte superior 
esquerda da janela Código 
77
PROGRAMANDO CONTROLES 
Para programar um controle, selecione o controle no qual você deseja programar, clique com o 
botão direito do mouse sobre o controle, selecione Exibir Código ou dê um duplo clique no 
controle. O rodapé, o cabeçalho e a ação padrão para o controle são automaticamente inseridos 
na janela de código. Para ver e/ou escolher outras ações para um controle, selecione o controle 
na lista de Objeto e visualize as ações na lista de eventos. Podem ser escolhidas várias ações 
para um mesmo controle na lista de eventos. 
No exemplo abaixo criamos um programa no controle Botão de Comando com o Name BTN_OK, 
o programa tem o objetivo de inserir nome e idade em uma planilha do excel.
Antes de executar o userform precisamos chamá-lo a partir de qualquer módulo, para 
issoutilizamos o método Show, sua sintaxe: NameForm.Show. 
78
Após executar o código acima você visualizará seu formulário conforme abaixo a cada informação 
que inserir nas caixas de textos e clicar no botão Ok uma planilha do Excel estará recebendo os 
dados. 
79
IMPORTAÇÃO DE DADOS 
Para a importação de dados para uma planilha do Excel, precisamos conhecer os 
dados que estão na origem e com isso programar a leitura e a inserção dos dados na 
planilha. 
Aqui demonstramos alguns dados a serem importados. 
Vamos criar uma nova planilha com o cabeçalho preparando para receber os dados. 
Agora vamos digitar o código que fará todo o trabalho que necessitamos. 
Sub Importa_Dados() 
Dim Arq_Atual As String 
Dim Arq_Dados As String 
Dim Ult_Linha As Long 
Dim Cod As Long 
Dim Pais As String 
Dim Prod As String 
Dim Vend As String 
Dim Data As Date 
80
Dim Preço As Currency 
Dim Quant As Long 
Dim Desc As Double 
Dim Total As Currency 
Dim Nome_Vendedor As String 
Nome_Vendedor = UCase(InputBox("Nome do Vendedor")) 
If Nome_Vendedor = "" Then 
 Exit Sub 
End If 
Application.ScreenUpdating = False 
Arq_Atual = ActiveWorkbook.Name 
Dados.Select 
Range("A2:I1048576").ClearContents 
Range("A1").Select 
Workbooks.Open "F:\CURSOS\Excel VBA - SEFAZ\Base_Vendas.xlsm" 
Arq_Dados = ActiveWorkbook.Name 
Range("A1048576").End(xlUp).Offset(0, 0).Select 
Ult_Linha = ActiveCell.Row 
Range("A2").Select 
Do While ActiveCell.Row <= Ult_Linha 
If UCase(Cells(ActiveCell.Row, 4)) = Nome_Vendedor Then 
Windows(Arq_Atual).Activate 
ActiveCell.Offset(1, 0).Select 
Windows(Arq_Dados).Activate 
Windows(Arq_Atual).ActiveCell = Cells(ActiveCell.Row, 1) 
Windows(Arq_Atual).ActiveCell.Offset(0, 1) = Cells(ActiveCell.Row, 2) 
Windows(Arq_Atual).ActiveCell.Offset(0, 2) = Cells(ActiveCell.Row, 3) 
Windows(Arq_Atual).ActiveCell.Offset(0, 3) = Cells(ActiveCell.Row, 4) 
Windows(Arq_Atual).ActiveCell.Offset(0, 4) = Cells(ActiveCell.Row, 5) 
Windows(Arq_Atual).ActiveCell.Offset(0, 5) = Cells(ActiveCell.Row, 6) 
Windows(Arq_Atual).ActiveCell.Offset(0, 6) = Cells(ActiveCell.Row, 7) 
Windows(Arq_Atual).ActiveCell.Offset(0, 7) = Cells(ActiveCell.Row, 8) 
Windows(Arq_Atual).ActiveCell.Offset(0, 8) = Cells(ActiveCell.Row, 9) 
End If 
ActiveCell.Offset(1, 0).Select 
Loop 
Windows(Arq_Dados).Close SaveChanges:=False 
ActiveWorkbook.Save 
Application.ScreenUpdating = True 
MsgBox "Concluido.", vbInformation, "Conclusão" 
End Sub 
81
EXPORTAÇÃO DE DADOS 
Outro exemplo é a exportação de dados para uma outra pasta de trabalho do Excel, 
gerando dados em uma planilha. 
Abaixo a planilha com alguns dados de origem: 
O código que fará o trabalho de exportação: 
Sub Exporta_Dados() 
Dim Ult_Linha As Long 
Dim Arq_Produtos As String 
Dim Arq_Novo As String 
Application.ScreenUpdating = False 
Arq_Produtos = ActiveWorkbook.Name 
' Caso o arquivojá esteja aberto, então não dá o alerta 
Application.DisplayAlerts = False 
Workbooks.Open "F:\CURSOS\Excel VBA - SEFAZ\" & "Arq Dados Vendas 1.xlsx" 
Application.DisplayAlerts = True 
Arq_Novo = ActiveWorkbook.Name 
Range("A2:D1048576").ClearContents 
Windows(Arq_Produtos).Activate 
Ult_Linha = Range("A1048576").End(xlUp).Row 
82
Range("A2").Select 
Do While ActiveCell.Row <= Ult_Linha 
Range("A" & ActiveCell.Row & ":D" & ActiveCell.Row).Copy 
Windows(Arq_Novo).Activate 
Range("A1048576").End(xlUp).Offset(1, 0).Select 
ActiveCell.PasteSpecial xlPasteValues 
Windows(Arq_Produtos).Activate 
ActiveCell.Offset(1, 0).Select 
Loop 
Application.CutCopyMode = False 
Windows(Arq_Novo).Close savechanges:=True 
Application.ScreenUpdating = True 
MsgBox "Concluido.", vbInformation, "Exportação" 
End Sub 
83
OBRIGADO!
Excel - Macros com VBA
84

Continue navegando