Você está na página 1de 92

Todos direitos reservados.

Proibida a reproduo,
mesmo parcial, por qualquer
processo mecnico,
eletrnico, reprogrfico, etc.,
sem a autorizao, por
escrito, do(s) autor(es) e da
editora.

MACRO E VBA
PARA MS EXCEL

MACRO E VBA PARA EXCEL


SUMRIO
INTRODUO......................................................................................................................................................................................4
MACROS ...............................................................................................................................................................................................4
NVEIS DE SEGURANA DE MACROS ......................................................................................................................................................4
GRAVANDO UMA MACRO .....................................................................................................................................................................6
EXECUTANDO A GRAVAO DA MACRO ..............................................................................................................................................7
ABRINDO P ASTAS DE TRABALHO COM MACROS ...................................................................................................................................9
EXECUTANDO UMA MACRO ............................................................................................................................................................... 10
CONHECENDO A JANELA MACRO ....................................................................................................................................................... 11
EXECUTANDO A MACRO UTILIZANDO TECLA DE ATALHO E BOTO DA BARRA DE FERRAMENTAS ....................................................... 11
O EDITOR DO VISUAL BASIC...................................................................................................................................................... 14
CONHECENDO O EDITOR DO VISUAL BASIC ........................................................................................................................................ 14
OS COMPONENTES DA JANELA DO EDITOR........................................................................................................................................... 14
A BARRA DE FERRAMENTAS P ADRO................................................................................................................................................ 15
O P ROJECT EXPLORER........................................................................................................................................................................ 16
A JANELA DE CDIGOS........................................................................................................................................................................ 16
ENTENDENDO UM POUCO OS CDIGOS................................................................................................................................................. 17
A JANELA VERIFICAO IMEDIATA .................................................................................................................................................... 17
CRIANDO E EDITANDO MACROS.............................................................................................................................................. 18
CRIANDO UMA MACRO ...................................................................................................................................................................... 18
VISUALIZANDO O CDIGO DAS MACROS ............................................................................................................................................. 18
VISUALIZANDO O CDIGO DAS MACROS ............................................................................................................................................. 18
OBJETOS, MTODOS E PROPRIEDADES ................................................................................................................................................ 19
EDITANDO MACROS ........................................................................................................................................................................... 20
CRIANDO UMA MACRO COM CLULAS SELECIONADAS ........................................................................................................................ 20
TESTANDO A MACRO PARA FORMATAR TABELA ................................................................................................................................ 21
EVITANDO ERROS COM MACROS ......................................................................................................................................................... 23
TRATANDO O ERRO ............................................................................................................................................................................. 23
CRIANDO MACROS COM V RIOS OBJETOS E FUNES DO EXCEL.......................................................................................................... 24
CONHECENDO A PASTA DE TRABALHO................................................................................................................................................ 25
CONSTRUINDO A CAIXA DE DILOGO .................................................................................................................................................. 26
CRIANDO A MACRO FILTRAR.............................................................................................................................................................. 29
CRIANDO A MACRO EXIBIR_TUDO ..................................................................................................................................................... 29
CRIANDO A MACRO EXIBIR_CAIXA ................................................................................................................................................... 29
VINCULANDO AS MACROS AOS CONTROLES ........................................................................................................................................ 30
INTRODUO AO VBA.................................................................................................................................................................. 32
VBA - VISUAL BASIC FOR APPLICATION............................................................................................................................................ 32
P ROGRAMAO EM VBA................................................................................................................................................................... 32
VARIVEIS ......................................................................................................................................................................................... 33
TIPOS DE VARIVEIS ........................................................................................................................................................................... 33
DECLARAO DE VARIVEIS.............................................................................................................................................................. 34
CONSTANTES ..................................................................................................................................................................................... 35
OPERADORES...................................................................................................................................................................................... 36
A ESTRUTURA DO VBA...................................................................................................................................................................... 37
P ROCEDIMENTOS ................................................................................................................................................................................ 38
SUBS E FUNCTIONS ............................................................................................................................................................................. 38
ARGUMENTOS DE SUBS E FUNCTIONS.................................................................................................................................................. 39
OS ARGUMENTOS DE UMA ROTINA ..................................................................................................................................................... 39
www.webaula.com.br
Pg.: 2/2
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


CONSTRUINDO PROCEDIMENTOS ......................................................................................................................................................... 40
TESTANDO PROCEDIMENTOS ............................................................................................................................................................... 40
CONSTRUINDO FUNES ..................................................................................................................................................................... 41
TESTANDO FUNES ........................................................................................................................................................................... 42
CAIXAS DE MENSAGEM...................................................................................................................................................................... 43
ESTRUTURAS CONDICIONAIS.............................................................................................................................................................. 48
O COMANDO IF.................................................................................................................................................................................. 48
O COMANDO SELECT ......................................................................................................................................................................... 51
ESTRUTURAS DE REPETIO .............................................................................................................................................................. 52
O COMANDO FOR .............................................................................................................................................................................. 52
O COMANDO WHILE.......................................................................................................................................................................... 54
DEPURAO DE CDIGO ........................................................................................................................................................... 56
DEPURANDO UM CDIGO ................................................................................................................................................................... 56
TRATAMENTO DE ERROS EM ROTINAS................................................................................................................................. 61
TRATANDO ERROS ............................................................................................................................................................................. 61
GERANDO ERROS ............................................................................................................................................................................... 63
P ROPRIEDADES E MTODOS DO OBJETO ERR ...................................................................................................................................... 66
A HIERARQUIA DE OBJETOS DO EXCEL............................................................................................................................... 68
OBJETOS DO EXCEL ............................................................................................................................................................................ 68
O OBJETO APPLICATION..................................................................................................................................................................... 68
O OBJETO WORKBOOKS..................................................................................................................................................................... 70
O OBJETO WORKSHEETS .................................................................................................................................................................... 71
O OBJETO RANGE .............................................................................................................................................................................. 73
WORKBOOKS E WORKSHEETS................................................................................................................................................. 75
O P ROJECT EXPLORER........................................................................................................................................................................ 75
P ROGRAMANDO COM EVENTOS........................................................................................................................................................... 76
O USERFORM................................................................................................................................................................................... 79
CONHECENDO OS FORMULRIOS - USERFORMS ................................................................................................................................. 79
CRIANDO FORMULRIOS .................................................................................................................................................................... 81
P ROGRAMANDO O FORMUL RIO......................................................................................................................................................... 84
UTILIZANDO O FORMULRIO NA PLA NILHA ........................................................................................................................................ 87
SEGURANA DE MACROS........................................................................................................................................................... 89
SEGURANA ....................................................................................................................................................................................... 89
P ROTEGENDO CDIGOS ....................................................................................................................................................................... 90
CONCLUSO..................................................................................................................................................................................... 92

www.webaula.com.br
Pg.: 3/3
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


INTRODUO
MACROS
Uma macro um conjunto de instrues que executada dentro de um aplicativo do
Microsoft Office. Caso execute uma tarefa vrias vezes no Microsoft Excel, por exemplo, voc pode
automatiz-la com uma macro. Uma macro uma seqncia de comandos e funes armazenadas em um
mdulo do Visual Basic e pode ser executada sempre que voc precisar executar a tarefa.
Por exemplo, se voc sempre faz a mesma formatao de ttulos em suas planilhas como
fonte Arial, tamanho 14, negrito e sublinhado duplo, voc pode criar uma macro com todas essas
formataes j definidas e, no momento de utilizar fica muito mais simples, ao invs de ter que selecionar a
fonte, selecionar o tamanho, selecionar o boto negrito e selecionar o sublinhado duplo, voc simplesmente
seleciona a macro, que pode estar em forma de boto em alguma barra de ferramentas ou como opo em
algum menu.
Gravao de uma macro: Quando uma macro gravada, o Microsoft Excel armazena
informaes sobre cada ao que voc faz ao executar um srie de comandos. Quando voc para a gravao
da macro, essa seqncia de aes realizadas formam a macro. O Visual Basic armazena cada macro em um
novo mdulo anexado a uma pasta de trabalho.
Execuo de uma macro: Voc pode executar uma macro escolhendo-a na lista na caixa de
dilogo Macros, que se encontra no menu Ferramentas/Macro. Para que uma macro seja executada sempre
que clicar em um boto especfico ou pressionar uma determinada combinao de teclas, voc pode atribuir a
macro a um boto da barra de ferramentas, um atalho do teclado ou um objeto grfico em uma planilha.
Em Ferramentas/Macro voc encontra outras opes alm de Macros. Macros traz a lista de
macros j existentes em sua pasta de trabalho. Gravar nova macro usada quando voc deseja criar uma
nova macro. Segurana define o nvel de segurana de suas pastas de trabalho e Editor de Visual Basic que
exibe o cdigo de suas macros.
Gerenciamento de suas macros: Aps gravar uma macro, voc pode exibir seu cdigo com
o Editor do Visual Basic para corrigir erros ou alterar o que a macro faz. Por exemplo, caso deseje que a
macro de formatao de ttulo tambm deixe o ttulo em itlico, pode gravar outra macro para aplicar itlico a
uma clula e copiar as instrues dessa macro para a macro de formatao de ttulo.
O Editor do Visual Basic um programa criado para facilitar a gravao e edio de cdigo de
macro para iniciantes. Com uma viso simples de como funciona o Visual Basic, voc consegue fazer
alteraes simples nas macros. Com o Editor do Visual Basic, possvel editar macros, copiar macros de um
mdulo para outro, copiar macros entre pastas de trabalho diferentes, renomear os mdulos que armazenam
as macros ou renomear as prprias macros.
Segurana de macros: O Microsoft Excel fornece proteo contra vrus que podem ser
transmitidos atravs das macros. Sempre que abrir uma pasta de trabalho que contenha macros, voc poder
ser avisado que aquela pasta de trabalho contm macros, podendo aceitar ou no que o arquivo seja aberto
com macros, para isso, voc precisa ativar os nveis de segurana das macros.

NVEIS DE SEGURANA DE MACROS


Para criarmos uma macro muito simples, mas, antes de qualquer coisa, vamos verificar
como est o nvel de segurana de nossas pastas de trabalho, pois, dependendo do nvel de segurana
nenhuma macro pode ser executada.

janela a seguir:

Voc pode fazer isso selecionando a opo Ferramentas/Macro/Segurana, aparecendo a

www.webaula.com.br
Pg.: 4/4
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

As opes de nvel de segurana definem o modo como o Excel trabalha a proteo contra os
vrus de macro. Na caixa de dilogo Segurana (menu Ferramentas/Macro), em diferentes condies, em
todas as configuraes, se o software antivrus que funciona com o Microsoft Office estiver instalado e o
arquivo contiver macros, o arquivo ser examinado para verificar a existncia de vrus conhecidos antes de ser
aberto.
Os nveis de segurana disponveis so:

Alto: neste nvel de segurana as macros passam por um processo de segurana rigoroso
e, na maioria dos casos, as pastas de trabalho so abertas sem as macros, ou seja, as
macros no so ativadas.

Mdio: neste nvel de segurana o usurio interage ao abrir uma pasta de trabalho que
contenha macros; ele questionado se deseja abrir o arquivo com habilitando as macros
ou no.

Baixo: quando o nvel de segurana definido como baixo, todas as macros so tratadas
da mesma forma, independentemente se o arquivo contm ou no macro, ele ser aberto
da mesma forma, se contm macros, todas as macros so ativadas.

O nvel de segurana mais utilizado o Mdio, pois, com a definio desse nvel, sempre que
abrirmos uma pasta de trabalho (arquivo) que contenha macros, o Microsoft Excel nos perguntar se
desejamos habilitar ou desabilitar as macros existentes no arquivo. Dessa forma, podemos desabilitar as
macros, caso, no conheamos a procedncia do arquivo que desejamos abrir.
Recapitulando, passo a passo como definir o nvel de segurana no Microsoft Excel:

No menu Ferramentas, clicamos em Macro.

Selecionamos a opo Segurana.

Na guia Nvel de segurana selecionamos o nvel de segurana que desejamos.

www.webaula.com.br
Pg.: 5/5
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


GRAVANDO UMA MACRO
No menu Ferramentas, posicionamos o ponteiro sobre Macro e, em seguida clicamos em
Gravar nova macro. Aparecer a caixa de dilogo abaixo:

Na caixa Nome da macro, inserimos um nome para a macro que estamos criando.
Observaes:

O primeiro caractere do nome da macro deve ser uma letra. Os demais caracteres
podem ser letras, nmeros ou caracteres sublinhados;

No so permitidos espaos no nome de uma macro;

No utilize caracteres especiais como nome da macro, como, por exemplo, %, $, #,


&, entre outros.

No utilize como nome de macro que seja uma referncia de clula, como, por
exemplo, A1, B6, entre outros.

Se desejamos executar a macro pressionando uma tecla de atalho do teclado, precisamos


inserir uma letra na caixa Tecla de atalho. Podemos usar CTRL+ letra (para letras minsculas) ou
CTRL+SHIFT+ letra (para letras maisculas), onde letra representa qualquer tecla de letra do teclado.
A letra da tecla de atalho usada no pode ser um nmero ou caractere especial, como, por
exemplo, %, $, #, &, entre outros.
Observao:

A tecla de atalho substituir qualquer tecla de atalho padro do Microsoft Excel


enquanto a pasta de trabalho que contm a macro estiver aberta. Por exemplo, se
voc utilizar a letra C, ou seja, tecla de atalho CTRL + C, voc estar substituindo a
funo padro desse atalho que Copiar para a macro que voc est criando.

Na caixa Armazenar macro em, escolhemos o local onde desejamos gravar a macro.
As opes disponveis so:

Pasta de trabalho pessoal de macros: a macro fica disponvel toda vez que voc
utilizar o Excel, para qualquer pasta de trabalho;

www.webaula.com.br
Pg.: 6/6
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Nova pasta de trabalho: abre uma nova pasta de trabalho e a macro fica disponvel
quando essa nova pasta de trabalho estiver aberta;

Esta pasta de trabalho: grava a macro na pasta de trabalho ativa, a macro fica
disponvel nesta pasta de trabalho.

Podemos ainda adicionar uma descrio da macro na caixa Descrio. interessante


descrever nesta caixa o que a macro faz, pois, esse comentrio pode ajud-lo no futuro, quando for dar
alguma manuteno nesta macro voc saber o que a seqncia de comandos faz.

EXECUTANDO A GRAVAO DA MACRO


Quando definimos os dados de gravao da macro:

figura abaixo:

Nome da macro;

Tecla de atalho;

Local de armazenamento, e;

Descrio.

E, depois disso, clicamos no boto OK, aparecer uma barra de ferramentas, conforme a

Esta barra de ferramentas chamada de barra de ferramentas Parar gravao. Ela possui
exatamente a funo que o nome dela diz, ela serve para parar a gravao da macro, ou seja, tudo o que
voc fizer enquanto esta barra de ferramentas estiver ativa, estar sendo gravado, quando terminar de
executar as aes da macro, pare a gravao clicando no boto Parar gravao.
Alm do boto Parar gravao, esta barra tambm possui o boto Referncia relativa. Este
boto quando ativado faz a gravao dos endereos relativos das clulas e no endereos absolutos. Caso
voc queira gravar endereos relativos de clulas, voc pode selecionar esse boto. Se marcar este boto,
toda a macro a ser gravada ser executada com referncias relativas at que voc desmarque o boto.
Vamos explicar melhor como funciona essa gravao de macro:
Suponhamos que queremos fazer uma macro para justificar o texto em alguma clula e
centraliz-lo verticalmente, conforme mostrado nas clulas a seguir:

www.webaula.com.br
Pg.: 7/7
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Vamos no menu Ferramentas, opo Macro e selecionamos a opo Gravar nova macro.
Preencheremos a caixa de dilogo Gravar macro da seguinte forma:

Quando clicamos no boto Ok j sabemos que surge a barra de ferramentas Parar gravao.

Agora, iniciamos o processo de gravao da macro, ou seja, no clicamos no boto Para


gravao e, sim, na seqncia de comandos que a macro far.
No menu Formatar, selecionamos a opo Clulas. Clicamos na guia Alinhamentos.
Definiremos as configuraes do alinhamos de texto da seguinte forma:

Horizontal: Justificar;

www.webaula.com.br
Pg.: 8/8
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Vertical: Centro.

Vejamos a figura a seguir:

Clicamos em Ok. A caixa de formatao de clulas ser fechada e nossa macro est pronta.
Agora clicamos no boto Parar gravao e a gravao da macro ser finalizada.

ABRINDO PASTAS DE TRABALHO COM MACROS


A macro que acabamos de criar no exemplo anterior ficou armazenada nesta pasta de
trabalho, conforme definimos. Toda vez que abrirmos esta pasta de trabalho, poderemos utilizar esta macro,
desde que para isso optamos por ativar as macros do arquivo.

mensagem:

Sempre que abrimos esta pasta de trabalho (este arquivo), aparecer a seguinte caixa de

www.webaula.com.br
Pg.: 9/9
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Esta mensagem aparece porque o nvel de segurana de macros foi marcado como mdio.
Caso tivssemos marcado como baixo, o arquivo seria aberto normalmente com a macro ativa e caso
tivssemos marcado alto, o arquivo seria aberto com a macro desativada.
Se escolhemos a opo Ativar macros, poderemos utilizar a macro criada. Se escolhemos a
opo Desativar macros, no ser possvel usar a macro criada.

EXECUTANDO UMA MACRO


Para utilizar a macro feita por ns. Faremos o seguinte:
Selecionamos a opo Ferramentas/Macro/Macros. A janela abaixo ser mostrada:

Vemos que a macro FormatarCelula encontra-se listada nesta janela. Toda macro criada nesta
pasta de trabalho ou em alguma outra pasta de trabalho que esteja aberta ou ainda na pasta de trabalho
pessoal de macros apareceria nesta janela.
Voc somente precisa selecionar a macro desejada, neste caso, a macro FormatarCelula e
depois clicar no boto Executar.
Ao fazer isso, o contedo da clula A1 da planilha ficou formatado com texto horizontalmente
justificado e verticalmente centralizado.
Macros, ento, tm a funo de simplificar nosso trabalho. Ao invs de sempre termos que
fazer tarefas repetidas, podemos grav-las numa macro.
Observao:

Vale lembrar que essa macro, utilizada no exemplo, somente serve para formatar a
clula A1 de cada planilha. Isso acontece porque quando gravamos a macro, a clula
A1 estava selecionada, ento, independente da planilha que est selecionada, sempre
a clula A1 ser formatada com seu texto alinhado justificado horizontalmente e
centralizado verticalmente. Mas, o que faremos, caso desejamos formatar outras
clulas? Veremos mais frente como podemos deixar nossa macros mais genricas,
ou seja, podemos utilizar a macro em qualquer clula ou conjunto de clulas.

www.webaula.com.br
Pg.: 10/10
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


CONHECENDO A JANELA MACRO
A janela Macro tem outras caractersticas e funes alm de, simplesmente, executar uma
macro. Os componentes desta janela so:

Nome da Macro: nesta caixa de texto voc informa qual a macro que voc ir
trabalhar. Voc pode digitar o nome da macro ou selecion-lo da lista de macros
existentes.

Executar: boto que serve para executar a macro selecionada. Todas as aes
encerradas na macro sero executadas.

Cancelar: fecha a janela sem fazer nada.

Entrar: exibe o cdigo da macro no Editor do Visual Basic para que voc possa
depurar a macro. Depurar uma macro significa testar linha a linha de cdigo da macro
para procurar possveis erros que possam ter. mais frente iremos aprender como se
depura um cdigo.

Editar: abre o cdigo da macro no Editor do Visual Basic para que voc possa alterar a
macro criada.

Criar: cria uma nova macro. Abre o Editor do Visual Basic para que voc insira os
cdigos referentes criao desta nova macro. Este boto somente fica ativo quando
voc digita um nome na caixa Nome da Macro que no est na lista de macros.

Excluir: remove a macro selecionada.

Opes: abre uma nova janela com informaes da macro selecionada: nome da
macro, tecla de atalho e descrio. Voc pode alterar a tecla de atalho e a descrio.

Macros em: aqui voc decide se deseja mostrar todas as macros deste arquivo
somente Esta pasta de trabalho ou de todos os arquivos abertos Todas as pastas
de trabalho abertas.

Descrio: exibe a descrio da macro selecionada.

EXECUTANDO A MACRO UTILIZANDO TECLA DE ATALHO E


BOTO DA BARRA DE FERRAMENTAS
Voc pode testar a macro criada de outras formas tambm. Voc pode utilizar a tecla de
atalho ou ainda criar um boto para executar a macro.
Uma outra forma de executar esta macro em questo selecionando as teclas CTRL + SHIFT
+ F, pois foi a tecla de atalho que definimos na criao da macro.
Podemos ainda criar um boto na barra de ferramentas Formatao para executar esta
macro. Para isso selecionamos o menu Exibir / Barra de ferramentas / Personalizar. Na janela que se abre,
escolha guia Comandos.

www.webaula.com.br
Pg.: 11/11
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Esta guia se subdivide em: Categorias e Comandos. Escolheremos a categoria Macros. Logo
em seguida, selecionamos o comando Personalizar boto e o arrastamos para algum lugar da barra de
ferramentas Formatao.

www.webaula.com.br
Pg.: 12/12
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Soltamos o boto na barra, ele fica na posio que definimos (que o soltamos).

Clicamos com o boto direito do mouse sobre este boto. Existem vrias opes, como
mudar o nome do boto, editar a imagem que aparece, ente outros.
Selecionaremos a opo Atribuir macro. Ao clicarmos nesta opo surge a janela Atribuir
Macro, assim escolhemos a macro desejada e clicamos no boto Ok. O boto est configurado com a macro
desejada.

www.webaula.com.br
Pg.: 13/13
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


O EDITOR DO VISUAL BASIC
CONHECENDO O EDITOR DO VISUAL BASIC
O Editor do Visual Basic pode ser utilizado para criao e edio de macros; criao de
mdulos, procedimentos e funes; e, ainda, para quem tem familiaridade com programao, possvel
desenvolver at sistemas inteligentes para planilhas.
A janela do Editor do Visual Basic mostrada abaixo:

OS COMPONENTES DA JANELA DO EDITOR


Para acessarmos o editor do Visual Basic necessrio ir at a opo Ferramentas / Macro /
Editor do Visual Basic.
Quando fazemos isso, aberta uma nova janela, ou seja, o editor do Visual Basic
programado para trabalhar como um programa parte do Excel, mas, na verdade, tudo que feito nele
interno ao Excel.
Conheceremos um pouco dos componentes da janela do editor.
Na barra de ttulo lemos Microsoft Visual Basic acrescido do nome do arquivo (pasta de
trabalho) do Excel aberto.

uma delas:

Na barra de menu, vemos algumas opes comuns e outras nem tanto. definiremos cada

www.webaula.com.br
Pg.: 14/14
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Arquivo menu com opes comuns, tais como, salvar arquivo, importar ou exportar
arquivo e fechar editor, voltando para o Excel;

Editar menu com as opes copiar, recortar, colar, localizar, substituir, entre outras
opes a que voc j est acostumado, tambm possui algumas opes especficas
do editor como listar constantes, listar propriedades, entre outras;

Exibir neste menu voc consegue exibir vrios objetos prprios do editor, tais como,
o objeto Verificao imediata, o objeto Project Explorer, ente outros;

Inserir este menu ser utilizado quando quisermos inserir novos mdulos,
procedimentos ou formulrios ;

Formatar aqui voc pode formatar alinhamento, espaamento, dimensionamento,


ente outros tipos de formato.;

Depurar as opes deste menu so utilizadas quando voc deseja verificar o


funcionamento de um cdigo feito, vamos estudar mais frente como se depura um
procedimento ou funo;

Executar neste menu voc tem a opo de executar alguma rotina feita ou parar a
execuo da mesma;

Ferramentas menu com opes prprias do editor tambm, por exemplo, voc
consegue acessar a lista de macros que existem em sua pasta de trabalho;

Suplementos gerenciador de suplementos do editor os suplementos so


ferramentas personalizada que adicionam recursos ao Visual Basic.

A BARRA DE FERRAMENTAS PADRO


A barra de ferramenta principal do editor do Visual Basic a padro, que mostrada abaixo:

1 Exibir Microsoft Excel retorna para o Excel;


2 Inserir Procedimento, Mdulo ou Form insere uma rea de trabalho para que possamos
programar;
3 Salvar grava o que est sendo feito;
4 Recortar move o trecho de cdigo selecionado para que, mais tarde, seja colado;
5 Copiar copia o trecho de cdigo selecionado para que, mais tarde, seja colado;
6 Colar cola em algum lugar especificado o trecho de cdigo recortado ou copiado;
7 Localizar procura por palavras, expresses ou comandos dentro dos cdigos;
8 Desfazer desfaz alguma ao executada;
9 Refazer refaz alguma ao executada;
10 Executar executa o trecho de cdigo descrito;
www.webaula.com.br
Pg.: 15/15
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


11 Interromper interrompe (pausa) alguma execuo em andamento;
12 Redefinir para a execuo em andamento;
13 Modo de criao;
14 Project Explorer exibe ou esconde a janela do Project Explorer;
15 Propriedades exibe ou esconde a janela de Propriedades;
16 Pesquisador de objeto exibe ou esconde a janela do Object Browser;
17 Caixa de ferramentas exibe ou esconde a barra de caixa de ferramentas (a ser utilizada
nos forms);
18 Ajuda do Mircosoft Visual Basic;
19 Posio onde est o cursor linha e coluna.

O PROJECT EXPLORER
O Project Explorer uma janela que exibe uma lista hierrquica de todos os itens contidos e
referenciados em cada projeto que est aberto no Editor do Visual Basic.
Os elementos da janela do Project Explorer so:

Boto Exibir cdigo: exibe a janela de cdigo (rea de trabalho do editor) para que
voc possa gravar e editar cdigo associado a algum item selecionado.

Boto Exibir objeto: exibe a janela Objeto para o item selecionado, um documento ou
um form.

Boto Alternar pastas: Oculta e mostra as pastas de objetos enquanto exibe os itens
individuais contidos nelas.

Alm dos botes acima a janela do Project Explorer contm vrios itens que podem ser:

Projeto: sempre que trabalhamos no editor do Visual Basic estamos trabalhando com
um projeto (VBAProject);

Objetos do Excel: todas as planilhas existentes na pasta de trabalho (Plan1, Plan2,


Plan3) e ainda um objeto que representa a pasta de trabalho inteira
(EstaPasta_de_Trabalho);

Mdulos: todos os mdulos existentes, cada macro que voc cria inserida em um
mdulo diferente.

A JANELA DE CDIGOS
A janela de cdigos a rea de trabalho do editor. nela que voc ir inserir o seu cdigo,
seja uma funo nova que estar criando, seja uma macro que esteja editando, ou outro tipo de cdigo.
Por exemplo, o cdigo a seguir pertence a uma macro criada para formatao de clulas:

www.webaula.com.br
Pg.: 16/16
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

ENTENDENDO UM POUCO OS CDIGOS


Voc observar que toda macro que voc criar ser criada com o nome de Sub, note que na
imagem anterior o nome da macro Formatar, esse nome aparece logo no incio Sub Formatar( ) e no
fim do cdigo da macro temos End Sub. Dessa forma a macro seqncia de comandas delimitada.
Dentro da macro na primeira parte vem algumas linhas descritivas. Essas linhas so precedidas
pelo smbolo apstrofe (). Toda linha precedida por apstrofe significa que um comentrio e no
executada, desta forma, voc pode escrever qualquer coisa aps o apstrofe pois ser considerado um
comentrio.
Neste caso especfico, temos na primeira linha de comentrio o nome da macro, na segunda
linha temos a descrio que informamos na criao da macro e na terceira linha de comentrio a tecla de
atalho que foi definida para a macro.

macro.

Depois destes comentrios seguem os comandos que sero realizados ao executarmos a

Observaes:

Voc pode inserir um comentrio em qualquer lugar do cdigo;

Cada linha de cdigo (linha que no precedida de apstrofe) do editor um


comando a ser executado.

A JANELA VERIFICAO IMEDIATA


Abaixo da janela do cdigo temos a janela Verificao Imediata que ser utilizada quando
formos depurar algum cdigo.

www.webaula.com.br
Pg.: 17/17
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


CRIANDO E EDITANDO MACROS
CRIANDO UMA MACRO
macro.

Conforme j visto, para criar a macro, vamos em Ferramentas / Macro / Gravar nova

Vamos trabalhar com duas macros. Uma ser chamado Formatar. Esta macro ter como
tecla de atalho a letra f (CTRL + f). Ela ser salva nesta pasta de trabalho e a descrio ser: Macro para
formatar a clula com fonte Arial, tamanho 14, negrito e sublinhado.
O nome da outra macro ser Formatar_2. Esta macro no ter tecla de atalho. Ela ser
salva nesta pasta de trabalho tambm e a descrio ser: Macro para formatar a clula com fonte Comic
Sans MS, tamanho 14 e cor azul.

VISUALIZANDO O CDIGO DAS MACROS


Vamos agora compreender os cdigos gerados para cada uma das macros. Isso feito
selecionando Ferramentas / Macro / Editor do Visual Basic.
No Project Explorer existem dois mdulos. O contedo do Mdulo1 a macro Formatar e o
contedo do Mdulo2 a macro Formatar_2.
Para visualizar o cdigo de cada um dos mdulos, damos um clique duplo sobre o mdulo a
ser visualizado e o cdigo aparecer na janela ao lado ou ainda damos um clique com o boto direito do
mouse sobre um dos mdulos e escolhemos a opo Exibir cdigo.
Quando clicamos com o boto direito do mouse sobre algum mdulo outras opes
aparecem alm da opo Exibir cdigo.
A opo Inserir, serve para inserir um novo mdulo, form ou procedimento.
A opo Remover Mdulo, serve para excluir o mdulo selecionado, com isso sua macro
ser removida tambm, caso o contedo do mdulo seja uma macro. Ao remover um mdulo o editor
pergunta se voc antes deseja export-lo, caso opte por sim, voc estar removendo este mdulo deste
arquivo e enviando para outro.

VISUALIZANDO O CDIGO DAS MACROS


Vamos analisar o contedo dos cdigos das duas macros:
Macro 1
Sub Formatar()
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrito"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleDouble
.ColorIndex = xlAutomatic
End With
www.webaula.com.br
Pg.: 18/18
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


End Sub
Macro 2
Sub Formatar_2()
With Selection.Font
.Name = "Comic Sans MS"
.FontStyle = "Normal"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 5
End With
End Sub
Note que alguns comandos so comuns nas duas macros. Vamos verificar esses comandos
em comum primeiramente.
Instruo Sub: declara o nome, os argumentos e o cdigo que formam o corpo de um
procedimento. Toda macro inicia por Sub Nome() e termina com End Sub, onde Nome o nome dado
macro.
Instruo With: executa uma srie de instrues em um objeto. Neste caso, o objeto
selecionado o Selection.Font, isto significa que todos os comandos entre o With Objeto e o End With sero
feitos com este objeto.
Observe que alguns comandos dentro da instruo With se repetem nas duas macros, alguns
com valores diferentes, outros com valores iguais.
O comando .Name define a fonte a ser utilizada.
O comando .FontStyle define o estilo de fonte a ser utilizado.
O comando .Size define o tamanho da fonte a ser utilizado.
O comando .Strikethrough define se a fonte ter o efeito tachado ou no. Os valores possveis
so true (efeito tachado ativo) e False (efeito tachado inativo). O mesmo ocorre para os comandos
.Superscript e .Subscript que definem os efeitos sobrescrito e subscrito, respectivamente.
O comando .Underline define o sublinhado da fonte, os tipos mais comuns de sublinhados so:
(sem sublinhado), xlUnderlineStyleSingle (sublinhado simples) e xlUnderlineStyleDouble (sublinhado duplo).

OBJETOS, MTODOS E PROPRIEDADES


O comando .ColorIndex define a cor da fonte, cada cor de fonte representada por um
nmero inteiro, por exemplo, a cor azul representada pelo nmero 5.
Estes comandos, nada mais so, do que propriedades da formatao de fonte, por isso so
tidos como propriedades.
Para entendermos bem o funcionamento da programao no Visual Basic, devemos saber o
seguinte: sempre quando trabalhamos com algum elemento do Excel, estamos trabalhando com um objeto,
por exemplo, fonte, pargrafo, clula, entre outros. Cada objeto possui mtodos que so as aes que esses
objetos podem realizar e cada objeto possui propriedades que so as caractersticas do objeto.
www.webaula.com.br
Pg.: 19/19
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Desta forma, sempre quando formos trabalhar com macros, estaremos utilizando objetos,
propriedades e mtodos.
A grande vantagem que, ao executarmos as aes que uma macro far, o prprio Excel
grava todo o cdigo para ns. Ns somente iremos trabalhar com os cdigos de uma macro se quisermos
alterar alguma coisa no cdigo sem ter que fazer todo o processo de gravao de uma macro novamente.

EDITANDO MACROS
Agora que voc j identificou os principais comandos das duas macros, podemos editar
qualquer uma das macros, em nosso exemplo faremos isso com a macro Formatar.

Sans MS.

Na linha de cdigo onde est o nome da fonte a ser utilizada vamos trocar de Arial para Comic

Na linha de cdigo onde est o tamanho da fonte, vamos trocar de 14 para 16.
Na linha de cdigo onde est o sublinhado, vamos trocar de duplo para simples.
Na linha de cdigo onde est a cor, vamos trocar de automtica para 3 (cor vermelha).
Depois disso, basta clicar no boto Salvar do editor e testar a macro no Excel.
O cdigo da macro ficou assim:
Sub Formatar()
With Selection.Font
.Name = "Comic Sans MS"
.FontStyle = "Negrito"
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleSingle
.ColorIndex = 3
End With
End Sub

CRIANDO UMA MACRO COM CLULAS SELECIONADAS


Veja a planilha a seguir. Faremos uma macro para formatar essa tabela.

Para este exemplo, utilizaremos uma macro chamada Formatar_Tabela. Ela no ter tecla de
atalho. A macro ser gravada nesta pasta de trabalho.
A descrio da macro ser: Macro para formatar uma tabela com fontes, bordas e
sombreamentos.
www.webaula.com.br
Pg.: 20/20
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Para a gravao da macro, faamos o seguinte:

Selecionaremos da clula A3 at a clula D8;

Vamos em Formatar / AutoFormatao;

Na janela que se abre, escolhemos a opo Clssico 3;

Ainda com as clulas selecionadas, vamos no boto Bordas, na barra de ferramentas


Formatao e selecionamos a opo Todas as bordas.

Paramos a gravao da macro.


A macro utilizada na tabela definida no incio fica assim:

TESTANDO A MACRO PARA FORMATAR TABELA


Para testar a macro criada anteriormente, vamos criar outra planilha conforme abaixo:

Nem precisamos selecionar a tabela a ser formatada, a prpria macro faz isso e formata a
tabela da forma que havamos definido.

Mas isso nem sempre bom!


Vejamos na prxima planilha Turismo.

www.webaula.com.br
Pg.: 21/21
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Ao executarmos a macro novamente, observamos que no foi toda a tabela que ficou
formatada, somente uma parte dela. Mesmo se voc selecionar toda a tabela, somente sero formatadas as
clulas do intervalo A3:D8.

Isso acontece porque ao gravar a macro, gravamos tambm a seleo de clulas que foi feita,
ou seja, a macro funciona em qualquer planilha da pasta de trabalho, porm somente formata a regio das
clulas A3 at D8.
Para verificarmos isso vamos abrir a macro para edio. Lembrando-se que, para isso vamos
em Ferramentas / Macro / Macros. Selecionamos a macro Formatar_Tabela e clicamos no boto Editar. Esta
outra forma de se abrir o editor do Visual Basic, abrindo-o na macro que deseja visualizar ou alterar.
Observe que o primeiro comando da macro :
Range("A3:D8").Select
Este comando define que a formatao da tabela ser feita no intervalo das clulas A3 at D8.
teremos que mudar isso para que a formatao de nossa tabela fique genrica.
Ao invs de utilizar o comando Range("A3:D8").Select, podemos troc-lo por este outro:
Selection.CurrentRegion.Select
Este comando indica que a formatao dever ser feita no intervalo de clulas selecionadas.
Neste caso, para executar a macro daqui por diante ser preciso selecionar as clulas que deseja formatar
antes de executar a macro.
A macro agora somente funciona nas clulas selecionadas da planilha.
Testando isso na planilha Turismo, antes de executar a macro, selecionamos da clula A3 at
D12. Veja que toda a tabela foi formatada.
www.webaula.com.br
Pg.: 22/22
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

EVITANDO ERROS COM MACROS


Toda macro feita, mesmo testada corretamente e pronta para ser utilizada, dependendo da
ao executada pelo usurio, pode gerar algum erro.
Por exemplo, esta macro Formatar_Tabela, caso selecionemos uma clula vazia de alguma
planilha e executamos a macro, ocorre o seguinte erro:

Este erro ocorre porque no foi selecionado nenhum intervalo de clulas para ser formatado e
o comando AutoFormatao que est inserido na macro est esperando por um intervalo de seleo.
Observe que a janela do erro possui dois botes ativos Fim e Depurar.
Se voc clicar no boto Depurar, voc ser levado para o cdigo da macro que gerou o erro.
Se voc clicar no boto Fim, simplesmente sra finalizado o processo.
Veja tambm que existe um nmero inteiro indicando o erro ocorrido. Para cada erro ocorrido
existe um nmero diferente. Para esse erro o nmero inteiro que trata disso o 1004.

TRATANDO O ERRO
Caso selecionamos no boto Depurar, somos levados para o editor do Visual Basic. A segunda
linha de cdigo fica marcada de amarelo. a que est sendo gerado o erro, ou seja, logo quando se utiliza a
AutoFormatao.

www.webaula.com.br
Pg.: 23/23
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Como j sabemos o que ocasionou o erro, no precisamos depurar o cdigo, vamos ento
parar a execuo da macro. Para isso, clicamos no boto Redefinir que est na barra de ferramentas Padro
do editor.
Para tratar este erro vamos utilizar o objeto de tratamento de erros o objeto Err. Este
objeto contm informaes sobre os erros gerados em tempo de execuo, ou seja, erros que somente
acontecem quando as macros so executadas.
Como pode ocorrer qualquer tipo de erro e em qualquer lugar do cdigo, vamos inserir a
seguinte instruo no incio do cdigo, antes de qualquer comando:
On Error Resume Next
Esta instruo simplesmente adia o tratamento do erro.

erro especfico.

No final da macro, aps o ltimo comando da macro, vamos inserir o tratamento para este

If Err.Number = 1004 Then


Selection.Clear
MsgBox "Voc precisa selecionar um intervalo de clulas."
End If
Estes comandos testam se foi gerado o erro de nmero 1004. Se este erro foi gerado limpa
qualquer formatao feita na clula e emite uma mensagem de erro amigvel para o usurio.
O cdigo da macro fica assim:
Sub Formatar_Tabela()
On Error Resume Next
( ) comandos da macro
If Err.Number = 1004 Then
Selection.Clear
MsgBox "Voc precisa selecionar um intervalo de clulas."
End If
End Sub
Observao: MsgBox uma instruo do Visual Basic que mostra uma caixa de mensagem na
tela para o usurio, mais frente aprenderemos mais sobre MsgBox.

CRIANDO MACROS COM VRIOS OBJETOS E FUNES DO


EXCEL
www.webaula.com.br
Pg.: 24/24
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Em nosso prximo exemplo de macro, iremos construir um pequeno sistema que ler dados
de uma tabela com vrios dados e esses dados sero filtrados de acordo com o filtro que estabelecermos.
Construiremos mais de uma macro na pasta de trabalho para isso.
Para a realizao desse exemplo, teremos que ter algumas noes avanadas de Excel.
Utilizaremos os seguintes recursos do Excel:

Filtro Avanado: recurso que se encontra no menu Dados, opo Filtrar. Tem a funo
de filtrar, de maneira rpida, um subconjunto de dados em uma tabela, dessa forma
os dados ficam fceis de serem localizados e trabalhados. O filtro avanado utilizado
quando temos critrios avanados para o filtro.

Inserir Caixa de Dilogo: este recurso bastante utilizado quando desejamos que
aparea para o usurio uma caixa de dilogo para que ele escolha ente uma opo ou
outra, ou informe algum dado, ou seja, para que ele interaja com o Excel de forma
simples e rpida. Para inserir uma caixa de dilogo na pasta de trabalho, voc dever
clicar com o boto direito sobre qualquer guia da planilha e selecionar a opo inserir,
aparecer uma janela para que voc escolha a opo desejada.

Caixa de Combinao: objeto que se encontra na barra de ferramentas Formulrios.


utilizada quando temos uma lista de valores que sero escolhidos pelo usurio para
que seja realizado algum filtro, por exemplo.

Botes de Comando: objeto que tambm se encontra na barra de ferramentas


Formulrios. So botes que podero ser clicados pelo usurio para efetuarem alguma
ao macro.

Utilizaremos estes recursos listados e ainda os recursos das macros.

CONHECENDO A PASTA DE TRABALHO


O arquivo que trabalharemos possui trs planilhas, dispostas da seguinte forma:

Planilha 1: Empresas listagem com o cdigo, nome e valores das empresas que so
usados na planilha principal. Esta planilha possui uma tabela com os dados das
empresas. Foi definido um nome para a tabela (regio das clulas A3 at C9). O nome
desta tabela Empresas.

Planilha 2: Auxiliar planilha auxiliar onde sero armazenados alguns valores a serem
utilizados pelos filtros a serem feitos.

www.webaula.com.br
Pg.: 25/25
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Planilha 3: Aes planilha principal, onde se encontram os dados a serem


trabalhados. Ser nesta planilha que iremos inserir nossos controles para as macros.
Nesta planilha j foi utilizado a funo PROCV na coluna Empresa e na coluna Valor,
para trazer os valores referentes ao cdigo da empresa digitado na coluna Cdigo. Na
coluna Total foi utilizado uma frmula para multiplicar o valor pela quantidade.

Primeiramente, vamos trabalhar todo o arquivo para depois iniciarmos o processo de


gravao da macro.

CONSTRUINDO A CAIXA DE DILOGO


Vamos inserir a caixa de dilogo no arquivo: para isso clique com o boto direito do mouse
sobre qualquer guia de planilha na parte inferior do Excel e selecione a opo Inserir. Aparecer a caixa de
dilogo abaixo:

www.webaula.com.br
Pg.: 26/26
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Para a construo da caixa de dilogo selecionamos a opo Caixa de dilogo do MS Excel


5.0. Feito isso d Ok.
Aparecer uma nova planilha em sua pasta de trabalho, chamada Caixa de dilogo1.
Podemos formatar a caixa, para que ela possa ter um ttulo e ainda podemos diminuir o
tamanho da mesma (altura e/ou largura), para que depois possamos inserir o controle a ser utilizado nela.
Iremos inserir um controle na caixa. direita da caixa est a barra de ferramentas
Formulrios. Caso esta barra no esteja visvel, ns a selecionamos indo no menu Exibir, opo Barra de
Ferramentas.
Nesta barra, selecionamos o controle Caixa de combinao.
Agora que a caixa de dilo go est pronta temos que faz-la funcionar. Primeiramente, vamos
fazer os nomes das empresas aparecerem na caixa de combinao.
Para isso, clicamos com o boto direito do mouse sobre a caixa de combinao desenhada
sobre a caixa de dilogo.
Selecionamos a opo Formatar controle. A janela formatar controle ser utilizada para
informarmos ao Excel, quais os dados que aparecero na caixa de dilogo (de onde eles viro) e para onde ir
o dado que for selecionado pelo usurio.
A figura abaixo, mostra a janela Formatar controle, com a guia Controle selecionada, nesta
guia que iremos trabalhar.

www.webaula.com.br
Pg.: 27/27
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

A caixa de combinao dever ser formatada com os seguintes valores:

Intervalo de entrada: estes so os dados que aparecero na caixa.

Vnculo da clula: este parmetro servir para armazenar o dados (no caso o nome
da empresa) a ser escolhido pelo usurio.

Linhas suspensas: este parmetro informa quantas linhas a caixa de dilogo ter, o
padro o nmero 8.

Para testar a caixa de dilogo, selecionamos na barra de ferramentas Formulrios, o controle


Executar caixa de dilogo. Ele o ltimo controle da barra de ferramentas.
Clicamos nele e a caixa de dilogo aparecer como surgir para o usurio.

Qualquer empresa que for escolhida na caixa de combinao de nossa caixa de dilogo ter
seu ndice na clula escolhida para ser vnculo da clula, porm, para melhorarmos a performance de nosso
pequeno sistema, vamos fazer o seguinte: de acordo com o ndice da clula da empresa escolhida iremos
buscar o nome da empresa na planilha Empresas e coloc-lo em outra clula.
www.webaula.com.br
Pg.: 28/28
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Ento, selecionamos a clula vnculo. Vamos ao menu Inserir, opo Funo. Na caixa de
dilogo Inserir funo, selecionamos a categoria Procura e referncia. Feito isso, selecionamos a funo ndice.
Na caixa seguinte, de nome Selecionar argumentos, escolhemos a primeira opo:
matriz;nm_linha, nm_coluna.
Preenchemos os argumentos da seguinte forma:

Matriz: intervalo das clulas que contm os dados que desejamos.

Nm_linha: clula ndice.

Nm_coluna: nmero da coluna que ter seu valor retornado.

CRIANDO A MACRO FILTRAR


contm dados.

Selecionamos a planilha Aes e clicamos em qualquer clula no intervalo de clulas que

Vamos iniciar o processo de gravao de macro. Vamos opo Ferramentas / Macro /


Gravar nova macro. Daremos nome macro de Filtrar. A descrio da mesma ser: Macro para realizar um
filtro avanado no conjunto de dados da planilha Aes.
Os passos para gravao da macro so:

empresa.

Selecionar Dados / Filtrar / Filtro Avanado.

Na caixa de dilogo que aparecer, deixar selecionada a opo Filtrar a lista no local.

Verifique se o Intervalo da lista selecionado est o intervalo de clulas onde esto os


dados da planilha..

Em Intervalo de critrios, selecione as clulas A1:A2 da planilha Auxiliar.

Criamos nossa primeira macro que executa a ao de filtrar os dados de acordo com uma

CRIANDO A MACRO EXIBIR_TUDO


Agora que criamos a macro Filtrar, vamos criar uma nova macro que ter o efeito contrrio
ao da macro Filtrar ou seja servir para exibir todos os dados da lista da planilha Aes.

dado da tabela.

Lembre-se de ficar com alguma clula da planilha Aes selecionada, alguma clula que possua

Vamos opo Ferramentas / Macro / Gravar nova macro. Daremos nome macro de
Exibir_Tudo. A descrio da mesma ser: Macro para mostrar todos os dados da tabela de Aes. Clique em
Ok.
O passo para gravao da macro :

Vamos em Dados / Filtrar / Mostrar Todos.

CRIANDO A MACRO EXIBIR_CAIXA


www.webaula.com.br
Pg.: 29/29
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Agora, iremos criar nossa ltima macro.
Selecionamos a planilha onde est a caixa de dilogo.
Vamos opo Ferramentas / Macro / Gravar nova macro. Daremos nome macro de
Exibir_Caixa. A descrio da mesma ser: Macro para exibir na tela a caixa de dilogo para escolha da
empresa. Clique em Ok.
Os passos para gravao da macro so:

empresa.

Selecionamos o controle Executar caixa de dilogo na barra de ferramentas


Formulrios.

Na caixa de dilogo, escolhemos alguma empresa.

Clicamos em Ok, na caixa de dilogo.

Simplesmente, fizemos uma macro que abre a caixa de dilogo para seleo de alguma

VINCULANDO AS MACROS AOS CONTROLES


Retornando planilha Aes, se a barra de ferramentas Formulrios no estiver visvel nesta
planilha, faa-a aparecer marcando a opo Exibir / Barra de Ferramentas / Formulrios.
Vamos inserir dois botes no alto da planilha.
Selecionamos o controle Boto na barra de ferramentas Formulrios, depois desenhamos o
boto abaixo do ttulo da planilha.
Ao terminar o desenho, verificamos que a caixa de dilogo Atribuir macro aparece.
Selecionamos a macro Exibir_Caixa, para o primeiro boto. O boto ficou atrelado macro Exibir_Caixa.
Modificamos o nome do boto para Filtrar.
Agora, vamos criar outro boto ao lado deste.
Selecionamos novamente o controle Boto na barra de ferramentas Formulrios, depois
desenhamos o boto ao lado direito do boto Filtrar.
Atribumos a este boto a macro Exibir_Tudo. O nome do boto ser Exibir.
Agora, falta atribuirmos a macro Filtrar a algum controle. V at a planilha onde est a caixa
de dilogo e clicando com o boto direito do mouse no boto Ok, da caixa de dilogo, selecionamos a opo
Atribuir macro e escolhemos a macro Filtrar.
Pronto, os controles com as macros atribudas esto criados.

www.webaula.com.br
Pg.: 30/30
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

www.webaula.com.br
Pg.: 31/31
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


INTRODUO AO VBA
VBA - VISUAL BASIC FOR APPLICATION
O Visual Basic for Applications uma linguagem de programao disponvel no Pacote Office
para ser utilizada em conjunto com alguma aplicao do Microsoft Office, como, por exemplo, no Access, no
Word e, no Excel, como em outras aplicaes.
Dependendo da ao que queremos executar, precisaremos conhecer um pouco de lgica de
programao e da prpria sintaxe da linguagem VBA para criarmos procedimentos e funes a serem
utilizados em nossas pastas de trabalho.
Vamos aprender a sintaxe da linguagem VBA e tambm, em paralelo, um pouco de lgica de
programao. Pois, o intuito neste curso no formar programadores, mas sim, usurios finais que, com
algum conhecimento de Macros e VBA, podem criar pastas de trabalho em alto nvel de desenvolvimento.
Iremos dividir o estudo de VBA da seguinte forma:

Estrutura do VBA

Variveis;

Tipos de variveis;

Declarao de variveis;

Constantes;

Mdulos;

Procedimentos;

Funes;

Estruturas de controle condicionais;

Estruturas de controle de repetio;

Interao com o usurio caixas de mensagem.

Objetos e Eventos propriedades e mtodos.

PROGRAMAO EM VBA
J vimos que, para programarmos qualquer coisa em VBA, no Excel, necessrio acessarmos
a opo Ferramentas / Macro / Editor do Visual Basic.
Acessando esta opo podemos estar criando e editando cdigos da linguagem, sejam
cdigos de uma macro ou de uma funo definida pelo usurio.
Veremos os fundamentos da linguagem VBA, sua estrutura fundamental e os principais
elementos da linguagem.

www.webaula.com.br
Pg.: 32/32
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


O VBA Visual Basic for Application uma linguagem de programao baseada na conhecida
linguagem Basic. Ela foi concebida para funcionar em conjunto com diferentes aplicaes de forma a potenciar
a robustez das mesmas. Voc pode utilizar a linguagem VBA nos aplicativos do Microsoft Office, como o
Word, Access e o Excel.
Ela se enquadra nos ambientes de programao baseados no processamento de seqncia de
eventos. Por exemplo, voc pode associar tarefas a serem executadas a determinado boto, dessa forma,
quando o boto for acionado, as tarefas a ele associadas sero executadas.

VARIVEIS
Variveis so espaos alocados na memria do computador especficos para cada programa
que podem ser modificadas durante a execuo do cdigo deste programa.
Cada varivel tem um nome que a identifica unicamente no escopo a que ela est ligada. A
varivel pode possuir um tipo ou no. Associar um tipo a uma varivel seria dizer que a varivel ir receber
durante a execuo do programa valores inteiros, varivel do tipo inteiro; ou seno valores de data e hora,
varivel do tipo data; e, assim por diante.
A vantagem de se especificar um tipo a uma varivel que j fica definido que a varivel ir
receber esse tipo de valor durante toda a execuo do cdigo daquele programa. Isso facilita na resoluo de
erros que podem ocorrer com valores associados incorretamente a variveis, como, por exemplo, uma
varivel recebe um nmero decimal e depois recebe um valor texto.
Os nomes de uma varivel precisam ser iniciados com algum caractere. Podem conter dgitos,
s no pode comear pro dgito. No podem conter espaos em branco. No podem conter caracteres
invlidos, como, +, &, ^, *, entre outros. Variveis no podem receber nomes de palavras-chaves da
linguagem. O tamanho do nome de uma varivel so 255 caracteres.
Exemplos de nomes de variveis:

Variveis invlidas

Explicao

1num

Variveis no podem comear por dgitos

num 9

Variveis no podem conter espaos em branco

data+hora

Variveis no podem conter caracteres invlidos

dim

Variveis no podem ser palavras-chaves do VBA

Variveis vlidas

Explicao

num1

Inicia-se por caractere e no h espao em branco

data_hora

A separao feita por _ esse caractere vlido; j o (hfen)


no vlido

texto

Varivel comum, no palavra-chave do VBA; no palavra


reservada

TIPOS DE VARIVEIS
Os tipos de variveis encontrados no VBA so:

www.webaula.com.br
Pg.: 33/33
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Variant tipo genrico; quando voc no define o tipo da varivel na declarao da mesma,
ela recebe o tipo variant, ou seja, pode ser qualquer tipo no decorrer do programa.

falso (False ).

Boolean tipo em que a varivel somente recebe dois tipos de valores: verdadeiro (True) ou

Byte tipo inteiro onde o valor assumido pela varivel varia no intervalo de 0 at 255.

32.767

Integer tipo inteiro onde o valor assumido pela varivel varia no intervalo de -32.768 at

Long tipo inteiro onde o valor assumido pela varivel varia no intervalo de -2.147.483.648
at 2.147.483.647
Single tipo decimal onde o valor assumido pela varivel varia no intervalo de -3,402823E38
at -1,401298E-45 (para valores negativos) e 1,401298E-45 at 3,402823E38 (para valores positivos).
Double tipo decimal onde o valor assumido pela varivel varia no intervalo de 1,79769313486232E308 at -4,94065645841247E-324 (para valores negativos) e 4,94065645841247E324 at 1,79769313486232E308 (para valores positivos).
Currency tipo decimal onde o valor assumido pela varivel varia no intervalo de 922.337.203.685.477,5808 at 922.337.203.685.477,5807 (utilizado para valores monetrios).
Decimal tipo decimal onde o valor assumido pela varivel varia no intervalo de +/79.228.162.514.264.337.593.543.950.335
(sem
casas
decimais)
e
+/7,9228162514264337593543950335 (com casas decimais)

31/12/9999

Date tipo data onde o valor assumido pela varivel varia no intervalo de 01/01/100 at

String tipo texto onde o valor assumido pela varivel varia no intervalo de 1 at
aproximadamente 2 bilhes de caracteres (65.400 se tamanho fixo)
Object tipo genrico para referncia a objetos.

DECLARAO DE VARIVEIS
A declarao de varivel importante para que voc no cometa erros ao construir algum
cdigo de programao, conforme j dito anteriormente, inserir um valor inteiro para uma varivel e depois,
inserir, para esta mesma varivel um valor string (texto).
Declarando variveis fica mais fcil uma futura manuteno no cdigo. Alm de se declarar a
varivel e definir seu tipo, voc poder indicar com um comentrio frente o que e para que servir a varivel.
O Editor do Visual Basic possui duas formas de trabalhar no que diz respeito a variveis. Voc
pode definir se deseja que seja obrigatria a declarao de todas as variveis ou no.
Para informar ao Editor do Visual Basic que a declarao de variveis obrigatria, voc
precisa selecionar no menu Ferramentas / Opes e marcar a opo Requer declarao de variveis.
Fazendo isso, toda vez que voc criar um mdulo para desenvolvimento de algum cdigo,
para alguma rotina a ser executada aparecer no alto da tela do mdulo as palavras chaves:
Option Explicit
Verifique isso, selecionando na opo Inserir / Mdulo.
www.webaula.com.br
Pg.: 34/34
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


obrigatria.

cdigo.

Note que no mdulo j vem as palavras-chaves que indicam que a declarao de variveis

A declarao de variveis depende da utilizao que voc far das variveis dentro de seu

Caso voc queira que a varivel seja visvel em todos os mdulos e durante toda a execuo
do programa, voc dever utilizar a instruo Public.
Caso voc queira que a varivel seja visvel apenas no prprio mdulo e durante toda a
execuo do programa, voc dever utilizar a instruo Private. Usando essa instruo em algum mdulo
voc no conseguir acessar essa mesma varivel em outro mdulo.
Caso voc queira que a varivel seja visvel apenas no prprio procedimento e durante a sua
execuo, voc dever utilizar a instruo Dim.
Abaixo seguem alguns exemplos de declarao de variveis:

CONSTANTES
Constantes so valores fixos que podem ser utilizados no programa.
Suponhamos que voc deseja fazer um programa onde ser preciso algumas mensagens prdefinidas em vrios lugares do cdigo.
Voc pode declarar uma constante para cada constante e no momento que precisar, utilizar a
constante adequada.
www.webaula.com.br
Pg.: 35/35
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Voc pode ainda querer definir constantes para valores pr-definidos, por exemplo, uma
constante Masculino com valor 1 e uma constante Feminino para valor 2, seriam constantes utilizadas para
alguma varivel do tipo Sexo.
Para declarar uma constante no cdigo, voc utiliza a palavra chave Const.
Exemplo:
Const Masculino = 1, Feminino = 2
Como nas variveis voc pode separar as constantes por vrgula.
Como nas variveis tambm, voc pode definir que a constante ser utilizada em todos os
mdulos ou somente em um. Por padro, a constante Private.
Exemplo:
Public Const Mensagem1 = Seja bem vindo
Private Const Mensagem2 = Obrigado

OPERADORES
Para realizarmos as diversas operaes entre as variveis precisamos utilizar os operadores
contidos no VBA. Os operadores so:

Aritmticos
+

Adio

Subtrao

Multiplicao

Diviso decimal (19 / 2 = 9,5)

Diviso inteira (19 \ 2 = 9)

Mod

Resto da diviso inteira (19 Mod 2 = 1)

Exponenciao

Texto
&

Concatenao (um & dois = umdois

www.webaula.com.br
Pg.: 36/36
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Relacionais
=

Igual a

<>

Diferente de

>

Maior que

>=

Maior ou igual a

<

Menor que

<=

Menor ou igual a

Lgicos
And

E lgico

Or

Ou lgico

Not

Negao

Os operadores, quando utilizados, tm algumas regras de precedncia a serem seguidos.


As precedncias dos operadores so:

Operador

Operao

Exponenciao

*,/

Multiplicao e diviso

Diviso inteira

Mod

Resto da diviso inteira

+,-

Adio e subtrao

&

Concatenao

= , > , < , <> , >= , <=

Relacionais

And, Or, Not

Lgica

A ESTRUTURA DO VBA
O Editor do Visual Basic, como j deve ter percebido, dividido em mdulos. Podemos criar
nossas rotinas em mdulos diversos ou todas em um nico mdulo.
Quando criamos uma macro, o cdigo da mesma localiza-se dentro de um mdulo.
O mdulo, ento, o local onde armazenamos os cdigos de nossas rotinas.
www.webaula.com.br
Pg.: 37/37
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


As rotinas que criamos em nossos cdigos so chamadas de procedimentos e so de dois
tipos procedimentos subs e procedimentos functions.

PROCEDIMENTOS
Quando certa seqncia de instrues de um cdigo (programa) executada repetidamente
em diferentes partes do cdigo, deve ser criado um procedimento que substitua e concentre num nico local a
seqncia de instrues relativa rotina a ser executada.
Da o procedimento ser conhecido como rotina.
Imagine que sempre voc precisa testar os erros em suas macros, como j fizemos em
tpicos anteriores. Ao invs de criarmos os cdigos de tratamento de erros em cada macro, podemos criar
um procedimento genrico para tratamento de erros de macros e utilizar esse procedimento em cada cdigo
da macro. Desta forma estaramos racionando o trabalho.
O uso de procedimentos aumenta a produtividade do programador, pois diminui o tamanho
global do cdigo a escrever, facilita a edio da seqncia de instrues relativa tarefa e minimiza a potencial
ocorrncia de erros, pois, se voc reescreve o cdigo vrias vezes, a chance de errar bem maior.
Imagine que depois de tudo feito, uma regra de negcio modificada, imagine o trabalho que
no daria se voc tivesse que trocar essa regra de negcio em cada parte do cdigo que escreveu, seria
muito mais trabalhoso e voc poderia acabar esquecendo algum lugar.
Existem dois tipos de rotinas:

Sub;

Function.

SUBS E FUNCTIONS
A diferena primordial de subs e functions que um procedimento - sub no retorna nenhum
valor, j uma funo function retorna um valor definido.
Existem outras diferenas ente subs e functions, a saber:

Como a function retorna algum valor necessrio (no obrigatrio) que a mesma
seja tipada, isto , seria interessante definirmos um tipo para o valor retornado pela
funo;

Uma function sempre dever ser atribuda a alguma varivel, um sub no atribudo a
nada, ele simplesmente utilizado no cdigo;

Ambos, subs e functions possuem argumentos (assunto a ser tratado frente).

A sintaxe de um sub :
Sub NomedoSub (argumentos)
Comandos
End Sub
A sintaxe de uma function :
www.webaula.com.br
Pg.: 38/38
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Function NomedaFunction (argumentos) As Tipo
Comandos
End Function

ARGUMENTOS DE SUBS E FUNCTIONS


Os argumentos nas rotinas so os chamados parmetros que devem ser passados para o
procedimento ou funo para que os devidos clculos e/ou aes sejam executados.
Um procedimento ou funo pode possuir ou no argumentos, dependendo da ao a ser
executada por ele.
Vamos comear nosso estudo de argumentos utilizando as funes que j so definidas no
prprio Excel e que utilizam parmetros e outras no.
Voc j usou a funo Se? A funo Se uma funo que se localiza na categoria lgica do
Excel e ela utilizada quando temos um teste lgico a ser feito podendo retornar um valor verdadeiro ou um
valor falso.
Por exemplo, suponhamos que de acordo com as notas de cada aluno de uma turma em
determinada escola, se o aluno tirou nota maior ou igual a 70, ele foi aprovado, seno ele foi reprovado.
Se voc utilizar a funo Se do Excel par resolver esse problema, teremos o seguinte:

OS ARGUMENTOS DE UMA ROTINA


Note que a funo Se possui 3 argumentos (3 parmetros). O primeiro parmetro o teste
lgico, o segundo parmetro o valor a ser retornado caso o resultado do teste seja verdadeiro e o terceiro
parmetro o valor a ser retornado caso o resultado do teste seja falso.
Observao: Os valores dentro de cada argumento so apenas demonstrativos.
Da mesma forma que a funo Se possui 3 argumentos, a funo Hoje, da categoria Data e
Hora, no possui argumento nenhum.
www.webaula.com.br
Pg.: 39/39
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Veja a tela a seguir:

CONSTRUINDO PROCEDIMENTOS
Para construir um procedimentos, entramos no Editor do Visual Basic e inserimos um mdulo:
Inserir / Mdulo.
Vamos construir inicialmente um procedimento que no possui parmetro nenhum.
O procedimento que iremos construir simples: iremos mostrar um nmero de mensagens na
tela para o usurio poder visualizar.

Alguns comandos utilizados neste procedimento ainda no foram estudados, sero vistos
mais frente no curso, mas copie o cdigo como acima para que possamos testar a utilizao de
procedimentos.
Observe tambm que podemos colocar comentrios em vrias regies de nosso cdigo. O
Visual Basic considera que tudo que est ps um apstrofe um comentrio, por esse motivo que podemos
ter comentrios logo no incio da linha ou na mesma linha de um cdigo, aps o cdigo.
Este procedimento bastante simples. Inicialmente declaramos as variveis e depois fazemos
com que a varivel msg receba a mensagem a aparecer para o usurio. Depois utilizamos o comando for para
fazer o seguinte, para num (que outra varivel) variando de 1 at 3 mostre a mensagem na tela.

TESTANDO PROCEDIMENTOS
Para testarmos o procedimento faamos o seguinte: a janela Verificao Imediata
estar visvel no editor. Se no estiver, vamos em Exibir / Janela Verificao Imediata.

deve

www.webaula.com.br
Pg.: 40/40
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Na janela em branco que surge voc poder testar seu procedimento.
Para testar o procedimento escrevemos na janela Verificao Imediata a palavra call seguida
pelo nome do procedimento.
Neste exemplo ficar: call MostraMensagem
Ao pressionar a tecla ENTER aparecer a mensagem na tela:

Ao dar Ok aparece a mensagem 2 e depois aparece a mensagem 3, pois em nosso


procedimento definimos que a mensagem ir aparecer 3 vezes.
Quando um procedimento possui parmetro para test-lo, simplesmente colocamos o valor
do parmetro aps o nome do procedimento. Caso tenha mais de um parmetro, separamos cada
parmetro por vrgula.
Para utilizarmos um procedimento do Excel, fazemos como para as macros, podemos criar
botes de comando para isso ou ainda podemos ir diretamente em Ferramentas / Macro / Macros e veremos
que o procedimento feito por ns encontra-se na listagem das macros.

CONSTRUINDO FUNES
A nossa funo ir receber dois nmeros e retornar como resultado a adio da multiplicao
ente os dois nmeros e a diviso ente eles.

outro mdulo.

Para fazermos a funo, podemos utilizar o mesmo mdulo onde est o procedimento ou um

O cdigo da funo mostrado a seguir:

Note que a funo possui dois parmetros inteiros. Isto uma limitao para ela, pois os
valores do tipo integer tm um intervalo de variao pequeno. Se voc passar um argumento com um valor
muito grande, a funo dar um erro ao ser executada. Isso pode ser tratado da mesma forma que tratamos
erros de nossas macros no incio do curso. Vermos novamente mais frente.
Observe tambm que a funo definida como do tipo single, pois mesmo entrando com 2
valores inteiros teremos ocasies em que a diviso dar como resultado um nmero decimal e por isso ao ser
somada com a multiplicao o nmero decimal.

www.webaula.com.br
Pg.: 41/41
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Uma diferena entre procedimentos e funes que tambm pode ser vista aqui : o resultado
da funo lanado pra ela mesma, observe que o clculo feito jogado para o prprio nome da funo
Calculo.

TESTANDO FUNES
Para testar um procedimento vimos que basta utilizar a Janela Verificao Imediata. Pois
bem, para testarmos funes tambm, porm ao invs de utilizarmos a palavra-chave call, iremos utilizar o
sinal de interrogao ?.
Devemos digitar:
? NomedaFuno Argumentos
Com a funo fica assim:
? Calculo 3 , 4
Ao pressionar ENTER, aparece o resultado logo abaixo:
12,75
Quando criamos procedimentos vimos que os mesmo aparecem no Excel como se fossem
macros, ou seja, se voc for em Ferramentas / Macro / Macros, os procedimentos criados estar listados l.
Mas se formos em Macros agora veremos que a funo criada no est l.
Quando criamos uma funo no Editor do Visual Basic, esta funo recebe a denominao do
Excel de funo Definida pelo Usurio.
Para verificar isso, vamos em Inserir / Funo. Na caixa que se abre escolhemos a categoria
Definida pelo Usurio. Vemos que a funo est l.

www.webaula.com.br
Pg.: 42/42
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Num1 e Num2.

Ao utilizar a funo veremos que ela possui os dois argumentos definidos por ns na funo:

A tela com os argumentos da funo :

CAIXAS DE MENSAGEM
Como j vimos no exemplo que fizemos de procedimento, algumas vezes precisamos que
aparea uma caixa de mensagem para o usurio.
Essa caixa de mensagem pode ser apenas para efeito de informao como tambm pode ser
uma forma do usurio interagir com a ao a ser executada, pois, se a caixa de mensagem traz uma
pergunta e dependendo da resposta que ele der, uma determinada ao executada.
Existem dois tipos de caixas de mensagens que iremos aprender neste tpico:

MsgBox

InputBox

A MsgBox bastante utilizada quando queremos transmitir uma mensagem a um usurio ou


alert-lo de algum erro ocorrido ou ainda queremos fazer uma pergunta onde ele poder responder Sim ou
No ou ainda Ok ou Cancelar.
Para utilizar a caixa de mensagem MsgBox temos que, primeiramente, aprender a sintaxe da

mesma:

MsgBox Mensagem, Tipo e Botes, Ttulo


Onde:
Mensagem o texto que ir aparecer na caixa de mensagem para o usurio, pode ser uma
informao, um alerta ou uma pergunta.
Tipo o tipo da caixa de mensagem. Existem quatro tipos de caixa de mensagem:

Tipo

Explicao

www.webaula.com.br
Pg.: 43/43
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


vbInformation

Caixa de mensagem do tipo


Informao

vbExclamation

Caixa de mensagem do tipo Alerta

vbCritical

Caixa de mensagem do tipo Erro

vbQuestion

Caixa de mensagem do tipo


Interrogao

Botes so os botes a serem utilizados pela caixa de mensagem. O padro, quando no


se informa qual(is) o(s) boto(es) que ir(ao) aparecer o boto Ok (vbOkOnly).

Boto

Explicao

vbOkOnly

Boto Ok

vbOkCancel

Botes Ok e Cancelar

vbAbortRetryIgnore

Botes Anular, Repetir e Ignorar

vbYesNo

Botes Sim e No

vbYesNoCancel

Botes Sim, No e Cancelar

vbRetryCancel

Botes Repetir e Cancelar

Para os tipos de botes mostrados acima, dependendo do boto clicado pelo usurio existir
um tipo retornado para a ao referente a ele ser executada.
Os tipos possveis a serem retornados so:

Resposta

Explicao

vbOk

Usurio clicou no boto Ok

vbCancel

Usurio clicou no boto Cancelar

vbAbort

Usurio clicou no boto Anular

vbRetry

Usurio clicou no boto Repetir

vbIgnore

Usurio clicou no boto Ignorar

vbYes

Usurio clicou no boto Sim

vbNo

Usurio clicou no boto No


Ttulo o ttulo da caixa de mensagem.

O cdigo abaixo serve para testarmos as caixas de mensagem com componentes diferentes.
Ainda no estaremos testando o valor retornado pela caixa de mensagem.

www.webaula.com.br
Pg.: 44/44
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

No cdigo anterior, no final de algumas linhas voc ver que existe o smbolo _ (underscore).
Este smbolo utilizado quando o contedo de uma linha no terminou e continua na prxima linha. Se voc
quiser, voc poder digitar sem o underscore, porm, ter que fazer cada comando numa linha.
O comando select veremos nos prximos tpicos do nosso curso. Para testar os tipos de
caixa de mensagem retornados, utilizamos a Janela Verificao Imediata. Digitamos o nome do
procedimento seguido por um nmero, variando de 1 a 6, que so os tipos de exemplos inseridos no cdigo.
Veremos que para cada nmero utilizado no teste ser retornada uma caixa de mensagem
diferente com botes diferentes, como os dois exemplos que seguem:

www.webaula.com.br
Pg.: 45/45
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Caixa de mensagem do tipo Informao, com boto Ok

Caixa de mensagem do tipo Alerta, com botes Ok e Cancelar

Caixa de mensagem do tipo Erro, com botes Sim e No

Caixa de mensagem do tipo Pergunta, com botes Sim, No e Cancelar

Caixa de mensagem do tipo Pergunta, com botes Repetir e Cancelar

www.webaula.com.br
Pg.: 46/46
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

caixa de texto.

Caixa de mensagem do tipo Alerta, com botes Anular, Repetir e Ignorar

A InputBox uma caixa de mensagem onde o usurio pode informar um valor qualquer numa

A sintaxe da InputBox bastante simples:


InputBox (Mensagem, Ttulo, Valor Padro)
Onde:
Mensagem o texto que vir dentro da caixa de mensagem para o usurio.
Ttulo o ttulo da caixa de mensagem.
Valor Padro algum valor que voc j queira que venha preenchido na caixa de texto.
Para comearmos a aprender um pouco sobre a InputBox digite o cdigo a seguir:

qualquer coisa.

Ao testar o procedimento acima, veremos que aparecer uma InputBox onde digitaremos

Logo em seguida, ao clicarmos em Ok, aparecer uma caixa de mensagem com o que voc
digitou na InputBox.

www.webaula.com.br
Pg.: 47/47
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

ESTRUTURAS CONDICIONAIS
As estruturas condicionais no VBA servem para ser utilizadas quando precisamos analisar
determinada condio ou expresso e dependendo do caso, essa condio ou expresso testada retorna algo
diferente para cada situao.
Aprenderemos duas estruturas condicionais:

If

Select

O COMANDO IF
O comando If bastante similar funo Se do Excel.
O comando If analisa uma condio e se o resultado for verdadeiro executa determinado(s)
comando(s), caso contrrio, pode no fazer nada ou executar outro(s) comando(s)
A sintaxe do comando If :
If condio Then
Comandos a serem executados caso condio seja verdadeira
End If
Na sintaxe acima o comando If mostrado da forma mais simples, ou seja, se a condio for
verdadeira os comandos dento do If sero executadas.
Outra sintaxe para o comando If :
If condio Then
Comandos a serem executados caso condio seja verdadeira
Else
Comandos a serem executados caso condio seja falsa
End If
Voc pode fazer mais interaes com o comando If, imagine que voc possui vrias condies
a serem testadas, voc pode usar o comando If assim:

www.webaula.com.br
Pg.: 48/48
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


If condio 1 Then
Comandos a serem executados caso condio 1 seja verdadeira
ElseIf condio 2 Then
Comandos a serem executados caso condio 2 seja verdadeira
ElseIf condio 3 Then
Comandos a serem executados caso condio 3 seja verdadeira
...
Else
Comandos a serem executados caso nenhuma condio seja verdadeira
End If
Vejamos o cdigo abaixo:

Observe que estamos utilizando o comando If ... ElseIf ... Else ... End If, pois temos vrias
situaes de intervalos de notas para os alunos.
O cdigo acima define a funo Conceito:

www.webaula.com.br
Pg.: 49/49
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

aluno.

A janela de argumentos da funo contm o nico argumento desta funo que a nota do

Para finalizar temos que fazer alguns tratamentos na funo, por exemplo, o que acontecer
se a nota for maior do que 100 ou menor do que 0? Isso um erro, pois as notas variam de 0 a 100.
Para isso vamos acrescentar ao cdigo da funo o seguinte: se a nota for menor do que 0
ou maior do que 100, o conceito do aluno ser I (invlido). Desta forma termos mais uma estrutura if para
ser completada.

www.webaula.com.br
Pg.: 50/50
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

O COMANDO SELECT
O comando Select analisa uma expresso que pode retornar algum valor, e, para cada valor
retornado pode ser executado determinado comando ou comandos.
A sintaxe do comando Select :
Select Case expresso
Case valor 1
Comando a ser executado caso a expresso retorne valor 1
Case valor 2
Comando a ser executado caso a expresso retorne valor 2
...
Case valor N
Comando a ser executado caso a expresso retorne valor N
Case Else
Comando a ser executado caso no retorne nenhum valor testado acima
End Select
Para aprendermos a utilizao do comando Select, vejamos o cdigo abaixo:

www.webaula.com.br
Pg.: 51/51
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Verifique que o usurio poder digitar qualquer valor do tipo byte, ou seja, algum valor
variando de 0 a 255. Se ele digitar 1, 2 ou 3 aparecer uma mensagem para ele de Bom dia, Boa tarde ou
Boa noite.
Note que, a ltima instruo do comando Select um Case Else, isto quer dizer que, se o
usurio digitar qualquer nmero diferente de 1, 2 ou 3 ser executada a expresso que est dentro desta
clusula.

ESTRUTURAS DE REPETIO
As estruturas de repetio no VBA servem para quando precisamos repetir um mesmo
comando ou uma mesma seqncia de comandos um nmero determinado de vezes.
Aprenderemos duas estruturas de repetio:

For

While

O COMANDO FOR
O comando For faz com que determinadas instrues sejam executadas enquanto um
incrementador estiver variando de um nmero at outro.
A sintaxe do comando For :
For Contador = Valor Inicial To Valor Final
Comandos a serem executados
Next
Um exemplo do uso do comando For :
For num = 1 To 3
MsgBox Mensagem nmero: & num
Next
Sero mostradas trs caixas de mensagens, ou seja, ser mostrada a caixa de mensagem
com a mensagem Mensagem nmero: 1, depois ser mostrada a caixa de mensagem com a mensagem
www.webaula.com.br
Pg.: 52/52
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Mensagem nmero: 2 e, por ltimo, ser mostrada a caixa de mensagem com a mensagem Mensagem
nmero: 3.
Como exemplo, construiremos um procedimento (macro) para modificar a cor da fonte de
cada clula da coluna Conceito, dependendo do conceito que o aluno tirou, da forma seguinte:

Conceito A = cor Azul (11)

Conceito B = cor Verde (10)

Conceito C = cor Amarelo (6)

Conceito D = cor Laranja (46)

Conceito R = cor Vermelho (3)

Entre parnteses foram colocados os valores correspondentes de cada cor.


O cdigo a seguir descreve o exposto acima:

www.webaula.com.br
Pg.: 53/53
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Podemos incrementar mais os comandos dentro de cada clusula select.
Faamos o seguinte:
Para cada conceito alm da cor, definiremos tambm que a fonte ser negrita. Para isso utilize
o comando Selection.Font.Bold = True em cada clusula. Definiremos tambm que a cor de preenchimento da
clula ter os seguintes tons:

Conceito A = cor de preenchimento Turquesa Claro (34)

Conceito B = cor de preenchimento Verde Claro (35)

Conceito C = cor de preenchimento Azul Claro (41)

Conceito D = cor de preenchimento Marrom Claro (40)

Conceito R = cor de preenchimento Azul Plido (37)

Para modificar a cor de preenchimento de cada clula


Selection.Interior.ColorIndex = Cor, onde Cor corresponde cor a ser utilizada.

utilizamos

comando

O COMANDO WHILE
Como o comando For, o comando While tambm como estrutura de repetio. Ele funciona
da seguinte forma: enquanto uma condio for verdadeira as instrues no interior do While sero
executadas.
A sintaxe do comando While :
While Condio
Comandos a serem executados enquanto a condio for verdadeira
Wend
Como exemplo, faremos o seguinte se o valor contido na clula for menor do que 50.000 a
clula ser preenchida da cor vermelha, agora, se o valor contido na clula for maior ou igual a 50.000 a clula
ser preenchida da cor verde.
Para fazermos essa rotina precisaremos utilizar mais alguns conceitos do Excel e do VBA,
como, por exemplo, a funo IsNumeric que testa se determinado valor nmero ou no. Essa funo
bastante utilizada par evitarmos erros desnecessrios.
Veremos em mais exemplos mais funes do VBA, algumas funes pr-definidas pelo VBA
tem caractersticas semelhantes IsNumeric, tais como:

IsNull verifica se determinado valor/varivel nula;

IsDate verifica se determinado valor/varivel data;

IsEmpty verifica se determinado valor/varivel est vazio;

IsObject verifica se determinado valor/varivel um objeto

Todas essas funes sempre retornam um valor booleano (lgico) verdadeiro ou falso.
Vejamos o cdigo abaixo:

www.webaula.com.br
Pg.: 54/54
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Vamos entender a rotina acima.


Existem dois comandos While na rotina. O primeiro serve para controlar as linhas selecionadas
e o segundo as colunas. Observe que as variveis i e j variam de acordo com as linhas e colunas. Ambas
iniciam com o valor 1.
Cada um dos incrementadores varia de acordo com o nmero de linhas e o nmero de
colunas selecionadas.
Utilizamos a funo IsNumeric para verificarmos se o contedo da clula ativa um valor
numrico, se for um valor numrico fazemos a comparao se menor que 50.000 este valor e atribumos
vermelho ou verde, conforme o resultado.
Quando utilizamos a rotina acima:

Clulas com valores menores que 50.000 ficam preenchidas de vermelho;

Clulas com valores maiores ou iguais a 50.000 ficam preenchidas de verde;

Clulas contendo texto no so formatadas.

www.webaula.com.br
Pg.: 55/55
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


DEPURAO DE CDIGO
DEPURANDO UM CDIGO
Quando criamos uma macro, um procedimento ou uma funo estamos sujeitos a cometer
erros. Alguns desses erros so fceis de serem vistos, pois, podem ser erro de sintaxe de algum comando
que, ao testarmos a rotina feita, o prprio Visual Basic j acusa o erro.
Porm alguns desses erros podem ser mais difceis de serem encontrados, pois, podem ser os
chamados erros de semntica, ou seja, sintaticamente est tudo correto, mas em algum lugar do cdigo
pode estar errado o comando que usamos, por exemplo, ao invs de fazermos uma varivel receber o valor
de 0, estamos fazendo com que ela receba o valor de 1, quando o correto seria o 0.
Para ficar mais simples acharmos os erros, torna-se interessante irmos executando cada
rotina linha a linha de cdigo. Fazer isso depurar o cdigo ou com muitos chamam debugar o cdigo(porque
em Ingls depurar = debug).
Com a depurao de cdigo podemos encontrar facilmente os erros que esto ocorrendo no
cdigo que estamos testando.
A depurao em si, um teste que fazemos com o cdigo que est sendo produzido. Por este
motivo importante testarmos o cdigo de todas as formas possveis.
Por exemplo, imagine que temos uma rotina para um determinado clculo entre dois valores
distintos, onde um dos valores s pode ser positivo e inteiro e o outro s pode ser negativo e inteiro.
Teramos que testar de vrias formas diferentes, ou seja, com parmetros, ambos os nmeros positivos,
ambos os nmeros negativos, um positivo e outro negativo, valores incorretos tipo texto, data, entre
outros testes.
Ao fazermos a depurao ficamos mais seguros de que a rotina testada funciona.
Muitas vezes, esquecemos de inserir o tratamento de erro em alguma rotina, sendo que em
muitas ocasies este tratamento imprescindvel. Isso fica claro quando executamos a depurao do cdigo,
pois, na utilizao de uma rotina existem vrias situaes que podem acontecer.
Na depurao do cdigo, nada mais fazemos do que simularmos essas vrias situaes.
Muito bem, agora que voc j sabe o que e para que serve a depurao de cdigo vamos
tratar de aprender como depurar um cdigo.
Lembre-se, daqui para frente sempre que preciso vamos depurar os cdigos feitos por ns,
para termos a certeza de que os mesmo funcionam corretamente.
Antes de comearmos a depurar um cdigo, vamos conhecer as ferramentas de depurao
que existem no Editor do Visual Basic.
No Editor do Visual Basic, existe uma opo no menu chamada Depurar. Dentro deste menu
temos vrias opes que sero utilizadas por ns para depurao de cdigo. Veremos as mais comuns delas.
Alm do menu Depurar, temos tambm no Editor do Visual Basic uma barra de ferramentas
tambm chamada Depurar. Ela possui as mesmas opes que existem no menu Depurar. Para exibi-la
vamos em Exibir / Barra de Ferramentas e escolhemos a barra de ferramentas Depurar.

www.webaula.com.br
Pg.: 56/56
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


A figura abaixo mostra a barra de ferramentas depurar:

A descrio de cada comando desta barra de ferramentas dada a seguir:


1 Modo de criao
2 Executar Sub/UserForm (continuar)
3 Interromper
4 Redefinir (parar a execuo)
5 Ativar/desativar pontos de interrupo
6 Depurao Total
7 Depurao parcial
8 Depurao circular
9 Janela Variveis Locais
10 Janela Verificao Imediata a mesma janela que j utilizamos para testar nosso
cdigos feitos
11 Janela Inspeo de Variveis
12 Inspeo de variveis Rpida
13 Pilha de chamadas

seguir:

Para exemplificar a depurao de um cdigo utilizaremos a rotina ConceitoCor mostrada a

www.webaula.com.br
Pg.: 57/57
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Antes de depurar um cdigo temos que definir os pontos de interrupo para que a depurao
comece a partir dali. Este ponto de interrupo nada mais do que a marca onde daremos incio depurao
do cdigo linha a linha. Muitas vezes este ponto no precisa ser na primeira linha do cdigo da rotina, mas
sim, no lugar em que voc acha que est o erro.
Neste exemplo vamos marcar como ponto de interrupo a linha:
TotalLinha = Selection.Cells.Count
Observao: Voc no consegue marcar como ponto de parada linhas de comentrio e nem
linhas de declarao de variveis e constantes, somente linhas de comando.
Para marcar uma linha como ponto de interrupo, fazemos o seguinte:
Com o cursor na linha definida acima, selecionamos a opo Ativar/desativar pontos de
interrupo na barra de ferramentas Depurar.
Com o cursor na linha pressionamos a tecla F9.
Com o mouse, clicamos na regio cinza logo frente da linha.
www.webaula.com.br
Pg.: 58/58
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Se voc utilizar qualquer uma das opes acima uma vez, ativa o ponto de interrupo, se
utilizar novamente desativa.

Marcando a linha como ponto de interrupo, podemos iniciar a depurao do cdigo.


Vamos at a planilha Alunos e selecionamos as clulas G4 at G17.

Feito isso, em Ferramentas / Macro / Macros executamos a macro ConceitoCor.


O que acontece quando voc faz isso?

amarelo.

Voc levado para o cdigo e a linha que marcou como ponto de interrupo fica marcada de

A partir da, comea a depurao.


Antes de qualquer coisa, ao apontar o mouse para a varivel TotalLinha o valor atual da
varivel aparece.

O valor atual dela 0 (zero). Pressionando a tecla F8 a linha amarela que marca a linha de
cdigo que est sendo executada passa para a prxima linha de comando. Apontando o mouse novamente
para a varivel TotalLinha o valor atual j mudou.
www.webaula.com.br
Pg.: 59/59
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

O que aconteceu? Ao avanarmos para a prxima linha, pressionando a tecla F8, a varivel
TotalLinha recebeu o total de linhas selecionadas.
Agora se apontamos o mouse para a varivel Linha, veremos que ela est com o valor 0
(zero), se pressionar F8 novamente, ela receber o valor 1 (um).
Uma outra forma de visualizar o contedo de uma varivel no momento utilizando a Janela
Variveis locais. Acionamos esta opo na barra de ferramentas Depurar.

Esta janela traz todas as variveis utilizadas na rotina e, medida que voc vai depurando o
cdigo (pressionando a tecla F8) as variveis vo trocando de valores.
Ao pressionarmos a tecla F8 vrias vezes, observamos que a linha amarela vai trocando at
que retorna para a linha:
Range("G" & Linha).Select ' Define a clula ativa no momento
Isso acontece porque estamos dentro de um comando de repetio.
Voc no precisa ficar depurando o cdigo at o fim, voc pode test-lo at encontrar o
problema, caso tenha algum problema e depois parar a execuo ou terminar a execuo.
Para interromper a depurao voc pode utilizar os comandos Continuar na barra de
ferramentas Depurar ou Redefinir tambm na barra de ferramentas Depurar.
Observao: No se esquea de, aps terminar a depurao de um cdigo, desmarcar todos
os pontos de parada do mesmo.

www.webaula.com.br
Pg.: 60/60
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


TRATAMENTO DE ERROS EM ROTINAS
TRATANDO ERROS
J vimos alguns exemplos de tratamento de erros em macros. Naquele momento vimos
apenas um modo bsico de se tratar um erro que pode ocorrer na execuo de alguma rotina.
Sempre aconselhvel realizarmos o tratamento dos erros, pois, o usurio ao executar uma
rotina, ou seja, utilizar alguma planilha sua que contm macros ou funes no necessariamente pode saber
muito bem como utilizar essas rotinas e, com isso, gerar erros, que se no forem tratados por voc ficaria
difcil para ele entender o que est acontecendo.

feitas por ns.

Utilizaremos alguns tratamentos de erro, melhorando para o usurio a utilizao das rotinas

Usaremos uma rotina onde o usurio entrar com dois nmeros inteiros e retornaremos em
duas clulas diferentes do Excel o resultado da diviso inteira e o resultado do resto da diviso inteira.
Para entendermos o processamento da rotina, a planilha mostrada conforme abaixo:

O cdigo mostrado abaixo:

www.webaula.com.br
Pg.: 61/61
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Executando a macro, se o usurio sempre inserir valores inteiros nas duas caixas de entrada,
a rotina sempre executar corretamente.
Observe que os dois nmeros inteiros que digita em cada caixa de entrada aparecem,
respectivamente, nas clulas B3 e B4, conforme descrito no cdigo da rotina e, logo em seguida, o resultado
da diviso e do resto da diviso aparecem nas clulas B6 e B7.
Testando a rotina, acionarmos a macro surge a primeira caixa de entrada Digite o dividendo.

Digitamos o valor inteiro 10 nesta caixa e damos Ok. Ao fazermos isso, aparece a segunda
caixa de entrada Digite o divisor.

www.webaula.com.br
Pg.: 62/62
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


= 1.

Digitamos o valor 3 nesta caixa e tambm demos Ok. O resultado ser: quociente = 3 e resto

GERANDO ERROS
Experimentaremos agora executar a macro novamente e vamos comear a gerar alguns
erros propositadamente.
Primeiro: digitando tanto no dividendo ou no divisor um texto, ao invs de um nmero inteiro.
Aparecer o seguinte erro:

valor texto.

O erro aparece porque num1 ou num2 so variveis do tipo inteiro e no admitem receber

Se voc clicar no boto Depurar, aparecer marcada de amarelo exatamente a linha que deu
erro, ou a linha do num1 recebendo o valor da caixa de entrada do dividendo ou a linha da varivel num2
recebendo o valor da caixa de entrada do divisor. Como j sabemos qual o erro, para parar a depurao
marque o boto Redefinir.
Se voc clicar no boto Fim, simplesmente parar a execuo.
Observe que o nmero do erro gerado foi 13 Tipos Incompatveis. Para cada erro que pode
ocorrer existe um nmero de erro especfico e uma descrio.

numrico.

O erro acima ocorrer caso digite um texto ou uma data ou qualquer outro valor que no seja

Segundo: outro erro que poder ocorrer fcil de gerarmos tambm. Executando a macro,
inseriremos qualquer valor no dividendo e no divisor digitaremos 0. Aparecer o erro abaixo:

www.webaula.com.br
Pg.: 63/63
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


cdigo 11.

Isto significa que um erro a diviso por zero e este erro, no VBA tratado como o erro de

Terceiro: mais um erro que pode ocorrer o seguinte: digitando tanto como dividendo ou
como divisor um nmero muito grande, maior que 32768. Lembre-se: os nmeros inteiros variam num
intervalo de -32768 a +32767. O erro abaixo ocorrer:

O erro de cdigo 6, o erro que informa estouro no limite aceito pela varivel.
Vimos que muitos erros podem ocorrer numa rotina simples como esta que, simplesmente,
executa duas operaes matemticas: uma diviso inteira e um resto da diviso inteira.

usurio.

Alm destes trs erros que testamos, pode at ser que outros erros possam ser gerados pelo

Por este motivo teremos que aprender como tratar esses erros, ou seja, como no deixar
que o erro estoure na tela do usurio aparecendo uma mensagem para ele que ele no entenda.

TrataErro.

Para realizarmos o tratamento de erro da rotina Divisao, logo abaixo dela criaremos a rotina

Voc observou que sempre o cdigo do erro gerado pelo VBA um valor numrico inteiro,
no ? Ento desta forma, o parmetro de entrada desta rotina ser um parmetro inteiro. Para no termos
problemas de estouro com este parmetro, iremos declar-lo do tipo Long.
Testamos tambm trs tipos de erros retornados, os tipos de cdigo 13 tipos
incompatveis, 11 diviso por zero e 6 estouro de limite.
Vamos utilizar o comando Select para testar estes valores retornados e ainda utilizar uma
clusula Else do Select caso outro erro no tratado por ns aparea.
Criamos a rotina conforme a seguir:

www.webaula.com.br
Pg.: 64/64
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Existem duas formas de tratarmos os erros ocorridos em uma rotina.

comando:

A primeira delas j vimos em tpicos anteriores, quando estudamos macros. Utilizamos o

On Error Resume Next


Com este comando se qualquer erro ocorre em algum comando, alguma instruo do cdigo,
a execuo pula para a prxima linha de comando.
Uma outra forma de utilizarmos o tratamento de erro, fazendo uso do comando a seguir:
On Error Goto Rtulo
Com esse comando, informamos ao VBA que, se algum erro ocorrer nas linhas de cdigo
abaixo deste comando, a execuo do cdigo pula para onde est o Rtulo. Este Rtulo um nome que
damos a determinada linha significando que, a partir dali continuar a ser executado o cdigo.
A sintaxe de uma rotina com o tratamento de erros fica assim:
On Error Goto TratamentodeErro este nome do rtulo pode ser qualquer um
... comandos ... comandos da rotina
TratamentodeErro: rtulo seguido de dois pontos
... comandos ... comandos a serem executados caso ocorra algum erro
O cdigo a seguir mostra a rotina Divisao com o tratamento de erro.

Exit Sub?

Somente um detalhe deste cdigo ainda no foi explicado. Qual o porqu da linha de comando

Este comando ser preciso por que toda vez que executarmos esta rotina, caso no d
nenhum erro a execuo normal ser feita e logo aps o comando Range("B7").FormulaR1C1 = resto, o
prximo comando a ser executado seria TrataErro Err.Number.
Desta forma sempre iramos executar a rotina de tratamento de erro e isso no preciso,
pois, somente ser preciso quando de fato der erro. Por este motivo, utilizamos o comando Exit Sub,
informando que ali o final normal da rotina caso no ocorra erro algum.

www.webaula.com.br
Pg.: 65/65
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Observao: Note que na chamada da rotina TrataErro passamos como parmetro o nmero
do erro gerado pelo VBA, ou seja, o Err.Number.

PROPRIEDADES E MTODOS DO OBJETO ERR


Vimos que quando so gerados erros em nossas rotinas entra em ao o objeto Err. esse
objeto que responsvel por qualquer erro de execuo que ocorrer no VBA.
Quando ocorre qualquer erro em tempo de execuo, as propriedades do objeto Err so
preenchidas com informaes que identificam com exclusividade o erro e a informao que podem ser usados
para trat-lo.
A principal propriedade do objeto Err a propriedade Number. Esta propriedade retorna o
nmero do erro gerado em tempo de execuo.
Alm desta propriedade o objeto Err possui outras propriedades e mtodos, a saber:

Objeto Err
Propriedades
Number

Retorna um valor numrico que especifica um erro

Description

Retorna a descrio de um erro

Source

Retorna a origem do erro objeto ou aplicativo

www.webaula.com.br
Pg.: 66/66
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


HelpFile

Retorna o caminho completo para um arquivo de ajuda sobre o erro

HelpContext

Retorna o ID de contexto para um arquivo de ajuda

LastDLLError

Retorna um cdigo de erro do sistema


Mtodos

Clear

Limpa todas as definies do objeto Err

Raise

Gera um erro em tempo de execuo


O cdigo abaixo mostra a utilizao dos mtodos e propriedades do Objeto Err:

Observe que estamos gerando o erro 11 com a ajuda do mtodo Raise. Para modificar o erro
gerado modifique o nmero 11 por outro.
Para testarmos a rotina, utilizamos a janela Verificao Imediata do editor.
Observao: na construo da mensagem de erro foi utilizada a constante vbCrLf que uma
constante prpria do VBA que significa quebra de linha.

www.webaula.com.br
Pg.: 67/67
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


A HIERARQUIA DE OBJETOS DO EXCEL
OBJETOS DO EXCEL
A hierarquia dos objetos do Excel funciona da seguinte forma:
1.

Objeto Application

2.

Objeto Workbooks

3.

Objeto Worksheets

4.

Objeto Range

Destes quatro objetos listados acima, j trabalhamos algumas vezes com o objeto Range. Ele
foi utilizado quando queramos trabalhar com uma clula ou um intervalo de clulas.
Mas vejamos hierarquicamente cada um dos objetos.
O objeto Application o prprio aplicativo Excel, ou seja, a aplicao como um todo. Este
objeto contm um conjunto de Workbooks.
O objeto Workbook cada arquivo aberto do Excel, ou seja, cada pasta de trabalho. Este
objeto possui um conjunto de Worksheets.
O objeto Worksheet cada planilha dentro de uma pasta de trabalho, desta forma quando
queremos trabalhar com planilhas utilizamos este objeto. Este objeto contm um conjunto de Ranges.
O objeto Range, como j visto representa uma clula ou um conjunto de clulas.

O OBJETO APPLICATION
O objeto Application utilizado quando queremos de alguma forma trabalhar com a aplicao
do Excel como um todo.
Algumas propriedades e mtodos do objeto Application sero vistos por ns.
O mtodo Caption modifica o nome do aplicativo Microsoft Excel para o nome que
desejamos. Desta forma se escrevemos:
Application.Caption = Teste de Ttulo
Na barra de ttulos do Excel, ao invs de termos Microsoft Excel, estar Teste de Ttulo.
A rotina a seguir nos mostra como mudar o nome do aplicativo:

www.webaula.com.br
Pg.: 68/68
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Para testar esta rotina, vamos na janela Verificao Imediata e digitamos o nome da rotina
em seguida damos ENTER. Ao olharmos para a janela do Excel e a barra de ttulo do mesmo o nome foi
modificado.
O mtodo Run executa uma determinada macro. Utilizando Application.Run podemos passar
como parmetros a macro e seus parmetros, caso tenha.
Para utilizarmos este mtodo, vamos criar uma macro simples. Em um arquivo do Excel que
est aberto, criamos uma macro que formata uma clula com a fonte Courier New e cor vermelha.
Depois que voc parar a gravao dessa macro, vamos ao Editor do Visual Basic e criamos a
que se encontra abaixo:

Onde FormataFonte o nome da macro criada.


Observe a macro abaixo. So passados dois parmetros para a macro FormataFonte2, o
nome da fonte e a cor da fonte e estes parmetros so utilizados no cdigo da macro:

Veja a rotina abaixo:

www.webaula.com.br
Pg.: 69/69
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

A execuo desta rotina na janela Verificao Imediata faz com que a macro FormataFonte2
seja executada com a fonte e a cor informadas. A clula selecionada ficar com a formatao escolhida.
Exemplo:

ExecutaMacro2 "Times New Roman", 6 (fonte Times New Roman e cor amarela);

ExecutaMacro2 "Tahoma", 15 (fonte Tahoma e cor cinza);

ExecutaMacro2 "Verdana", 32 )fonte Verdana e cor azul).

Outro mtodo que voc pode utilizar o mtodo Quit.


Este mtodo encerra o Excel, ou seja, fecha todas as janelas do Excel que estejam abertas.
A rotina a seguir utiliza este mtodo:

O OBJETO WORKBOOKS
O objeto Workbooks utilizado quando queremos de alguma forma trabalhar com as pastas
de trabalho do Excel.
Algumas propriedades e mtodos do objeto Workbooks sero vistos por ns.
Vimos que no objeto Application o mtodo Quit encerra a aplicao, ou seja, fecha o Excel.
Para fecharmos uma pasta de trabalho especfica, utilizamos o mtodo Close.
O cdigo a seguir mostra um exemplo do mtodo Close:

Para testarmos esta rotina, suponhamos que temos um arquivo aberto chamado
Divisao.xls. Podemos utilizar esta rotina FecharArquivo na janela verificao Imediata da seguinte forma:
www.webaula.com.br
Pg.: 70/70
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


FecharArquivo "Divisao"
O arquivo Divisao.xls ser fechado.
Como voc pode fechar um arquivo que est aberto, voc tambm pode abrir um arquivo.
Para isso, veja a rotina abaixo:

Ao realizar o teste desta rotina voc ter que passar como parmetro no somente o nome
do arquivo que ser aberto, como foi feito no teste anterior da rotina para fechar o arquivo, mas tambm o
caminho completo que leva at o arquivo.

forma:

Por exemplo, para testar esta rotina utilizando a janela Verificao Imediata, faa da seguinte

AbrirArquivo "C:\Excel\Divisao.xls"
Onde:
C:\Excel\ a pasta em seu computador onde est gravado o arquivo Divisao.xls.

O OBJETO WORKSHEETS
O objeto Worksheets utilizado quando queremos de alguma forma trabalhar com as
planilhas contidas em uma pasta de trabalho do Excel.
Algumas propriedades e mtodos do objeto Worksheets sero vistos por ns.
Vamos, primeiramente, visualizar um cdigo para nomear planilhas.

Para testar esta rotina utilizando a janela Verificao Imediata fazemos da seguinte forma:
NomearPlanilha 1, "Teste 1"
www.webaula.com.br
Pg.: 71/71
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Se voc testar novamente e utilizar um nmero de planilha inexistente, como fizemos um
tratamento de erro, a nossa rotina retornar a janela para o usurio:

Isto porque voc tentou acessar uma planilha inexistente em sua pasta de trabalho.
Para criamos uma nova planilha em uma pasta de trabalho vamos utilizar o seguinte cdigo:

Com este cdigo podemos criar uma planilha onde acharmos necessrio. Por padro, sempre
uma planilha inserida na posio anterior planilha que est selecionada.
Para excluirmos uma planilha o processo semelhante ao da criao, porm, ao invs do
mtodo Add, utilizaremos o mtodo Delete.
Veja o cdigo a seguir:

Com este cdigo voc pode excluir uma planilha passando como parmetro o nmero (ndice
da mesma) ou o nome da planilha.
Observe que utilizamos antes do nome de cada parmetro a palavra-chave Optional, ela tem
a finalidade de informar que o parmetro no obrigatrio. Por isso existem duas forma para testar essa
rotina:
www.webaula.com.br
Pg.: 72/72
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

ExcluirPlanilha 1

ExcluirPlanilha ,"Plan3"

Veja que no primeiro teste, passamos somente o nmero da planilha que queremos apagar.
No segundo teste passamos virgula seguido do nome da planilha que queremos apagar. Em ambos os casos
omitimos um dos parmetros.

O OBJETO RANGE
O objeto Range, com certeza, o mais utilizado por ns, por este mesmo, at antes de
falarmos diretamente sobre ele j o utilizamos algumas vezes.
Utilizamos o objeto Range quando queremos trabalhar com determinada clula ou
determinado intervalo de clulas.
Por exemplo, podemos querer que determinada clula receba determinado valor, ou podemos
querer ler os valores contidos em vrias clulas.
Podemos ainda querer formatar um determinado intervalo de clulas. Para tudo isso utilizamos
o objeto Range.
Observe a rotina a seguir, onde, primeiramente, contamos a quantidade de clulas que existe
no intervalo de B2 at B8. Depois que fazemos isso, somamos os valores que esto dentro de cada clula.
Logo em seguida extramos a mdia destes valores, dividindo a soma pela quantidade. Com a mdia
formatamos a clula para que nela somente tenha duas casas decimais.

www.webaula.com.br
Pg.: 73/73
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Podemos utilizar a rotina acima numa planilha como esta:

O boto chamado Calcular acionar a rotina Totais.


Clicando no boto veremos o resultado aparecendo nas clulas B10, B11 e B12.

www.webaula.com.br
Pg.: 74/74
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


WORKBOOKS E WORKSHEETS
O PROJECT EXPLORER
Voc j reparou que no Project Explorer do Editor do Visual Basic, alm dos mdulos que
criamos existem tambm um espao onde temos os objetos do Excel, ou seja, geralmente, temos o objeto
EstaPasta_de_Trabalho que o arquivo que est aberto e tambm as planilhas que se encontram neste
arquivo, conforme a figura abaixo:

Se dermos um clique duplo no objeto EstaPasta_de_Trabalho na rea de trabalho ao lado


aparecer um espao para trabalharmos com o objeto WorkBooks e seus eventos.
Se dermos um clique duplo em qualquer uma das planilhas Plan1, Plan2 ou Plan3, ou seja l
qual for o nome que as mesmas possuam no arquivo que est aberto, na rea de trabalho ao lado aparecer
um espao para trabalharmos com o objeto WorkSheets e seus eventos.
Dando um clique duplo no objeto EstaPasta_de_Trabalho na rea de trabalho, temos duas
caixas de combinao no topo da tela. Uma delas a caixa de combinao Objeto e a outra a caixa de
combinao Procedimento (Evento).
Selecionando Workbook na caixa de combinao Objeto, automaticamente j aparece um
evento associado a este objeto. O evento Open que o evento padro deste objeto.
Observe agora que na caixa de combinao procedimento temos todos os eventos
associados ao objeto Workbook.
Veja na figura abaixo. O objeto Workbook est selecionado na caixa de combinao da
esquerda e na caixa de combinao da direita esto os eventos que podem ser associados a este objeto.

Para cada evento que voc selecionar na caixa de combinao direita surgir um
procedimento para voc construir o cdigo do mesmo.

www.webaula.com.br
Pg.: 75/75
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Dando um clique duplo no objeto Plan1 na rea de trabalho, temos as duas caixas de
combinao no topo da tela novamente. Uma delas a caixa de combinao Objeto e a outra a caixa de
combinao Procedimento (Evento).
Selecionando Worksheet na caixa de combinao Objeto, automaticamente j aparece um
evento associado a este objeto. O evento SelectionChange que o evento padro deste objeto.
Observe agora que na caixa de combinao procedimento temos todos os eventos
associados ao objeto Worksheet.
Veja na figura abaixo. O objeto Worksheet est selecionado na caixa de combinao da
esquerda e na caixa de combinao da direita esto os eventos que podem ser associados a este objeto.

Para cada evento que voc selecionar na caixa de combinao direita surgir um
procedimento para voc construir o cdigo do mesmo.

PROGRAMANDO COM EVENTOS


Com um arquivo vazio do Excel, trabalharemos no Editor do Visual Basic e utilizaremos a
Plan1 para trabalharmos com os eventos associados a ela.
Para iniciar nosso trabalhos, no Project Explorer damos um clique duplo em Plan1 ou seno
clicamos com boto direito do mouse sobre Plan1 e escolhemos Exibir Cdigo. Selecionamos o objeto
Worksheet.
Conforme j visto o evento SelectionChange j foi selecionado.
Incluiremos neste evento o seguinte comando:
MsgBox Teste
Voltando ao Excel e digitando qualquer coisa na clula A1, o que acontece? Aparece a caixa de
mensagem Teste.
Se voc trocar de clula novamente, a caixa de mensagem aparecer novamente.
O que voc fizer nesta planilha far com que a caixa de mensagem aparea.
isto que o evento SelectionChange faz, para qualquer mudana na planilha, os comandos em
seu interior sero executados, como neste caso o nico comando que ele possui a exibio de uma caixa de
mensagem, ele est fazendo exatamente isto.
Se voc trocar de planilha no Excel, o evento no funciona nesta outra planilha, pois ele foi
utilizado na Plan1. Para us-lo nesta outra planilha teramos que inseri-lo em seu cdigo.
O evento BeforeDoubleClick ocorre quando voc d um clique duplo com o boto do mouse
em qualquer clula da planilha.
www.webaula.com.br
Pg.: 76/76
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Quando faz isso, antes mesmo de efetuar a ao do duplo clique, o evento realizado.
Voc pode testar este evento da mesma forma que testou o anterior.
Criaremos dentro dele um MsgBox com algum contedo. Voc ver que ao clicar duas vezes
na planilha o evento ser executado, ou seja, a caixa de mensagem aparecer.

O evento BeforeRightClick ocorre quando voc clica com o boto direito do mouse em alguma
clula de sua planilha.
Quando faz isso, antes de aparecerem as opes disponveis ao clicar com o boto direito do
mouse, sero executados os comandos que esto dentro do evento BeforeRightClick.
Podemos testar este evento tambm.

Observe que os eventos j possuem alguns parmetros pr-definidos.

Range.

No caso do evento SelectionChange existe o parmetro Target que um objeto do tipo

No caso dos eventos BeforeDoubleClick e BeforeRightClick, alm do parmetro Target, temos


tambm o parmetro Cancel que do tipo lgico verdadeiro ou falso.

procedimento.

Estes parmetros, no necessariamente precisam ser utilizados no cdigo que vir dentro do

Veremos um exemplo que utiliza o parmetro.

www.webaula.com.br
Pg.: 77/77
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Voc v que a varivel Target a mesma coisa de utilizarmos o objeto ActiveCell, ou seja, a
clula ativa ou clulas ativas que foram selecionadas.

www.webaula.com.br
Pg.: 78/78
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


O USERFORM
CONHECENDO OS FORMULRIOS - USERFORMS
planilhas.

possvel no editor do Visual Basic criarmos formulrios para entrada de dados em nossas

Para trabalharmos com formulrios no Editor do Visual Basic acessamos a opo Inserir e
criamos um UserForm. Aparecer um userform para que possamos trabalhar.

Quando trabalhamos com formulrios, utilizaremos a caixa de ferramentas para construo


dos controles que aparecero no formulrio.
A caixa de ferramentas do Editor do Visual Basic aparece quando inserimos um formulrio ou
seno quando selecionamos Exibir / Caixa de ferramentas, desde que estejamos com algum formulrio
ativo.
A caixa de ferramentas mostrada abaixo:

Faremos uma breve descrio sobre cada um dos componentes desta caixa de ferramentas:
1.

Selecionar Objetos um controle utilizado para selecionar os objetos que se


encontram em um formulrio para arrast-los ou redimension-los ou ainda exclulos.

2.

Rtulo utilizado quando queremos dar nomes as campos que estaro no


formulrio. utilizado para legenda dos campos ou controles.

www.webaula.com.br
Pg.: 79/79
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


3.

Caixa de Texto o controle utilizado par entrada de qualquer tipo de texto. O


usurio poder digitar qualquer informao neste campo.

4.

Caixa de Combinao o controle que conter uma listagem de itens onde o


usurio pode selecionar um deles.

5.

Caixa de Listagem o controle que conter uma listagem de itens onde o usurio
pode escolher um nico item ou vrios itens.

6.

Caixa de Seleo o controle utilizado para seleo de vrias opes, o usurio


pode selecionar uma nica opo ou vrias.

7.

Boto de Opo utilizado quando o usurio somente pode escolher uma opo
dentre uma lista de opes.

8.

Boto de Ativao utilizado como o controle anterior, o usurio somente pode


escolher um nico boto.

9.

Moldura utilizado quando queremos agrupar os controles dentro de uma moldura.


No caso dos botes de opo aconselhvel coloc-los dentro da moldura, pois,
dentro do mesmo formulrio podemos ter dois grupos diferentes de botes de
opes, dessa forma colocando-os em molduras diferentes, o usurio poder
selecionar uma opo de cada grupo.

10. Boto de Comando so os botes que executaro os comandos.


11. Faixa de Tabulao permite a separao dos controles em pginas diferentes.
Utilizado quando o formulrio possuir muitos controles.
12. Multi-pgina permite a apresentao de vrias telas de controles diferentes.
Tambm utilizado quando o formulrio possuir muitos controles.
13. Barra de Rolagem ferramenta grfica para navegao rpida em uma lista onde
cada posio assumida pela rolagem uma valor.
14. Boto de Rotao controle para incrementador e decrementador de nmeros.
15. Imagem exibe uma imagem em seu formulrio.
16. RefEdit exibe um controle parecido com uma caixa de texto , porm, contendo uma
ala ao final que ao ser acionada, o formulrio se esconde e voc pode preencher a
caixa de texto, visualizando a planilha abaixo do formulrio. parecido com as caixas
de texto das funes do Excel.
Alm da caixa de ferramentas tambm utilizaremos a janela Propriedades. Para exibi-la,
selecione Exibir / Janela Propriedades.
Nesta janela aparecem as propriedades do controle selecionado no momento, deixando voc
modificar as propriedades do controle em questo.

www.webaula.com.br
Pg.: 80/80
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

CRIANDO FORMULRIOS
Faremos um exemplo para aprendermos formulrios.
Precisaremos de uma planilha conforme abaixo. O nome dessa planilha ser Funcionarios.

O boto de comando Cadastrar Funcionrios, por enquanto no acionar nenhuma macro.


Precisaremos de uma outra planilha conforme abaixo. O nome dessa planilha ser Cargos.

www.webaula.com.br
Pg.: 81/81
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

trabalharmos.

No Editor do Visual Basic selecionamos Inserir / UserForm. Surgir um formulrio para

Nas propriedades deste formulrio definimos o seguinte:


Propriedade (Name) nome do formulrio: frmFuncionario

Funcionrios

Propriedade Caption nome que aparece na barra de ttulo do formulrio: Cadastro de

Agora, iremos comear a inserir os controles no formulrio. Para inserir cada controle, voc
somente precisa selecionar o controle desejado na caixa de ferramentas e depois desenh-lo no formulrio.
Ns iremos inserir no formulrio os seguintes controles: 3 rtulos, 2 caixas de texto, 1 caixa
de combinao e 3 botes de comando.
A figura abaixo demonstra como o formulrio ir ficar:

Vamos configurar agora as propriedades de cada controle.


Para os rtulos, precisamos definir a propriedade Caption de cada um deles.
Para a primeira caixa de texto, definiremos as seguintes propriedades:

(Name) nome do controle: txtNome

TabIndex ndice de tabulao (caso o usurio queira usar a tecla TAB para mudar
entre campos): 1

www.webaula.com.br
Pg.: 82/82
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


propriedades:

Para a caixa de combinao que vem logo abaixo desta caixa de texto, definiremos as

(Name): cboCargo

TabIndex: 2

Para a segunda caixa de texto que vem abaixo da caixa de combinao, definiremos assim:

(Name): txtSalario

TabIndex: 3

Agora, faltam os 3 botes. A configurao dos trs ser dada a seguir:


Boto Salvar:

(Name): cmdSalvar

Caption: Salvar

TabStop indica se o tabulador passar pelo controle (se o usurio pressionar a tecla
TAB todos os campos que esto com TabStop = True sero acionados na seqncia
do TabIndex): False

Boto Limpar:

(Name): cmdLimpar

Caption: Limpar

TabStop: False

Boto Fechar:

(Name): cmdFechar

Caption: Fechar

TabStop: False

Para configurar cada propriedade do controle basta selecionar o controle com um nico clique
do mouse e ir at as propriedades do mesmo.

www.webaula.com.br
Pg.: 83/83
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

PROGRAMANDO O FORMULRIO
Exibir Cdigo.

Clicando com o boto direito do mouse sobre o fundo do Formulrio, selecionaremos a opo

Vamos inserir um cdigo para que, ao ativar o formulrio a caixa de combinao cboCargo
seja preenchida com os nomes dos cargos que esto na planilha Cargos.
Para fazermos isso, verifique se na caixa de combinao Objeto est selecionado o objeto
UserForm. Caso no esteja, selecione-o. Agora, selecione o evento Activate.
Aparecer o evento abaixo:

O cdigo a seguir ficar neste evento:

Neste
evento,
Worksheets("Cargos").Select.

estamos

selecionando

planilha

Cargos

com

comando

Depois selecionamos a clula B4 desta planilha. Fazemos isso utilizando o comando


Range("B4").Select. Selecionamos esta clula, pois a partir dela que esto os cargos que iremos utilizar
para preencher nossa caixa de combinao.
www.webaula.com.br
Pg.: 84/84
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Agora, utilizaremos um comando de repetio para avanarmos pela coluna B at que no
haja mais dados para serem preenchidos.
Enquanto existem dados na coluna B, a partir da clula B4, vamos preenchendo a caixa de
combinao cboCargo com o comando cboCargo.AddItem ActiveCell.Value.
O comando ActiveCell.Offset(1, 0).Select serve para avanarmos as linhas da tabela, ou
seja, a coluna permanece sempre a mesma B e a linha a cada repetio avanada para baixo.
Ao final retornamos para a planilha Funcionarios.
Desta forma, quando o formulrio frmFuncionarios for acionado a caixa de combinao
cboCargo ser preenchida com todos os cargos.
Agora criaremos um procedimento chamado Limpa. Ele ser utilizado quando o boto Limpar
for executado e tambm quando o boto Salvar for executado, logo aps gravar os valores contidos em cada
campo.
O cdigo do procedimento Limpa mostrado a seguir:

Este cdigo bastante simples.


No formulrio temos trs campos: txtNome, txtSalario e cboCargo. Este procedimento faz
com que a propriedade Text de cada um destes campos receba o valor vazio ( abre e fecha aspas
duplas).

momento.

A propriedade Text dos campos os valor que o campo recebe ou tem em determinado

Se o nosso formulrio tivesse mais campos, bastaria colocarmos para cada campo, a sua
propriedade Text recebendo vazio. Assim, limparamos todo o formulrio.
Este procedimento ser usado no boto Limpar, obviamente, e no boto Salvar, pois limpando
o formulrio aps o usurio clicar no boto Salvar, fica mais fcil para ele caso queira cadastrar mais
funcionrios.
Alm do procedimento Limpa que j criamos. Vamos, agora, criar a funo ValidaCadastro.
Esta funo ser responsvel por testar se todos os campos foram preenchidos e, somente se tiverem sido
preenchidos, que a gravao dos dados ser realizada.
Esta funo no somente testar se os dados foram todos preenchidos, mas no caso do
salrio, alm de testar se foi preenchido, testar tambm se foi preenchido com um valor numrico. Para este
teste utilizaremos a funo IsNumeric que retorna verdadeiro se o valor numrico e falso, caso contrrio.
Esta funo retornar, como resultado, um valor lgico (booleano). Se tudo foi preenchido
corretamente retornar o valor verdadeiro, caso contrrio retornar o valor falso.
O cdigo deste procedimento mostrado ao lado:

www.webaula.com.br
Pg.: 85/85
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Retornando ao formulrio, inseriremos o cdigo em qualquer boto, dando um clique sobre o


boto que desejamos inserir este cdigo.
Vamos comear pelo boto Fechar.
O cdigo do mesmo :

O comando Unload serve para fechar o formulrio, neste caso, estamos informando que o
formulrio frmFuncionario ser fechado.
O cdigo do boto Limpar ainda mais simples.
Teremos que acionar o procedimento Limpa j criado anteriormente.
O cdigo do boto Limpar :

www.webaula.com.br
Pg.: 86/86
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


Agora s falta inserirmos o cdigo do boto Salvar:

A explicao deste cdigo simples:


Primeiramente, verificamos se est tudo preenchido corretamente utilizando o comando If
ValidaCadastro Then.
Feito isso, verificamos se o primeiro registro que iremos inserir ou no. Veja que testamos o
valor que est contido na clula A4 - If Range("A4").Value = "" Then. Se este valor est vazio
selecionamos a clula A4, seno selecionamos a clula A3 e, a partir dela, iremos at a ltima clula
preenchida (Selection.End(xlDown).Select) e avanaremos para a prxima clula (ActiveCell.Offset(1,
0).Select).

clula.

Agora preenchemos os valores contidos em cada campo do formulrio em suas respectiva

Por ltimo, usamos o procedimento Limpa para limpar os campos do formulrio.

UTILIZANDO O FORMULRIO NA PLANILHA


Criaremos um mdulo para chamar o formulrio. No Editor do Visual Basic, criaremos um
mdulo indo em Inserir / Mdulo.
Vamos criar uma rotina macro chamada CadastraFuncionario.
esta rotina que ser utilizada ao clicarmos no boto Cadastra Funcionrios que est na
planilha Funcionarios.
O cdigo desta rotina :

www.webaula.com.br
Pg.: 87/87
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

O comando NomedoFormulario.Show serve para abrir o formulrio desejado, neste caso o


formulrio o frmFuncionario.
O valor 1 logo aps este comando indica que enquanto este formulrio estiver aberto, o
usurio no poder clicar na planilha abaixo, se no colocar nada aps o evento Show, isto ser possvel.

www.webaula.com.br
Pg.: 88/88
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL


SEGURANA DE MACROS
SEGURANA
Ns j vimos, no incio desta apostila, como nos protegemos de algum tipo de vrus de macro.

macros.

sempre aconselhvel deixarmos selecionada a opo Mdio do nvel de segurana de

Com esta opo selecionada, sempre que abrimos qualquer arquivo que contm macros,
antes somos perguntados se desejamos ativar as macros ou no.
Desta forma, se sabemos a procedncia do arquivo ativamos as macros nele contidas, seno
podemos desativ-las.

abaixo:

A opo nvel Mdio escolhemos em Ferramentas / Macro / Segurana. Aparecendo a tela

Ao abrirmos um arquivo que contm macros, a caixa de dilogo abaixo aparecer:

www.webaula.com.br
Pg.: 89/89
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

PROTEGENDO CDIGOS
Tudo o que voc faz no Editor do Visual Basic pode ficar disponvel somente para quem voc
permitir o acesso.
Desta forma, seu cdigo ficar protegido contra aqueles usurios que queiram abrir seus
cdigos, podendo fazer alguma mudana e at mesmo estragando-os.
Para proteger cdigos, fazemos o seguinte:
Vamos ao Editor do Visual Basic e selecione Ferramentas / Propriedades do VBAProject.
A janela com as propriedades do projeto aparecer.

Acionaremos a guia Proteo.

www.webaula.com.br
Pg.: 90/90
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

Nesta guia, marcamos a opo Bloquear projeto para exibio. Depois, digitamos uma
senha para exibir o cdigo novamente e confirmamos a senha.

acess-lo.

Feito isso, o cdigo deste projeto est protegido. Somente quem possui a senha poder

Para desproteger cdigos, basta fazer o mesmo processo, porm, desmarcando a opo para
bloque-lo e retirando a senha e confirmao de senha.

www.webaula.com.br
Pg.: 91/91
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula

MACRO E VBA PARA EXCEL

CONCLUSO

Esperamos que o contedo desta apostila tenha servido de suporte para as suas aulas.
Lembre-se que nada substitui uma boa aula de seu professor.
A informtica sofre mudanas bruscas muito rapidamente, procure no futuro uma biblioteca
auxiliar e fique atento ao lanamento de novos aplicativos e verses.

necessrio.

A Zargon Computao estar sempre ao seu dispor para solucionar dvidas quando

Atenciosamente,

Diretoria de Treinamento
Zargon Tecnologia em Informtica

www.webaula.com.br
Pg.: 92/92
Proibida a reproduo e utilizao no autorizada, de todo ou parte do contedo deste material.
Todos os direitos so reservados e licenciados pelo Grupo Zargon e Poliedro Educacional - Copyright 1999-2004 Powered by
webAula