Vous êtes sur la page 1sur 138

SUMRIO

MDULO 1 - INTRODUO A MACROS NO EXCEL


IMPORTNCIA DA UTILIZAO DE MACROS ....................................... 3
INTRODUO A MACROS........................................................................... 3
COMO CRIAR MACROS? .............................................................................. 4
GRAVADOR DE MACROS X CDIGO VBA .............................................. 4
CRIAR UMA MACRO USANDO O GRAVADOR DE MACROS................ 6
ESTRUTURA DE UMA MACRO ................................................................... 9
OPERAES COM MACROS...................................................................... 11
RENOMEAR UMA MACRO......................................................................... 11
ALTERANDO A TECLA DE ATALHO E A DESCRIO ASSOCIADA A
MACRO .......................................................................................................... 14
EXCLUIR UMA MACRO.............................................................................. 15
ASSOCIANDO MACROS A CONTROLES DE FORMULRIOS ............. 16
ASSOCIAR A MACRO AO BOTO ............................................................ 17
MDULO 2 - INTRODUO AO VBA NO EXCEL
O AMBIENTE DE PROGRAMAO (EDITOR VBA)............................... 20
PROJETO VBA PROJECT E JANELA DE PROPRIEDADES ................. 20
PESQUISADOR DE OBJETO ....................................................................... 22
MDULO 3 VARIVEIS
DECLARAO DE VARIVEIS ................................................................. 26
OPTION EXPLICIT ....................................................................................... 26
TIPOS DE VARIVEIS ................................................................................. 27
SUBTIPOS DO TIPO VARIANT................................................................... 28
OPERADORES ARITMTICOS ................................................................... 29
OPERADOR DE ATRIBUIO.................................................................... 29
OPERADORES RELACIONAIS ................................................................... 30
EXERCCIO 1 ................................................................................................ 30
VARIVEIS - ARRAYS................................................................................ 34
ARRAY UNIDIMENSIONAL ....................................................................... 34
ARRAY BIDIMENSIONAL .......................................................................... 34
DECLARAO DE ARRAYS ...................................................................... 35
EXERCCIO 1 ................................................................................................ 36
EXERCCIO 1 ................................................................................................ 39
ESCOPO OU DOMNIO DAS VARIVEIS................................................. 41
ESCOPO DE PROCEDIMENTO/FUNO.................................................. 41
ESCOPO DE MDULO................................................................................. 43
ESCOPO DE PROJETO ................................................................................. 45
MDULO 4 SUB-ROTINAS E FUNES
SUB-ROTINAS .............................................................................................. 47
EXERCICIO ................................................................................................... 49
FUNES....................................................................................................... 50
EXECUTANDO A FUNO CRIADA, NO EXCEL................................... 53
MDULO 5 FUNES INTERNAS DO VBA
FUNES DE TIPO ...................................................................................... 55
FUNES PARA TRATAMENTO DE TEXTO .......................................... 56
FUNES DE DATA E HORA..................................................................... 60
OUTRAS FUNES TEIS ......................................................................... 71
EXERCCIO 1 ................................................................................................ 72
MDULO 6 TRATAMENTO DE ERROS
EXERCCIO 1 ................................................................................................ 76
MDULO 7 ESTRUTURAS DE CONTROLE
A ESTRUTURA IF... THEN .......................................................................... 78
A ESTRUTURA IF... THEN... ELSE ............................................................. 79
A ESTRUTURA IF... THEN... ELSEIF ......................................................... 81
EXERCICIO 1 ................................................................................................ 83
A ESTRUTURA FOR... NEXT ...................................................................... 84
EXERCICIO ................................................................................................... 85
A ESTRUTURA DO... LOOP ........................................................................ 86
EXERCICIO 1 ................................................................................................ 94
REVISO 1 .................................................................................................... 95
REVISO 2 .................................................................................................... 96
REVISO 3 .................................................................................................... 99
MDULO 8 MSGBOX E INPUTBOX
A FUNO MSGBOX ................................................................................ 100
A FUNO INPUTBOX ............................................................................. 105
EXERCCIO ................................................................................................. 109
MDULO 9 MODELOS DE OBJETOS DO EXCEL
PROPRIEDADES, MTODOS, EVENTOS E COLEES DOS OBJETOS111
DESCRIO DOS PRINCIPAIS OBJETOS DO EXCEL .......................... 112
UTILIZAO DOS PRINCIPAIS OBJETOS DO EXCEL......................... 121
MDULO 10 FORMULRIOS NO VBA (USERFORMS)
INTRODUO SOBRE FORMULRIOS ................................................. 123
CRIANDO UM USERFORM....................................................................... 124
CAIXA DE FERRAMENTAS...................................................................... 125
JANELA DE PROPRIEDADES................................................................... 125
PROPRIEDADES DOS CONTROLES........................................................ 126
CONTROLES DE FORMULRIOS............................................................ 130
PROJETO FINAL.............................................................................................. 138
MDULO 1 - INTRODUO A MACROS NO EXCEL
Neste mdulo veremos os principais fundamentos sobre Macros.
Conheceremos exatamente o que uma macro, como esta definida a
sua estrutura e aprenderemos a realizar algumas operaes. Os
conceitos vistos neste mdulo, sero de extrema importncia para o
entendimento dos demais mdulos.
IMPORTNCIA DA UTILIZAO DE MACROS

Em determinados problemas, que surgem durante a criao das


planilhas em Excel, no conseguimos resolv-los simplesmente
utilizando os comandos e frmulas do Excel.
Nessas situaes temos que fazer uso de recursos como Macros e
Programao. A linguagem de programao do Excel o VBA Visual
Basic for Applications. O VBA a linguagem de programao para
todos os aplicativos do Microsoft Office como: Word, Excel, Access e
PowerPoint.
INTRODUO A MACROS

Se caso surgir uma necessidade de se executar uma tarefa vrias


vezes no Microsoft Excel, ao invs de perder tempo executando-as
diversas vezes, podemos automatizar esta tarefa simplesmente com a
criao de uma macro.
Macro uma seqncia de comandos ou funes armazenados em
um cdigo VBA, que pode ser executado sempre que se precisar
executar a tarefa.
As macros so uma excelente opo para automatizar tarefas
repetitivas. Com o uso de macros temos um ganho de produtividade
considervel, ao evitar que tenhamos que executar manualmente, os
diversos passos de uma tarefa, passos estes que podem ser
automatizados atravs do uso de uma macro.
COMO CRIAR MACROS?

Existem duas maneiras possveis para a criao de uma macro:


Gravador de Macros Destinado a iniciantes em criao
de Macros.
Cdigo VBA Destinado a profissionais que possuem uma
boa lgica de programao e que dominam a linguagem
VBA.
GRAVADOR DE MACROS X CDIGO VBA

No mtodo de gravao, o Excel grava cada uma das aes que


faro parte da macro e transforma estas aes nos comandos VBA
equivalentes. Quando a macro for executada, os comandos VBA que
sero efetivamente executados. Cada comando VBA corresponde a uma
ao efetiva da macro.
Por exemplo, vamos supor que por diversas vezes, voc precisa
formatar uma determinada clula com Negrito, Itlico, cor de fonte Verde,
Fonte Arial com Tamanho 16. Ao invs de ter que executar todos os
comandos de formatao sempre que precisar deles, voc pode criar
uma macro que aplica todos os comando de formatao. Aps criada a
macro, cada vez que voc precisar aplicar o conjunto de comandos de
formatao, basta executar a macro, bem mais fcil do que aplicar cada
comando individualmente.
Antes de gravar uma macro, planeje muito bem as etapas e os
comandos que voc deseja que a macro execute. Se cometer um erro
durante a gravao da macro, as correes feitas tambm sero
gravadas como comandos da macro. Ao gravar macros, o VBA
armazena cada macro em um mdulo de cdigo VBA, anexado a uma
pasta de trabalho (arquivo. xls).
Depois de gravada a macro, voc poder exibir o cdigo da macro
com o Editor do VBA para corrigir erros ou alterar a funo da macro. O
Editor do VBA um programa criado para facilitar a escrita e a edio do
cdigo de macro para principiantes. Voc no precisa aprender a
programar ou a usar a linguagem do Visual Basic para fazer alteraes
simples nas suas macros. Nos prximos mdulos veremos como
trabalhar melhor com o Editor do VBA.
Na figura a seguir temos um exemplo de cdigo associado a uma
macro. Esse um exemplo de cdigo VBA:

Alm disso, no Editor do VBA, podemos editar macros, copiar


macros de um mdulo para o outro, copiar marcos entre pastas de
trabalho diferentes e renomear as macros. Por exemplo, se voc
quisesse que a macro formatar, da figura acima, tambm deixasse a
clula formatada com sublinhado, voc poderia gravar outra macro para
aplicar o sublinhado e copiar as instrues dessa nova macro para a
macro formatar.
CRIAR UMA MACRO USANDO O GRAVADOR DE MACROS

Iremos criar uma macro chamada FormataCelula usando o


gravador de macros, onde esta macro dever formatar a clula atual com
Negrito, cor de fonte Verde e com cor de plano de fundo cinza.
Para isso, proceda da seguinte maneira:
1. Abra o arquivo Exerccio 1.xls, localizado na pasta da
turma.
2. Clique a clula B5.
3. Clique o menu Ferramentas.
4. Selecione a opo Macros, clique a opo Gravar nova
macro...
Sugira assim a tela Gravar macro:

5. No campo Nome da macro, digite FormataCelula.


6. No campo Tecla de atalho, digite L.
Observe que o Excel troca para Ctrl+Shift+L, pois a
combinao Ctrl+L j esta associada a outro comando do
Excel.
7. No campo Descrio, digite Formata em
negrito, verde e fundo cinza.
8. Clique o boto OK.
Com isso, a gravao da macro ser iniciada e todos os comandos
que voc executar durante a gravao da macro, faro parte da macro.
Perceba que uma nova barra de ferramentas chamada Parar

Gravao surge, onde atravs dela podemos interromper a


gravao da macro.
A partir deste ponto, devemos executar todos os comandos que
faro parte da macro.
9. Clique o menu Formatar.
10. Clique a opo Clulas.
11. Formate em Negrito, cor Verde e cor de plano de fundo
cinza.
12. Clique o boto Parar Gravao , para encerrar a gravao
da macro.
Com isso, a macro FormataCelula foi criada e podemos
utiliz-la sempre que for necessrio.

Para executar a macro FormataCelula, proceda da seguinte


maneira:
1. Clique a prxima clula a ser formatada, exemplo C8.
2. Pressione Ctrl+Shift+L.
A macro FormataCelula executada e as informaes definidas
pela macro so automaticamente aplicadas a clula selecionada.
Uma outra maneira de executar macros utilizando o menu
Ferramentas, opo Macro, subopo Macros.
Com isso ser exibida a janela Macro, onde esto listadas as
macros existentes na pasta de trabalho atual, confirme visto na figura a
seguir:

Nesta tela, voc ir selecionar o nome da macro a ser executada e


clicar sobre o boto Executar.
A macro ser executada e as formataes sero aplicadas clula
que estava selecionada.
Sua planilha dever exibir o seguinte aspecto:
ESTRUTURA DE UMA MACRO

Na macro criada anteriormente chamada de FormataCelula,


podemos perceber que ao execut-la os comandos de formatao so
novamente executados e aplicados clula onde esta o cursor ou na
faixa de clulas selecionadas. Isto acontece porque no ato da gravao
da macro o Excel gera para cada comando que efetuamos um cdigo
VBA equivalente formando assim a nossa macro.
O que iremos ver agora justamente esta estrutura que compem
toda a nossa macro. Para acessar os comandos VBA associado a uma
macro, proceda da seguinte maneira:
1. Com o arquivo j aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a subopo Macros.
Com isso ser exibida a janela Macros.
3. Selecione a macro FormataCelula.
4. Clique o boto Editar.
Com isso o Editor do VBA ser carregado e sero exibidas as
linhas de cdigo referente a nossa macro.
Estes so os comandos VBA referentes a macro
FormataCelula. Caso no entenda os comandos, no se
preocupe, pois ainda os estudaremos mais adiante.

A seguir esta descrito o que faz cada um dos principais comandos


desta macro:

With Selection.Font E
.Name = "Arial" stes
.FontStyle = "Negrito" com
.Size = 10 and
.ColorIndex = 10 os
End With apli
cam
a fonte Arial, o estilo Negrito, o tamanho 10 e a cor de fonte verde, para
as clulas atualmente selecionadas.
E
With Selection.Interior stes
.ColorIndex = 48 com
.Pattern = xlSolid and
.PatternColorIndex = xlAutomatic os
End With apli
cam a cor de plano de fundo cinza, para as clulas atualmente
selecionadas.
5. Salve e feche o Editor do VBA.
OPERAES COM MACROS

Depois de criadas as macros podemos futuramente precisar realizar


algum de tipo de alterao nelas, seja em seu cdigo ou no comando de
teclado (tecla de atalho). Podemos precisar tambm renome-las e at
mesmo exclu-las caso seja necessrio. Todas estas aes esto ligadas
s operaes com macros.
RENOMEAR UMA MACRO

Esta ao deve ser realizada toda vez que se deseja modificar o


nome de uma ou mais macros do arquivo.
Para poder renomear uma macro, proceda da seguinte maneira:
1. Com o arquivo aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a sub-opo Macros.
Ser exibida a janela Macros
3. Clique a macro FormataCelula para selecion-la.
4. Clique o boto Editar.
Com isso, ser aberto o Editor do VBA com o cdigo da macro,
onde o nome da mesma vem aps o comando Sub na primeira linha.
5. Altere o nome da macro FormataCelula para Formatar.
6. Clique o boto Salvar.
7. Feche o Editor do VBA.
Com isso a macro foi renomeada, caso deseje
confirmar, clique o menu ferramentas, selecione a opo
macro e clique na sub-opo macros, voc ver na tela que a
macro agora se chama Formatar.
ALTERANDO A TECLA DE ATALHO E A DESCRIO ASSOCIADA
A MACRO

Esta ao deve ser realizada caso seja necessrio modificar por


algum motivo a tecla de atalho que esteja associada a uma macro e o
seu comentrio que de extrema importncia, pois resume o
funcionamento da macro.
Para fazer a alterao, proceda da seguinte maneira:
1. Com o arquivo aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a sub-opo Macros.
Ser exibida a janela Macros.

3. Clique a macro Formatar para selecion-la.


4. Clique o boto Opes.
Com isso, ser exibida a janela Opes de Macro.

Nesta tela podemos fazer a alterao da tecla de atalho e da


descrio atribudos macro.
5. Na Tecla de Atalho, digite: W.
6. Na Descrio, digite: Formatao em negrito, com cor
verde e plano de fundo na cor cinza.
7. Clique o boto OK.
Com isso a tecla de atalho e a descrio da macro
foram alteradas.

EXCLUIR UMA MACRO

Esta ao dever ser realizada quando no houver mais a


necessidade da utilizao da macro no arquivo.
Para isto, proceda da seguinte maneira:
1. Com o arquivo aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a sub-opo Macros.
3. Selecione a macro a ser excluda, no nosso caso selecione
a macro Formatar.
4. Clique o boto Excluir.
Com isso ir surgir uma caixa de mensagem para confirmar a
excluso da macro.

5. Clique o boto Sim.


IMPORTANTE! Caso a macro esteja associada a
algum controle de formulrio, por exemplo, um boto, a
simples excluso do boto NO EXCLUI A MACRO
associado a este.
Com isso a macro Formatar foi excluda do arquivo.

ASSOCIANDO MACROS A CONTROLES DE


FORMULRIOS

A associao de uma macro a um controle de formulrio deve ser


feita sempre que se deseja executar uma macro de uma forma mais
simples e rpida, onde ao invs de irmos no menu Ferramentas, opo
Macro, sub-opo Macros, selecionar a macro desejada e clicar o boto
executar, podemos apenas clicar sobre um boto e a macro associada a
ele automaticamente executada. Esta associao importante
principalmente quando a sua planilha for usada por usurios leigos em
Excel, facilitando assim os seus trabalhos.
Para testar este recurso, iremos criar uma nova macro com o nome
de Classificar, cuja tarefa ser de classificar a tabela pelo campo Cdigo
em ordem crescente, depois inserir um boto na planilha e associ-lo a
macro classificar.
Para isso, proceda da seguinte maneira:
1. Abra o arquivo Exerccio 2.xls, localizado na pasta da
turma.
2. Clique o menu Ferramentas.
3. Clique a opo Macro, clique a sub-opo Gravar nova
macro.
Surgir assim tela Gravar macro.
4. Em Nome da macro, digite Classificar.
5. Clique o boto OK.
Aparecer ento, a barra de ferramentas Parar Gravao.
6. Selecione a linha de cabealho da tabela correspondente ao
intervalo de clulas A1:F1.
7. Pressione as teclas SHIFT + END + , com isso toda a
tabela dever ser selecionada.
8. Classifique a tabela pelo campo Cdigo em ordem
crescente.
9. Clique a clula A1.
10. Clique o boto Parar Gravao.
ASSOCIAR A MACRO AO BOTO

1. Clique o menu Exibir.


2. Clique a opo Barra de Ferramentas.
3. Clique a sub-opo Formulrios.
Com isso, aparecer a barra de ferramentas Controle de
Formulrios.

4. Insira na planilha o controle chamado Boto.


Com isso, surgir tela Atribuir Macro.

5. Clique a macro classificar para selecion-la.


6. Clique o boto OK.
Pronto! Com isso a macro Classificar encontra-se associada
ao boto, onde um simples clique sobre este, implicar na
execuo das instrues que compem a macro.
MDULO 2 - INTRODUO AO VBA NO EXCEL
Uma linguagem de programao, basicamente, uma forma que o
programador tem de se comunicar com a mquina, atravs de um
conjunto de comandos, rotinas, objetos e funes que executam tarefas
especficas.
Utilizar-se do cdigo VBA para a criao das macros, oferece ao
programador uma grande quantidade de opes para solucionar
problemas mais complexos e que no podem ser somente resolvidos
com o uso de comandos e funes internas do Excel.
A linguagem de programao utilizada no Microsoft Excel o VBA
Visual Basic for Applications. Com o VBA possvel que o
programador tenha acesso completo a todos os objetos de uma planilha
do Excel.
Fazer uso do VBA em planilhas do Excel, garante ao programador
algumas vantagens como:
Acessar dados de uma ou mais planilhas;
Manipular objetos;
Criar funes definidas pelo usurio, onde este sem
dvida um dos maiores benefcios do VBA.
Definir condies e controlar o fluxo de dados atravs de
estruturas para a realizao de testes condicionais e para a
repetio de um conjunto de comandos;
Realizar clculos complexos e solucionar problemas que
envolvam uma lgica complexa.
O AMBIENTE DE PROGRAMAO (EDITOR VBA)

O Microsoft Excel nos oferece um ambiente de programao


bastante poderoso, com uma srie de recursos que facilitam a criao do
cdigo VBA. Dentro deste ambiente, so oferecidas uma srie de
facilidades e dicas para que o programador possa encontrar facilmente
os objetos disponveis.
Para conhecermos melhor o Editor VBA temos na figura abaixo um
exemplo de uma macro chamada AplicaNegrito.

PROJETO VBA PROJECT E JANELA DE PROPRIEDADES

Dentro do Editor VBA no lado esquerdo, temos duas janelas que


so de extrema importncia, a janela do projeto o VBA Project e a
Janela de Propriedades.
VBA Project Nesta janela so exibidos os vrios elementos que
fazem parte da Pasta de trabalho atual, onde so exibidas as planilhas e
mdulos.
Ao criar uma macro, podemos cria-la em uma determinada planilha,
mas esta somente poder ser utilizada dentro da planilha onde ela foi
criada, caso deseje criar uma macro que possa ser trabalha em qualquer
uma das planilhas do arquivo, esta dever ser criada em um dos
mdulos existentes.
Podemos dentro de uma pasta de trabalho possuir diversos
mdulos, principalmente quando se tem planilhas complexas, da
podemos dividir estes mdulos em categorias como, por exemplo: criar
um mdulo somente para a criao de funes para clculo de data,
outro para funes de validao de dados, outro para funes de
clculos financeiros e assim por diante. Esta diviso facilita a localizao,
manuteno e alterao das funes e cdigos existentes.
Janela de Propriedades Exibe as propriedades do objeto
selecionado na janela VBA Project.
Por exemplo, ao selecionar Plan1, na janela VBA Project, na janela
propriedades sero exibidas as propriedades de Plan1.

PESQUISADOR DE OBJETO

O Editor do VBA facilita muito o trabalho do programador na


manipulao de um objeto pois possui uma janela que exibe uma
listagem de todas as bibliotecas disponveis, bem como a lista de cada
objeto de cada biblioteca, juntamente com todas as suas propriedades e
mtodos, esta janela chamada de Pesquisador de Objeto.
Para exibi-la proceda da seguinte maneira:
1. Dentro do Editor VBA, clique o menu Exibir.
2. Clique a opo Pesquisador de Objeto.
Com isso, ir surgir a janela do Pesquisador de Objeto.

Na lista Todas as Bibliotecas, podemos selecionar uma biblioteca


especfica, para que o pesquisador mostre somente os objetos da
biblioteca selecionada.
Por exemplo, selecione a biblioteca Excel, na lista de objetos do
lado esquerdo selecione o objeto Range, com isso do lado direito do
painel ser exibida uma lista com os mtodos e propriedades do objeto
Range.
Alm do Pesquisador de Objeto, o Excel oferece um outro recurso
para localizar um mtodo ou propriedade de um objeto, este recurso se
d no momento da digitao do cdigo onde aps digitar o nome do
objeto sucedido de um ponto, surgir automaticamente uma lista com
estes mtodos e propriedades.

Pronto! Com isso aprendemos algumas noes bsicas sobre


o Editor do VBA.
MDULO 3 VARIVEIS
Uma varivel um espao criado na memria do computador
durante a execuo de um programa, utilizado para armazenar um ou
mais valores. Estes espaos so referenciados pelo programador atravs
da atribuio de nomes, ou seja, atribumos nomes as variveis utilizadas
no programa.
Elas possuem esta nomenclatura, pelo fato de poder ter o seu
contedo modificado durante a execuo do programa, da o nome
Variveis.
O programador antes de utilizar a varivel dentro do cdigo, deve
primeiramente declar-la, ou seja, nas linhas iniciais do cdigo deve-se
definir o nome de todas as variveis que sero utilizadas, bem como o
contedo que ser armazenado nesta, a esta definio damos o nome de
Tipos de Dados.
Tipos de Dados basicamente determinar para o programa qual o
tipo do contedo que a varivel ir armazenar, por exemplo: podemos
definir que uma varivel ir armazenar somente valores inteiros numa
faixa de 0 a 250, ou podemos tambm definir que a varivel ir
armazenar caracteres de texto de tamanho varivel ou ainda definir que
a varivel poder armazenar nmeros com casas decimais. Esta
definio do tipo de dados da varivel extremamente importante, pois
economizamos espao na memria do computador.
Esta economia de espao na memria atravs da definio do tipo
de dados mais adequado para uma varivel se da pelo fato de que cada
tipo de dados ocupa um determinado espao em memria, por exemplo:
uma varivel do tipo de dados que armazena nmeros inteiros ocupa na
memria menos espao que uma varivel do tipo de dados que
armazena caracteres de texto.
No VBA, no obrigatrio declarao de variveis. Porm
recomendvel que as declaremos, para a economia de espao
mencionada anteriormente e tambm para que o cdigo fique mais claro
e de fcil compreenso.
DECLARAO DE VARIVEIS

Para a declarao de uma varivel devemos sempre utilizar o


comando Dim, que vem do termo Dimenso, seguido do nome da
varivel, conforme exemplo:
Dim x
Dim nome
Dim idade
Neste exemplo, estamos apenas declarando o nome da varivel,
sem declarar de que tipo (texto, nmero inteiro, data, decimal, etc.) a
varivel. Deste modo a sintaxe completa de declarao de variveis a
seguinte:
Dim nome_da_varivel As tipo_da_varivel
Podemos tambm em um nico comando Dim, declarar mais que
uma varivel, sendo estas do mesmo tipo de dados, por exemplo:
Dim idade, quantidade As tipo_da_varivel
Dim nome, produto, codigo As tipo_da_varivel.
OPTION EXPLICIT

Embora a declarao de variveis seja importante, tambm


podemos utilizar variveis que no foram, explicitamente, declaradas
com o comando Dim. Com isso, a varivel criada na memria, no
momento da sua utilizao. Mas se desejar que toda varivel tenha que
estar declarada para poder ser utilizada, basta utilizar o comando Option
Explicit na seo de declarao do mdulo.
Ao definirmos este comando na seo de declarao do mdulo,
estamos definindo que toda varivel deve ser declarada, antes de ser
utilizada. Caso se utilize de uma varivel no declarada, ser gerado um
erro de compilao e a execuo dos comandos interrompida.
Abaixo temos um exemplo de variveis no explicitamente
declaradas:
Dim num1, num2 As tipo_da_varivel
Soma = num1 + num2
Ao tentarmos executar este cdigo, estando definido o comando
Option Explicit, iremos obter uma mensagem de erro, pois utilizamos a
varivel soma que no foi declarada, conforme a figura abaixo:

TIPOS DE VARIVEIS

O tipo de uma varivel serve para determinar na memria o espao


que ser alocado para armazenar uma informao.
O tipo de varivel padro do VBA o tipo Variant, que formado
por pequenas unidades, chamadas de subtipos, onde cada subtipo
identifica de que maneira os dados sero armazenados em uma varivel
do tipo Variant.
No indicado utilizar-se de variveis com o tipo Variant,
pois da ser difcil restringir ao usurio o tipo da informao
que ser armazenada, exemplo: Desejo que o usurio digite
apenas nmeros inteiros. Caso a varivel que receber este
nmero tenha sido declara com o tipo Variant, o usurio poder ento
digitar qualquer outra informao que no seja um nmero inteiro.
SUBTIPOS DO TIPO VARIANT

Subtipo Significado Tamanho


Valor zero para variveis numricas ou
Empty String de tamanho (), para variveis -
de texto.
Variveis que s podem assumir dois
Boolean valores: Verdadeiro ou Falso (True or 2 Bytes
False).
Byte Valor Inteiro, na faixa de 0 a 255. 1 Byte
Valor Inteiro, na faixa de -32768 a
Integer 2 Bytes
32767.
Valor real na faixa de -
Currency 923.337.203.685.447,5808 at 8 Bytes
923.337.203.685.447,5807.

Valor real na faixa de


Double 1.79769313486232E308 at 8 Bytes
4.94065645841247E-324.
Valor Inteiro, na faixa de -
Long 4 Bytes
2.147.483.648 at 2.147.483.647.
Nmero que representa a data entre
Date
01 de janeiro do ano 100, at 31 de 8 Bytes
(Time)
dezembro de 9999.
Texto de tamanho varivel, pode
1 Byte por
String conter, aproximadamente, 2 bilhes de
caractere
caracteres.
Pode conter um objeto qualquer, como
Object 4 Bytes
Controle ActiveX.
OPERADORES ARITMTICOS

Para podermos realizar clculos entre as variveis, devemos utilizar


operadores.
Abaixo segue uma tabela com os operadores aritmticos
disponveis:

Operador Smbolo Descrio


Adio + Soma o valor das variveis.
Subtrao - Subtrai o valor das variveis.
Multiplicao * Multiplica o valor das variveis.
Diviso / Divide o valor das variveis.
Inteiro da
Parte inteira da diviso das
diviso entre 2 \
variveis.
nmeros
Exponenciao x^y nmero x elevado a potncia
^
y.
Mdulo Mod Resto da diviso de 2 nmeros.
OPERADOR DE ATRIBUIO

Quando pretendemos atribuir valores as variveis, devemos indicar


o nome da varivel, seguido do operador (=) e o valor a ser armazenado
na varivel.
Como exemplo observe o cdigo a seguir:
Nome = Fbio Abreu
Qtd = 86
No cdigo acima a varivel Nome esta armazenando o texto Fbio
Abreu e a varivel Qtd esta guardando o nmero 86.
OPERADORES RELACIONAIS

Para podermos estabelecer relaes entre as variveis, devemos


utilizar operadores.
Abaixo segue uma tabela com os operadores relacionais
disponveis:

Operador Smbolo
Maior >
Menor <
Maior ou Igual >=
Menor ou Igual <=
Diferente <>
Igual =
EXERCCIO 1

Para utilizarmos os conceitos vistos at aqui, proceda da seguinte


maneira:
1. Abra o arquivo Exerccio 3.xls, localizado na pasta da
turma.
2. Abra o Editor do VBA.
3. Abra o mdulo chamado Mdulo1.
Com isso, ir aparecer uma macro chamada calcular.

Dentro desta macro, digite o seguinte cdigo:


4. Depois de digitado o cdigo aperte a tecla de atalho F5, para
executar a macro.
Ser exibida uma caixa de mensagem:

5. Clique em OK.
Ser exibida uma caixa de mensagem:

6. Clique em OK.
Ser exibida uma caixa de mensagem:

7. Clique em OK.
Ser exibida uma caixa de mensagem:
8. Clique em OK.
Ser exibida uma caixa de mensagem:

9. Clique em OK.
Ser exibida uma caixa de mensagem:

10. Clique em OK.


Ser exibida uma caixa de mensagem:

Neste exerccio, utilizamos operadores aritmticos para realizar


operaes com os valores das variveis num1 e num2.
Alm disso, fizemos uso de uma funo chamada Msgbox, que
exibe mensagens em uma pequena janela, chamada de Pop-Up e
utilizamos tambm o operador de concatenao (&).
VARIVEIS - ARRAYS

Uma varivel que representa um conjunto de variveis do mesmo


tipo.
Um array pode ser unidimensional ou bidimensional.
ARRAY UNIDIMENSIONAL

Constitudo por uma nica lista de elementos indexveis, onde


possumos um elemento inicial e outro elemento final, sendo que cada
elemento da lista corresponde a um nico ndice.
0
1
2
3
4
5
ARRAY BIDIMENSIONAL

Um pouco mais complexo que o unidimensional, constitudo por


um conjunto de listas do mesmo comprimento, sendo que este formato
normalmente conhecido como array ou matriz.
Constitudo, portanto de linhas e colunas, onde cada elemento
identificado por um ndice composto pela interseo dos nmeros das
linhas e colunas.
0 1 2
0
1
2
3
Note que o primeiro elemento de qualquer array sempre
possu ndice 0.
DECLARAO DE ARRAYS

A declarao de um array semelhante a declarao de uma


varivel comum, com exceo de um ndice que identifica quantas linhas
e colunas este array deve possuir.
Em um array unidimensional, como temos apenas uma nica lista
correspondente a quantidade de elementos que a varivel deve
armazenar a sintaxe se d da seguinte maneira:
Dim nome_array (ndice) As tipo_da_varivel
Onde, ndice representa o nmero de elementos que faro parte do
array, exemplo:
Dim ArrayNumerico(10) As Integer
Na declarao do array anterior, estamos declarando que o array
ter 10 posies ou 10 elementos, do mesmo tipo Integer.
Com isso, ao invs de declararmos 10 variveis, temos apenas
uma, tornando assim o cdigo mais legvel e simples.
ArrayNumerico
0
1
2
3
4
5
6
7
8
9

Em que cada elemento do tipo Integer.


J em um array bidimensional, como a varivel composta por
diversas listas correspondente a quantidade de elementos que esta deve
armazenar a sintaxe se d da seguinte maneira:
Dim nome_array (ndice) As tipo_da_varivel
Onde, ndice representa o nmero de linhas e colunas que faro
parte do array, exemplo:
Dim TabelaTextual (5, 4 ) As String
Na declarao do array anterior, estamos declarando que o array
ter 5 linhas e 4 colunas, podendo assim armazenar 20 elementos, do
mesmo tipo String.
Com isso, ao invs de declararmos 20 variveis, temos apenas
uma, tornando assim o cdigo mais legvel e simples.
TabelaTextual
0 1 2 3
0
1
2
3
4
Em que cada elemento do tipo String.
EXERCCIO 1

1. Abra o arquivo Exerccio 4.xls localizado na pasta da turma.


2. Abra o Editor do VBA.
3. Abra o mdulo chamado Mdulo1.
Com isso, ir aparecer uma macro chamada arrayuni.

Dentro desta macro, digite o seguinte cdigo:


4. Depois de digitado o cdigo aperte a tecla de atalho F5, para
executar a macro.
Ser exibida uma caixa de mensagem:

5. Clique em OK.
Ser exibida uma caixa de mensagem:

6. Clique em OK.
Ser exibida uma caixa de mensagem:

7. Clique em OK.
Ser exibida uma caixa de mensagem:
Neste exerccio, utilizamos um array unidimensional de 4
elementos para armazenar nomes dos alunos e mostra-los na tela
atravs da funo msgbox.
EXERCCIO 1

1. Abra o arquivo Exerccio 4.xls localizado na pasta da turma.


2. Abra o Editor do VBA.
3. Abra o mdulo chamado Mdulo2.
Com isso, ir aparecer uma macro chamada arraybi.
Dentro desta macro, digite o seguinte cdigo:

4. Depois de digitado o cdigo aperte a tecla de atalho F5, para


executar a macro.
Ser exibida uma caixa de mensagem:

5. Clique em OK.
Ser exibida uma caixa de mensagem:
Neste exerccio, utilizamos um array bidimensional com 2 linhas e
2 colunas totalizando assim 4 elementos para armazenar nomes e
mdias dos alunos e mostra-los na tela atravs da funo msgbox.
Alm disso, fizemos uso no cdigo de uma funo chamada
Chr(nmero). Esta funo envia como resultado para a funo msgbox o
caractere correspondente ao nmero digitado entre parnteses. Este
nmero, o nmero do caractere no padro ASCll (American Standard
Caracter Interchange Information).
No cdigo ASCII, cada caractere possui um nmero associado, no
caso do nmero 13, este se encontra associado ao <ENTER>, o que
equivale a uma troca de linha. Assim utilizamos o Chr(13) para simular
um <ENTER>, de tal maneira que os dados no apaream todos
grudados na mesma linha.
ESCOPO OU DOMNIO DAS VARIVEIS

O Escopo ou domnio de uma varivel define a rea de aplicao na


qual a varivel pode ser utilizada, ou seja, em qual rea ela pode ser
acessada.
Existem 3 nveis de escopo para as variveis:
Escopo de Procedimento/Funo
Escopo de Mdulo
Escopo de Projeto
ESCOPO DE PROCEDIMENTO/FUNO

uma varivel que foi inicialmente declarada dentro de um


procedimento ou funo, sendo que esta varivel somente pode ser
utilizada dentro deste procedimento ou funo. So variveis criadas no
momento da execuo do procedimento ou funo e destrudas
automaticamente ao trmino da execuo do procedimento ou funo.
Assim sendo, qualquer tentativa de se acessar uma varivel dentro de
um procedimento que foi declarada no corpo de um outro procedimento,
esta no ter xito.
Para melhor entendermos a utilizao das variveis com escopo de
procedimento/funo, proceda da seguinte maneira:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

4. Execute a sub-rotina proc1.


Com isso ir surgir uma caixa de mensagem com o valor da varivel
var.

5. Clique o boto OK.


Em seguida, surgir uma nova caixa de mensagem em branco.
Neste exemplo, dentro do procedimento proc1, declaramos uma
varivel do tipo Integer chamada var, e atribumos a ela o valor 5. Logo
em seguida mostramos o valor desta varivel na tela usando a funo
msgbox. Depois, ainda no procedimento proc1, chamamos o
procedimento proc2 que tambm mostra o valor da varivel var1 na tela
atravs da funo msgbox, mas perceba que na segunda caixa de
mensagem o valor da varivel no aparece, ou seja, a varivel no
contm valor. Isso acontece pelo fato da varivel esta declarada dentro
do procedimento proc1.
ESCOPO DE MDULO

uma varivel que foi inicialmente declarada na seo de


declaraes do mdulo, fora de qualquer procedimento. Com isso a
varivel pode ser utilizada dentro de todos os procedimentos e funes
existentes dentro do mdulo.
Para melhor entendermos a utilizao das variveis com escopo de
mdulo, proceda da seguinte maneira:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:
4. Execute a sub-rotina proc1.
Com isso ir surgir uma caixa de mensagem com o valor da varivel
var.

5. Clique o boto OK.


Em seguida, surgir uma nova caixa de mensagem novamente com
o valor da varivel var.
Neste exemplo, dentro seo de declarao do mdulo, declaramos
uma varivel do tipo Integer chamada var. Dentro do procedimento
proc1 atribumos a varivel o valor 5. Logo em seguida mostramos o
valor desta varivel na tela usando a funo msgbox. Depois, ainda no
procedimento proc1, chamamos o procedimento proc2 que tambm
mostra o valor da varivel var1 na tela atravs da funo msgbox.
Perceba com isso que tanto no proc1 quanto no proc2, conseguimos ter
acesso ao valor da varivel var, justamente pelo fato de esta ser de
escopo modular.
ESCOPO DE PROJETO

uma varivel que foi inicialmente declarada na seo de


declaraes do mdulo, fora de qualquer procedimento, muito parecido
com a declarao das variveis de escopo modular com a diferena que
antes do nome da varivel deve-se utilizar a palavra chave Public. Com
isso a varivel pode ser utilizada dentro de qualquer mdulo da pasta de
trabalho, ou seja, do projeto.
Para melhor entendermos a utilizao das variveis com escopo de
projeto, proceda da seguinte maneira:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Em seguida, insira um novo mdulo, digitando o seguinte cdigo:


5. Retorne ao mdulo anterior e execute o procedimento proc1.
Com isso ir surgir uma caixa de mensagem com o valor da varivel
var.

6. Clique o boto OK.


Em seguida, surgir uma nova caixa de mensagem com o novo
valor da varivel var.

Pronto! Com isso aprendemos sobre a declarao, utilizao e


escopo de variveis.
MDULO 4 SUB-ROTINAS E FUNES
Como visto em mdulos anteriores, quando se grava uma macro no
Excel, este tem um comportamento em background que realiza a
respectiva codificao para Visual Basic for Applications, onde cada
macro criada d origem a um procedimento ou rotina.
Existem dois tipos de rotinas:
1. Sub-rotinas ou rotinas Sub.
2. Funes.
SUB-ROTINAS

Um grupo de comandos que podem ser executados, atravs da


chamada do nome da sub-rotina, cuja definio delimitada pelas
palavras-chave Sub e End Sub.
As sub-rotinas podem possuir ou no argumentos, que so valores
passados para a sub-rotina, os quais sero utilizados internamente para
a realizao de clculos, por exemplo, se voc vai criar um sub-rotina
para clculo do desconto do cliente com base no seu valor de compra,
voc poderia definir um argumento para esta sub-rotina que ir inform-la
o salrio do cliente.
Para criao de uma sub-rotina, devemos seguir a seguinte sintaxe:
Sub <nome_da_sub-rotina> (<lista_de_argumentos>)
<bloco_de_comandos>
End Sub
Na <lista_de_argumentos>, cada argumento que
compor esta sub-rotina, deve estar associado a um tipo de
dados, caso essa informao seja omitida, ser considerado
o tipo default para o argumento, no caso Variant.
As sub-rotinas so designadas pelo nome que lhe atribumos, onde
este nome pode ser qualquer, desde que no contenham espaos, nem
comecem por caracteres numricos.
Como visto anteriormente, as sub-rotinas podem ou no conter
argumentos. Caso sejam necessrios, estes devem ser passados
quando a sub-rotina for chamada e devem estar na mesma ordem em
que foram definidos.
Para ter a noo do que so parmetros lembre-se do
funcionamento das funes do Excel, que para executarem
determinada funo necessitam de receber parmetros que
colocamos entre parnteses separados por vrgulas.
Quando criar sub-rotinas, procure utilizar nomes que
descrevem a funo da sub-rotina. Com isso tornamos o
cdigo mais fcil de ser entendido.

Uma vez criada a sub-rotina, sempre que fomos cham-la dentro de


um cdigo, devemos digitar o nome da sub-rotina precedido da palavra
Call.
Para melhor entendermos o funcionamento de uma sub-rotina,
vamos ao um exemplo prtico:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute o procedimento proc1.
Com isso, surgir na tela a seguinte caixa de mensagem:

No exemplo anterior, temos dois procedimentos, o primeiro


chamado de proc1, onde temos duas variveis declaradas. Em seguida,
atribumos valores a estas variveis e as passamos como argumentos
para o procedimento concatena, que esta declarada logo abaixo. No
procedimento concatena, pegamos os valores das duas variveis e
mostramos na tela usando a funo msgbox,
EXERCICIO

1. Em uma nova pasta de trabalho, abra o Editor do VBA e


crie dois procedimentos:
Calcula_Desc: Este procedimento dever receber como parmetro,
duas variveis do tipo Currency chamadas respectivamente de Salario
e Desconto. Dentro do procedimento devera ser declarada uma varivel
local do tipo Currency chamada Sal_Final, esta varivel devera receber
o valor do salrio com desconto. Em seguida o valor da varivel
Sal_final deve ser mostrado na tela.
Proc1: Neste procedimento deve-se declarar duas variveis locais
do tipo Currency chamadas respectivamente de Salario e Desconto.
Em seguida, atribua um valor qualquer a varivel Salario, exemplo
(2000), e outro valor a varivel Desconto, exemplo (0.1) e passe estas
duas variveis como parmetro para a funo Calcula_Desc.
2. Por fim execute a funo Proc1.
Com isso dever ser exibida na tela uma caixa de
mensagem informando o salrio j descontado.

FUNES

Um grupo de comandos que podem ser executados, atravs da


chamada do nome da funo, cuja definio delimitada pelas palavras-
chave Function e End Function.
Toda funo identificada pelo nome, pelo nmero e tipo de
parmetros recebidos, e tem como objetivo executar um conjunto de
instrues e produzir um valor final. Isto , toda vez que se executar uma
funo, esta sempre produzir um valor. Recorde-se como exemplo a
funo SUM, esta recebe por parmetro um conjunto de valores que se
pretende somar e sabe-se que o resultado da aplicao dessa funo ao
conjunto de valores ser o respectivo somatrio.
As funes podem ou no conter argumentos. Caso sejam
necessrios, estes devem ser passados quando a funo for chamada e
devem estar na mesma ordem em que foram definidos.
Para definir o valor produzido por uma funo basta no seu interior,
atribuir ao nome da funo um determinado valor ou expresso.
Quando criar funes, procure utilizar nomes que
descrevem a funo da sub-rotina. Com isso tornamos o
cdigo mais fcil de ser entendido.

CUIDADO! No confundir Sub-rotina com funo.


Apesar de suas sintaxes serem parecidas, uma funo
sempre retorna um ou mais valores para o comando que a
chamou.
Para criao de uma funo, devemos seguir a seguinte sintaxe:
Sub <nome_da_funo> (<lista_de_argumentos>) As <Tipo>
<bloco_de_comandos>
End Function
Observe que alm da <lista_de_argumentos>, onde
cada argumento que compor esta funo deve estar
associado a um tipo de dados, temos tambm um <tipo>.
Este <tipo> esta associado funo e serve para especificar
o tipo de dados que a funo ir retornar, caso esteja omitido, ser
considerado o tipo default, no caso Variant.
Considere o exemplo a seguir:

No exemplo anterior, declaramos uma funo chamada


converte_dolar, que espera receber dois argumentos do tipo Currency
(valor_real, cotao_dolar) e definimos tambm que a funo ir
retornar um valor do mesmo tipo Currency.
No momento em que formos chamar esta funo em algum cdigo,
devemos utilizar o operador de atribuio, isto , o valor que a funo ir
retornar, deve ser atribudo a uma varivel, ou exibido na tela atravs da
funo msgbox.
No prximo exemplo, estamos atribuindo a varivel valor_dolar, o
valor retornado pela funo converte_dolar.

Ao invs de atribuir o valor de retorno da funo a uma varivel,


poderamos exibi-lo na tela usando a funo msgbox.

Para melhor entendermos o funcionamento de uma funo, vamos


ao um exemplo prtico:
1. Abra o arquivo Exerccio 6.xls localizado na pasta da turma.

2. Abra o Editor do VBA.


3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

4. Salve e feche o Editor do VBA.


Com isso, sua funo j esta pronta. Vamos agora
test-la em uma clula dentro do Excel.

EXECUTANDO A FUNO CRIADA, NO EXCEL

Para utilizar a funo criada no VBA, dentro de uma clula em uma


das planilhas do Excel, proceda da seguinte maneira:
1. Selecione a clula D4.
2. Clique o menu Inserir.
3. Clique a sub-opo Funo.
Com isso, surgir janela Inserir Funo.

4. Selecione a categoria Definida pelo usurio.


5. Selecione o nome da funo calcula_desconto.
6. Clique o boto OK.
Com isso, surgir a tela Argumentos da funo.
7. No campo Salrio, digite B4.
8. No campo Desconto, digite C4.
9. Clique o boto OK.
10. Copie a frmula no intervalo de clulas D4:D10.
A planilha dever ser exibida conforme a figura abaixo.

MDULO 5 FUNES INTERNAS DO VBA


Neste mdulo apresentaremos algumas funes internas do VBA,
funes estas que sero de extrema importncia para a soluo de
algumas situaes que encontraremos mais adiante no curso, pois
diminuiro muito o tempo para solucionar tais problemas.
Para isto, dividiremos estas funes por categorias para melhor
entendimento.
FUNES DE TIPO

Aqui veremos algumas funes para determinar o tipo de dados de


uma varivel.
FUNO ISDATE
Esta funo recebe uma varivel como argumento e determina se
esta contm uma data vlida. Caso o argumento passado seja uma data
vlida, a funo retornar Verdadeiro, caso contrrio, retornar Falso.
A sintaxe desta funo a seguinte:
IsDate(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:
FUNO ISNUMERIC
Esta funo recebe uma varivel como argumento e determina se o
valor atribudo a ela um valor numrico. Caso o valor seja numrico, a
funo retornar Verdadeiro, caso contrrio, retornar Falso.
A sintaxe desta funo a seguinte:
IsNumeric(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

FUNES PARA TRATAMENTO DE TEXTO

Aqui veremos algumas funes para tratamento de texto, via


programao VBA.
FUNO LEN
Esta funo determina o tamanho da String que foi passada como
parmetro para a funo.
A sintaxe desta funo a seguinte:
Len(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir,


mostrando o nmero de caracteres existente na varivel.

Espaos em branco tambm contam para o tamanho da


string.

FUNO LCASE
Esta funo converte para minsculas, a string que foi passada
como parmetro para a funo.
A sintaxe desta funo a seguinte:
Lcase(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO UCASE
Esta funo converte para maisculas, a string que foi passada
como parmetro para a funo.
A sintaxe desta funo a seguinte:
Ucase(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.


FUNO MID
Esta funo retorna um nmero especificado de caracteres, a partir
de uma posio especificada dentro de uma string.Lembre-se que
espaos em branco tambm devem ser considerados.
A sintaxe desta funo a seguinte:
Mid(<string>, <pos_inicial>, <num_caract>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.


FUNO STRING
Esta funo retorna um determinado caractere, um nmero
especificado de vezes.
A sintaxe desta funo a seguinte:
String(<num_repet>, <caractere>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNES DE DATA E HORA

Aqui veremos algumas funes para tratamento de data e hora, via


programao VBA.
FUNO DATE
Esta funo retorna a data atual do sistema operacional. Esta
uma funo que no possui argumentos.
A sintaxe desta funo a seguinte:
Date()
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO TIME
Esta funo retorna a hora atual do sistema operacional. Esta
uma funo que no possui argumentos.
A sintaxe desta funo a seguinte:
Time()
Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO DAY
Esta funo retorna o dia do ms de uma determinada data
passada como parmetro.
A sintaxe desta funo a seguinte:
Day(<data>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.


FUNO MONTH
Esta funo retorna um nmero entre 1 e 12, indicando o ms de
uma determinada data passada como parmetro.
A sintaxe desta funo a seguinte:
Month(<data>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO YEAR
Esta funo retorna o ano de uma determinada data passada como
parmetro.
A sintaxe desta funo a seguinte:
Year(<data>)
Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO MONTHNAME
Esta funo recebe como parmetro um nmero, que indica o ms
do ano (1-Janeiro 2-Fevereiro...).
A sintaxe desta funo a seguinte:
MonthName(<Num_ms>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO HOUR
Esta funo recebe como parmetro uma hora e retorna um nmero
entre 0 e 23, indicando a hora atual.

A sintaxe desta funo a seguinte:


Hour(<hora>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

Ao clicar OK, uma nova caixa de mensagem surgir.

FUNO DATEDIFF
Esta funo utilizada para determinar um intervalo entre duas
datas, podendo este intervalo ser entre dias, trimestres, semestres, anos
e etc.
A sintaxe desta funo a seguinte:
DateDiff(<intervalo>,<data1>,<data2>)
O argumento <intervalo>, uma string que indica o tipo
de intervalo que iremos calcular. Para sabermos como
calcular um intervalo entre duas datas devemos conhecer a
tabela seguinte:

<Intervalo> Descrio

yyyy Anos

q Trimestres

m Meses

d Dias

w Semanas

h Horas

n Minutos

s Segundos

Abaixo, segue um exemplo que ilustra o uso desta funo:


Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO DATEADD
Esta funo utilizada para determinar uma data futura, com base
em uma data fornecida, o tipo de intervalo a ser acrescentado e o
nmero a ser acrescentado. Este intervalo pode ser entre dias,
trimestres, semestres, anos e etc.
A sintaxe desta funo a seguinte:
DateAdd (<intervalo>,<acrscimo>,<data>)
O argumento <acrscimo>, a ser acrescentado a
data para achar a nova data final.

O argumento <intervalo>, uma string que indica o tipo


de intervalo que iremos calcular. Para sabermos como
calcular um intervalo entre duas datas devemos conhecer a
tabela seguinte:

<Intervalo> Descrio

yyyy Anos

q Trimestres

m Meses

d Dias
w Semanas

h Horas

n Minutos

s Segundos

Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.


FUNO WEEKDAY
Esta funo utilizada para determinar o dia da semana
correspondente a uma data. Esta funo recebe como argumento uma
data e um valor opcional que indica o primeiro dia da semana, sendo que
se este valor for omitido, o primeiro dia da semana considerado ser
Domingo. O valor para indicar o primeiro dia da semana deve ser
definido assim: 1 Domingo, 2 Segunda e assim por diante.
A sintaxe desta funo a seguinte:
WeekDay (<data>,[<1_dia_semana>])
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.


FUNO WEEKDAYNAME
Esta funo utilizada para determinar o nome do dia da semana.
Esta funo recebe como argumento um nmero que indica o dia da
semana e outro argumento opcional que pode ser Verdadeiro ou Falso.
Se o segundo argumento for Verdadeiro, o nome do dia da semana ser
exibido abreviado. Caso seja omitido o valor Falso ser considerado por
padro.
A sintaxe desta funo a seguinte:
WeekDayName (<num_dia_semana>,[<abreviar>])
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.


OUTRAS FUNES TEIS

Aqui segue uma lista de algumas funes tambm importantes para


programao VBA.

Funo Descrio

Shell Roda um programa executvel.

Rnd Retornar um nmero aleatrio entre 0 e 1.

Sqr Retorna a raiz quadrada de um nmero.


EXERCCIO 1

1. Abra o arquivo, Exerccio 12.xls, localizado na pasta da


turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e digite o cdigo abaixo:

4. Execute o procedimento data.


Pronto! Com isso, ficamos conhecendo algumas
funes internas do VBA, que sero de extrema importncia
para a soluo de alguns problemas.

MDULO 6 TRATAMENTO DE ERROS


Nos cdigos podemos nos deparar com determinados erros a
depender de determinadas condies. Podemos nos deparar com um
erro de sintaxe, quando um comando do cdigo digitado
incorretamente, por exemplo, ao invs de uma vrgula, voc digita ponto
e vrgula.
Podemos encontrar tambm erros de lgica, erros estes mais
difceis de serem identificados, pelo fato do usurio ter falhado no teste
de alguma condio do cdigo.
Temos tambm os erros chamados de erros em tempo de
execuo, onde o erro somente ser identificado durante a execuo da
rotina, como por exemplo, tentamos acessar um aplicativo em um
diretrio onde este foi movido para outro local.
Por isso, devemos sempre utilizar o comando para tratamento de
possveis erros que podem acontecer durante a execuo do cdigo.
A sintaxe para utilizao deste comando a seguinte:
On Error Resume Next
Neste comando caso um erro seja encontrado o cdigo deslocado
para um bloco especifico onde ocorre o tratamento deste erro, logo em
seguida ao trmino deste tratamento, o cdigo retorna para a primeira
instruo aps a instruo que gerou o erro.
Se no usarmos a instruo On Error, ou seja, caso no faamos os
tratamentos dos possveis erros que venham a acontecer, qualquer erro
em tempo de execuo que ocorrer, ser fatal, isto , ser exibida uma
mensagem de erro e a execuo do procedimento ser encerrada.
Abaixo, segue um exemplo que ilustra o uso desta funo:
Neste exemplo, declaramos duas variveis do tipo Double, logo
em seguida definimos que em caso de erro, a execuo ser deslocada
para o bloco de comandos para tratamento do erro chamado trata_erro.
Logo aps foramos um erro, usando o nmero 0 (zero) como
denominador de uma diviso, na qual resultar em um erro, da ento a
execuo deslocada para o bloco do cdigo chamado trata_erro. L
uma caixa de mensagem surge informando que um erro foi encontrado.
Ao finalizar o tratamento do erro, a execuo do cdigo retorna para
a prxima instruo logo aps a instruo que gerou o erro, no caso uma
varivel x recebe o valor 10 (dez), que logo imprimido na tela. Isto
acontece, pois logo aps o tratamento do erro temos o Resume Next.
Com isso encontra-se o End Sub, finalizando assim a execuo do
cdigo.
Caso aps a instruo de tratamento do erro no tivssemos o
Resume Next, o tratamento seria feito e o cdigo seria imediatamente
encerrado, pois encontraria um End Sub.
EXERCCIO 1

1. Abra o arquivo, Exerccio 13.xls, localizado na pasta da


turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e digite o cdigo abaixo:

4. Execute o procedimento calc.


Neste procedimento temos declarado uma varivel RetVal, logo
aps definimos que em caso de erro a execuo ser deslocada para o
bloco de comandos chamado tratar_erro.
A depender do sistema operacional a primeira atribuio
a varivel RetVal pode ou no gerar um erro, na verdade
esta atribuio faz com que a varivel receba o caminho
onde encontra-se a calculadora e logo em seguida a execute.
Pronto! Com isso, ficamos conhecendo como tratar
possveis erros que venham a acontecer no cdigo.
MDULO 7 ESTRUTURAS DE CONTROLE
Alm da declarao de variveis e clculos bsicos, o VBA fornece
uma serie de comandos conhecidos como estruturas de controle. Estas
so utilizadas no cdigo para a realizao de testes, por exemplo,
verificar se o valor de uma varivel maior que x, se for, execute estes
comandos, caso contrrio execute outros comandos. Estes testes so
muito utilizados em programao, sendo praticamente impossvel no
utiliza-los no seu cdigo.

Controle VBA Objetivo

Testa uma condio e executa um


IF... Then determinado conjunto de instrues de
acordo com o resultado dessa avaliao.

Executa uma determinada tarefa um


For... Next
determinado nmero de vezes.

Executa uma tarefa, enquanto que a


Do... Loop avaliao de uma condio seja ou torne-se
verdadeira.
A ESTRUTURA IF... THEN

Uma das estruturas de controle mais conhecidas. Praticamente toda


linguagem de programao implementa esta estrutura, sendo utilizada
para executar determinados comandos, caso uma condio seja
verdadeira.
A sintaxe desta estrutura a seguinte:
If <condio> Then
<bloco_de_comandos>
End If
Neste caso a <condio> testada, caso esta seja verdadeira, o
<bloco_de_comandos> executado.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 7.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

4. Execute a rotina lgica.


Com isso, a depender do valor das variveis num1 e num2, uma
caixa de mensagem poder ou no surgir, definindo que o valor de num1
maior do que o de num2, logo em seguida ser exibido uma outra
caixa de mensagem informando o valor destas variveis.
Neste exemplo alm dos recursos j conhecidos,
fizemos uso da funo Rnd (), esta funo retorna como
resultado um nmero aleatrio. No nosso caso como fizemos
Rnd * 50, estamos solicitando um nmero aleatrio entre 0 e
50.
Utilizamos tambm a funo Int (), que retorna apenas a
parte inteira do valor obtido pela funo Rnd * 50.

A ESTRUTURA IF... THEN... ELSE

Esta estrutura de controle muito interessante, pois acrescenta a


estrutura IF... THEN mais uma possibilidade. Muito utilizada para
executar comandos, caso uma condio seja verdadeira, ou outros
comandos, caso a condio seja falsa.
A sintaxe desta estrutura a seguinte:
If <condio> Then
<bloco_de_comandos_1>
Else
<bloco_de_comandos_2>
End If
Neste caso a <condio> testada, caso esta seja verdadeira, o
<bloco_de_comandos_1> executado, seno o
<bloco_de_comandos_2> que ser executado.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 8.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

4. Execute a rotina pontuacao.


Com isso, a depender do valor da varivel pontos, uma caixa de
mensagem ir surgir, definindo se o valor de pontos esta acima ou
abaixo da mdia.
Logo em seguida ser mostrada uma nova caixa de mensagem que
conter o valor da varivel pontos.
A ESTRUTURA IF... THEN... ELSEIF

Esta estrutura nos da um maior poder, para testarmos diversas


possibilidades, isto , podemos fazer vrios testes e executar diferentes
comandos com base no resultado destes testes. Muito utilizada sempre
que necessitarmos realizar mais do que um teste lgico, onde em cada
novo teste, utilizamos o ElseIf.
A sintaxe desta estrutura a seguinte:
If <condio_1> Then
<bloco_de_comandos_1>
ElseIf <condio_2>
<bloco_de_comandos_2>
ElseIf <condio_3>
<bloco_de_comandos_3>
ElseIf <condio_n>
<bloco_de_comandos_n>
Else
<bloco_de_comandos_final>
End If
Neste caso a <condio_1> testada, caso esta seja verdadeira, o
<bloco_de_comandos_1> executado, seno a <condio_2> testada,
caso esta seja verdadeira, o <bloco_de_comandos_2> ser executado,
seno a <condio_3> testada, caso esta seja verdadeira, o
<bloco_de_comandos_3> ser executado, seno a <condio_n>
testada, caso seja verdadeira, o <bloco_de_comandos_n> ser
executado, seno o <bloco_de_comandos_final> que ser executado,
pois todas as condies falharam.
Somente um dos <bloco_de_comandos> que ser
executado. Onde uma condio sendo verdadeira, o
<bloco_de_comandos> associado a esta condio ser
executado, ao trmino a execuo segue para o End If, isto , as demais
condies da estrutura no sero testadas.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 9.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Execute a rotina idade.


Com isso, a depender do valor armazenado na varivel idade, uma
caixa de mensagem surgir informando a classe etria pertencente
idade. Ao trmino da estrutura If, aparecer uma outra caixa de
mensagem informando o valor da varivel idade.
Na instruo Elseif, sempre que uma condio for
avaliada como falsa, uma outra condio avaliada. Caso
todas as condies sejam falsas, a condio da instruo
Else, que ser executada. J se uma condio for avaliada
como verdadeira, as instrues pertencentes a esta condio
ser executada e a estrutura If, finalizada.
EXERCICIO 1

1. Criar um procedimento chamado Aposta.


1.1. No procedimento Aposta, declarar duas variveis inteiras
chamadas naposta e nsorteio.
1.2. Naposta recebe o valor 30.
Formatado: Fonte: No
1.3. Nsorteio recebe o resultado da funo Sorteio. Negrito

1.4. Comparar o valor de naposta com nsorteio, caso sejam


iguais, surgir uma mensagem informando que os nmeros so
iguais, seno, surgir uma mensagem informando que os
nmeros so diferentes.
2. Criar uma funo chamada Sorteio.
2.1. Esta funo dever retornar um nmero randmico inteiro
entre 0 e 50.
3. Execute o procedimento Aposta.
A ESTRUTURA FOR... NEXT

Um comando muito utilizado para repetir um determinado trecho do


cdigo um determinado nmero de vezes.
Utilizamos esta estrutura, quando j conhecemos o nmero de
vezes que devemos repetir determinado trecho de cdigo.
Nesta estrutura utiliza-se uma varivel como contador, onde este
varia de um valor inicial at um valor final.
A sintaxe desta estrutura a seguinte:
For contador = <valor_inicial> To <valor_final> [ Step
<incremento>]
<bloco_de_comandos>
Next
Nesta estrutura a varivel contador, tem seu valor inicial definido.
Em cada passagem do lao, o <bloco_de_comandos> ser executado
e esta varivel incrementada pelo valor definido em <incremento>,
sendo que se este <incremento> tiver sido omitido, o valor ser o
padro 1.
Assim todo o <bloco_de_comandos> vai sendo executado toda
vez que o lao for repetido at que o valor da varivel contador seja
igual ao <valor_final>.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 10.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute a rotina somanum.
Com isso, surgir uma caixa de mensagem informando o valor da
varivel soma.

Neste exemplo, a varivel i inicia com o valor 1 e em


cada passo, o valor de i somado com o valor existente na
varivel soma. Note tambm que neste exemplo o
incremento no foi definido, da o valor ser o padro 1. Com
isso, ao final de todos os laos do For... Next, a varivel soma, conter a
soma dos dez primeiros nmeros maiores que zero e este valor ser
mostrado em uma caixa de mensagem.
EXERCICIO

1. Crie um procedimento que mostre na tela, a soma dos


10 primeiros nmeros mpares.
A ESTRUTURA DO... LOOP

Esta estrutura deve ser utilizada para repetir um trecho do cdigo,


enquanto uma condio seja verdadeira, ou at que ela torne-se
verdadeira. Para isto, podemos utilizar dois operadores condicionais
diferentes: While ou Until.
Estes operadores podem ser utilizados de duas maneiras
diferentes: no inicio ou no final do lao. Com isso teremos quatro
situaes diferentes.
DO WHILE <condio>... LOOP
Neste mtodo, estamos utilizando o operador While no inicio do
lao. Para esta estrutura, devemos seguir a seguinte sintaxe:
Do While <condio>
<bloco_de_comandos>
Loop
Neste tipo de estrutura, enquanto <condio> for
verdadeira, o <bloco_de_comandos> ser executado, caso
esta seja falsa, o prximo comando aps o lao ser
executado. Caso <condio> seja falsa na primeira anlise,
o <bloco_de_comandos> no ser executado nenhuma vez.
CUIDADO! Dentro do lao do While, deve existir algum
cdigo capaz de alterar a condio para que esta se torne
falsa, em algum momento, pois caso contrrio a condio
sempre estar verdadeira e o <bloco_de_comandos>
dentro do lao ficar em execuo infinitamente ou at que o programa
trave. A criao de laos infinitos uma causa comum de erros e
travamentos.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 11.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Execute o procedimento soma.


Com isso, ir aparecer uma caixa de mensagem informando o valor
da varivel.

DO... LOOP WHILE <condio>


Nesta estrutura, temos a condio do teste no final do lao, com
isso, o cdigo dentro do lao ser executado pelo menos uma vez, pois a
condio somente ser testada no final do lao, voltando a ser
executado, caso a condio seja verdadeira.

Para esta estrutura, devemos seguir a seguinte sintaxe:


Do
<bloco_de_comandos>
Loop While <condio>
Neste tipo de estrutura, enquanto <condio> for
verdadeira, o <bloco_de_comandos> ser executado, caso
esta seja falsa, o prximo comando aps o lao ser
executado. Caso <condio> seja falsa na primeira anlise,
o <bloco_de_comandos> ser executado uma nica vez.
CUIDADO! Dentro do lao do While, deve existir algum
cdigo capaz de alterar a condio para que esta se torne
falsa, em algum momento, pois caso contrrio a condio
sempre estar verdadeira e o <bloco_de_comandos>
dentro do lao ficar em execuo infinitamente ou at que o programa
trave. A criao de laos infinitos uma causa comum de erros e
travamentos.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 11.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute o procedimento soma.
Com isso, ir surgir uma caixa de mensagem informando o valor da
varivel soma.

Neste exemplo, a condio contador <= x falsa logo


no primeiro teste, pois contador = 12 e x = 10. Neste caso o
lao ser executado uma nica vez, pois o teste da condio
encontra-se no final do lao.
DO UNTIL <condio>... LOOP
Nesta estrutura, estamos utilizando o operador condicional Until, no
nicio do lao.
Para esta estrutura, devemos seguir a seguinte sintaxe:
Do Until <condio>
<bloco_de_comandos>
Loop
Neste tipo de estrutura, enquanto <condio> for falsa,
o <bloco_de_comandos> ser executado, caso esta seja
verdadeira, o prximo comando aps o lao ser executado.
Caso <condio> seja verdadeira na primeira anlise, o
<bloco_de_comandos> no ser executado nenhuma vez.
CUIDADO! Dentro do lao do Until, deve existir algum
cdigo capaz de alterar a condio para que esta se torne
verdadeira, em algum momento, pois caso contrrio a
condio sempre estar falsa e o <bloco_de_comandos>
dentro do lao ficar em execuo infinitamente ou at que o programa
trave. A criao de laos infinitos uma causa comum de erros e
travamentos.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 11.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute o procedimento soma.
Com isso, ir aparecer uma caixa de mensagem informando o valor
da varivel.

DO... LOOP UNTIL <condio>


Nesta estrutura, temos a condio do teste no final do lao, com
isso, o cdigo dentro do lao ser executado pelo menos uma vez, pois a
condio somente ser testada no final do lao, voltando a ser
executado, caso a condio seja falsa.
Para esta estrutura, devemos seguir a seguinte sintaxe:
Do
<bloco_de_comandos>
Loop Until <condio>
Neste tipo de estrutura, enquanto <condio> for falsa,
o <bloco_de_comandos> ser executado, caso esta seja
verdadeira, o prximo comando aps o lao ser executado.
Caso <condio> seja verdadeira na primeira anlise, o
<bloco_de_comandos> ser executado uma nica vez.
CUIDADO! Dentro do lao do Until, deve existir algum
cdigo capaz de alterar a condio para que esta se torne
verdadeira, em algum momento, pois caso contrrio a
condio sempre estar falsa e o <bloco_de_comandos>
dentro do lao ficar em execuo infinitamente ou at que o programa
trave. A criao de laos infinitos uma causa comum de erros e
travamentos.
Para melhor entendermos o funcionamento desta estrutura, vamos
ao um exemplo prtico:
1. Abra o arquivo Exerccio 11.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Execute o procedimento soma.


Com isso, ir aparecer uma caixa de mensagem informando o valor
da varivel.

Neste exemplo, a condio contador >= x verdadeira


logo no primeiro teste, pois contador = 12 e x = 10. Neste
caso o lao ser executado uma nica vez, pois o teste da
condio encontra-se no final do lao.
EXERCICIO 1

1. Crie um procedimento chamado Loteria. Neste


procedimento uma varivel do tipo Integer, dever receber
um nmero randmico inteiro entre 0 e 15. Crie um lao de
repetio que compara o valor da varivel com o nmero 10,
caso sejam iguais, devemos mostrar na tela uma mensagem
informando que o nmero foi encontrado e informar tambm
o nmero de tentativas at localizar o nmero.

Pronto! Com isso, aprendemos a trabalhar com as


estruturas de controle, que nos sero muito teis na
resoluo de diversos problemas.
REVISO 1

1. Na pasta da turma, abra o arquivo chamado Reviso 1.xls,


abra o Editor do VBA e insira um novo mdulo. Dentro dele,
crie uma funo chamada de IRPF que dever calcular o
Imposto de renda pessoa fsica. Para isto a funo dever
receber como parmetro uma varivel do tipo Currency, que
ser base de clculo para o clculo do imposto. Esta
funo dever retornar o valor do imposto a ser pago. O
clculo a ser feito, dever seguir as condies da tabela
oficial para o clculo de imposto de renda no exerccio de
2008, conforme tabela a seguir:
Base de clculo anual Alquota Parcela a deduzir do imposto
em R$ % em R$
At 15.764,28 - -
De 15.764,29 at
15,0 2.364,60
31.501,44
Acima de 31.501,44 27,5 6.302,28
2. Depois de criada a funo IRPF, teste-a na planilha
chamada IRPF, para calcular o imposto de cada pessoa.
REVISO 2

1. Na pasta da turma, abra o arquivo chamado Reviso 1.xls,


abra o Editor do VBA e insira um novo mdulo. Dentro dele,
crie uma funo chamada de CPF que dever receber como
parmetro um valor de CPF no formato 111.111.111-11 ou a
referncia de uma clula que contm um CPF nesse
formato. A funo ir retornar a palavra Vlido se este for
vlido, caso contrrio retornar Invlido.
A seguir, temos um exemplo de como se calcular o dgito verificador
do CPF:
Considere o seguinte CPF (sem o DV): 333.444.555
Posio 1 2 3 4 5 6 7 8 9
Nmero 3 3 3 4 4 4 5 5 5
Deve-se multiplicar os dgitos do CPF, a partir da posio 9, ou
seja, de trs para a frente, por 2,3,4 e assim por diante, conforme a
tabela a seguir

Posio 1 2 3 4 5 6 7 8 9
Nmero 3 3 3 4 4 4 5 5 5
Multiplica 10 9 8 7 6 5 4 3 2
por:
Resultado 30 27 24 28 24 20 20 15 10
Depois, devemos somar os resultados obtidos na quarta linha da
tabela anterior:
Soma 1 = 30+27+24+28+24+20+20+15+10
Soma 1 = 198
Fao a diviso desta soma por 11 e verifico o resto da diviso:
Ex: 198/11 Resulta em uma diviso exata, com resto 0.
Agora, deve-se seguir a seguinte regra:
Quando o resto zero ou um, o DV zero
Quando o resto diferente de zero ou um, o DV obtido
fazendo-se: 11-resto.
Neste caso, como o resto foi zero, o primeiro DV zero:
DV1 = 0
Este primeiro dgito verificador (DV1) passa a fazer parte do CPF,
conforme a tabela a seguir:

Posio 1 2 3 4 5 6 7 8 9 10
Nmero 3 3 3 4 4 4 5 5 5 0
Agora, devemos repetir o mesmo processo feito anteriormente,
porm j considerando o DV1 como parte integrante do CPF, conforme
mostrado na tabela a seguir:

Posio 1 2 3 4 5 6 7 8 9 10
Nmero 3 3 3 4 4 4 5 5 5 0
Multiplica 11 10 9 8 7 6 5 4 3 2
por:
Resultado 33 30 27 32 28 24 25 20 15 0
Depois, devemos somar os resultados obtidos na quarta linha da
tabela anterior:
Soma 2 = 33+30+27+32+28+24+25+20+15+0
Soma 2 = 234
Fao a diviso desta soma por 11 e verifico o resto da diviso:
Ex: 234/11 Resulta em 21, com resto 3.
Agora, deve-se seguir a seguinte regra:
Quando o resto zero ou um, o DV zero
Quando o resto diferente de zero ou um, o DV obtido
fazendo-se: 11-resto.
Neste caso, como o resto foi 3, o segundo DV :
DV2 = 11-3
DV2 = 8
Com isso, temos o CPF com os dois dgitos verificadores:

Posio 1 2 3 4 5 6 7 8 9 10 11
Nmero 3 3 3 4 4 4 5 5 5 0 8
Ou seja: 33.444.555-08
2. Depois de criada a funo CPF, teste-a na planilha chamada
CPF, para verificar se cada cpf da lista vlido ou no.
REVISO 3

1. Na pasta da turma, abra o arquivo chamado Reviso 1.xls,


abra o Editor do VBA e insira um novo mdulo. Refazer
todo a reviso anterior utilizando Vetores.
2. Depois de criada a funo CPF, teste-a na planilha chamada
CPF, para verificar se cada cpf da lista vlido ou no.
MDULO 8 MSGBOX E INPUTBOX
Para haver interao entre o usurio e o programa, necessrio
que exista uma interface de comunicao. Para isto, temos dois
elementos bsicos para estabelecer esta ligao: o InputBox e o
MsgBox .
InputBox uma funo que permite ao usurio introduzir dados no
programa, ou seja, permite que o usurio passe determinadas
informaes que podem ser solicitadas pelo programa, portanto, trata-se
de um mecanismo de input.
J o MsgBox uma funo que permite ao usurio visualizar na
tela os dados produzidos pelo programa, portanto, trata-se de um
mecanismo output.
A FUNO MSGBOX

Em vrios problemas de mdulos anteriores, fizemos uso da funo


msgbox para exibir uma caixa de mensagem. Utilizamos de maneira
bsica, para poder exibir trechos de textos e valor de variveis.
A funo MsgBox, exibe uma caixa de mensagem e aguarda uma
resposta do usurio, atravs do clique em um boto, e retorna um valor
do tipo Integer, que indica o boto clicado pelo usurio.
Para uso desta funo, deve-se seguir a seguinte sintaxe:
MsgBox(prompt, [buttons], [title], [helpfile], [context])
Na tabela a seguir segue uma descrio sobre os argumentos da
funo:
Parmetro Comentrio
Prompt Texto a ser exibido como mensagem na janela de
(Obrigatrio) input. A dimenso mxima de 1024 caracteres.
Nmero que identifica o tipo de botes que se
Buttons
pretende visualizar na janela de output. Se for
(Opcional)
omitido assumir o valor 0 por defeito.
Title Titulo da janela de input. Se este for omitido,
(Opcional) aparecer por defeito o nome da aplicao.
Nome do arquivo de Help que ser utilizado para dar
HelpFile
apoio ao preenchimento desta janela. Se for
(Opcional)
indicado este parmetro o seguinte obrigatrio.
Nmero do ndice do tpico de Help constante no
Context
arquivo HelpFile, e que corresponde janela em
(Opcional)
questo.
Ateno! Se pretender utilizar mais que um parmetro
optativo respeite a ordem atravs do uso de vrgulas.

O argumento buttons, um valor numrico. Este pode ser


fornecido atravs do valor numrico ou atravs da utilizao de uma das
constantes que sero descritas na prxima tabela.
Constante Valor Descrio
VbOKOnly 0 Exibe somente o boto OK.
VbOKCancel 1 Exibe os botes OK e Cancel.
VbAbortRetryIgnore 2 Exibe os botes Abort, Retry, e Ignore.
VbYesNoCancel 3 Exibe os botes Yes, No, e Cancel .
VbYesNo 4 Exibe os botes Yes e No.
VbRetryCancel 5 Exibe os botes Retry e Cancel.
VbCritical 16 Exibe o cone Critical Message.
VbQuestion 32 Exibe o cone Warning Query.
VbExclamation 48 Exibe o cone Warning Message.
VbInformation 64 Exibe o cone Information Message.
O primeiro boto o selecionado por
VbDefaultButton1 0
padro.
O segundo boto o selecionado por
VbDefaultButton2 256
padro.
O terceiro boto o selecionado por
VbDefaultButton3 512
padro.
O quarto boto o selecionado por
VbDefaultButton4 768
padro.
Application modal o usurio s depois
de responder MsgBox que poder
VbApplicationModal 0
dar continuidade ao trabalho na
aplicao corrente.
System modal o usurio s depois de
responder MsgBox que poder dar
VbSystemModal 4096
continuidade ao trabalho em qualquer
aplicao em curso no sistema.
Analisando esta tabela podemos verificar a existncia
de diferentes agrupamentos de cdigos: para definir o tipo de
botes (0 5), para definir o tipo de cones (16, 32, 48, 64),
para definir o boto selecionado por defeito (0, 256, 512, 768)
e para indicar o modo de execuo (0 e 4096). Podemos adicionar os
cdigos e assim fazer combinaes entre diversas opes destes 4
grupos, contudo nunca deveremos adicionar mais do que um cdigo por
agrupamento.
Aps o aparecimento da caixa de mensagem, a depender do boto
clicado pelo usurio, a funo MsgBox pode retornar diferentes valores.
O valor retorna pela funo bem como a sua constante associada, esta
descrita na tabela seguinte:
Constante VBA Valor Boto Acionado
vbOK 1 OK
vbCancel 2 Cancel
vbAbort 3 Abort
vbRetry 4 Retry
vbIgnore 5 Ignore
vbYes 6 Yes
vbNo 7 No
Para entendermos melhor o funcionamento do msgbox, proceda da
seguinte maneira:
1. Abra uma nova pasta de trabalho do Excel.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

4. Execute o procedimento mensagem.


Aps a execuo do procedimento surgir uma caixa de mensagem
na tela:

Se o usurio clicar o boto Sim, surgir uma nova caixa de


mensagem:

Mas, se o usurio clicar o boto No, surgir outra caixa de


mensagem:

Mas, se o usurio clicar o boto Cancelar, surgir outra caixa de


mensagem:
A FUNO INPUTBOX

A funo InputBox, exibe uma janela com uma mensagem e uma


caixa de texto para que o usurio digite um valor ou uma entrada de
texto. Tambm so exibidos botes como Ok, Sim, No, Cancelar, como
no msgbox. O valor digitado na caixa de texto pelo usurio ser o valor
de retorno da funo. A principal funcionalidade da funo InputBox,
permite que o usurio entre com informaes para o procedimento ou
funo.
Para uso desta funo, deve-se seguir a seguinte sintaxe:
InputBox(prompt, [title], [default], [xpos], [ypos], [helpfile],
[context])
Na sintaxe da funo, pode-se perceber que a mesma possui
diversos parmetros, mas somente o primeiro obrigatrio, sendo que
todos os outros quando ignorados assumem valores atribudos por
padro.
Na tabela a seguir segue uma descrio sobre os argumentos da
funo:
Parmetro Comentrio
Prompt Texto a ser exibido como mensagem na janela de
(Obrigatrio) input. A dimenso mxima de 1024 caracteres.
Title Titulo da janela de input. Se este for omitido,
(Opcional) aparecer por defeito o nome da aplicao.
Valor padro da caixa de texto que aparecer no
Default
surgimento da janela. Se este parmetro for omitido
(Opcional)
o valor ser considerado vazio por padro.
Nmero que identifica a distncia horizontal entre o
Xpos lado esquerdo da tela e a janela de input. Se este
(Opcional) valor for omitido a janela aparecer centralizada
horizontalmente.
Nmero que identifica a distncia vertical entre o
Ypos lado superior da tela e a janela de input. Se este
(Opcional) valor for omitido a janela ficar posicionada a 1/3 da
parte inferior da tela.
HelpFile Nome do arquivo de Help que ser utilizado para dar
(Opcional) apoio ao preenchimento desta janela. Se for
indicado este parmetro o seguinte obrigatrio.
Nmero do ndice do tpico de Help constante no
Context
arquivo HelpFile, e que corresponde janela em
(Opcional)
questo.
Para entendermos melhor o funcionamento do inputbox, proceda da
seguinte maneira:
1. Abra uma nova pasta de trabalho do Excel.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

4. Execute o procedimento entrada.


Aps a execuo do procedimento surgir uma janela:

Nesta, janela o usurio dever digitar um valor na caixa de texto e


clicar o boto Ok.
Caso o valor digitado no seja um nmero, aparecer a seguinte
mensagem:

Clicando o boto Ok, aparecer uma caixa de mensagem,


perguntando se o usurio deseja continuar:
Clicando o boto Sim, surgir novamente a tela solicitando do
usurio a digitao de um valor entre 0 e 10. Caso o valor digitado seja
um nmero, mas que no esteja entre o intervalo de 0 a 10, surgir
seguinte caixa de mensagem:

Clicando o boto Ok, aparecer uma caixa de mensagem,


perguntando se o usurio deseja continuar. Clicando em Sim, surgir
novamente a tela solicitando do usurio a digitao de um valor entre 0 e
10. Caso o valor digitado seja um nmero e que esteja entre o intervalo
de 0 a 10, surgir uma caixa de mensagem informando o valor digitado
pelo usurio:

Clicando o boto Ok, aparecer uma caixa de mensagem,


perguntando se o usurio deseja continuar. Clicando em No, o
procedimento ser encerrado.
EXERCCIO

1. Crie um procedimento chamado de exerccio onde o


usurio dever digitar um nmero entre 0 e 10. Em seguida
um nmero aleatrio entre 0 e 10 gerado e comparado ao
valor digitado pelo usurio at que estes sejam iguais. Esta
tarefa dever ser repetida sempre que os valores forem
diferentes. Ao trmino, informar o nmero de tentativas at
encontrar a igualdade.
Pronto! Com isso, aprendemos a utilizar as funes
MsgBox e InputBox que sero de grande importncia para
os mdulos posteriores.

MDULO 9 MODELOS DE OBJETOS DO EXCEL


Objetos so elementos da planilha do Excel, caracterizados por um
conjunto de propriedades e que possuem um determinado
comportamento. Por exemplo, uma planilha do Excel um objeto,
caracterizada por um nome, e que pode ser ativada, excluda e
renomeada.
Os diversos objetos disponveis e que so oferecidos por um
programa esto agrupados em Bibliotecas. Uma Biblioteca um
conjunto de objetos que so utilizados para uma determinada funo ou
atividade.
Por exemplo, temos uma biblioteca com os diversos objetos do
Excel, que utilizaremos durante o curso, chamado Excel 11.0 Object
Library.
Nesta biblioteca encontramos objetos muito importantes para ns
como o objeto Application (Aplicao), Workbook (Pasta de Trabalho),
Worksheet (Planilha) e Range (Clulas).
Na figura a seguir, segue uma viso simplificada da biblioteca de
objetos do Excel.

Podemos perceber com isso, que os objetos


pertencentes a uma biblioteca formam uma espcie de
Hierarquia de Objetos.

Na figura anterior, podemos perceber que o objeto mais alto na


hierarquia de objetos o objeto Application. Este representa o prprio
Excel, ou seja, o aplicativo Excel. Logo abaixo, temos o objeto
Workbook, que representa uma pasta de trabalho do Excel. Mais
abaixo, encontramos o objeto Worksheet, que representa uma planilha
do Excel, onde dentro de cada planilha podemos ter uma faixa de clulas
que so representadas pelo objeto Range, objeto este que pode possuir
diversas propriedades e mtodos.
PROPRIEDADES, MTODOS, EVENTOS E COLEES DOS
OBJETOS

Em cada biblioteca esto disponveis diversos objetos, onde cada


um desses utilizado para um conjunto de aes especfico.
Uma vez criado um objeto, podemos utilizar os diversos mtodos,
propriedades e eventos deste objeto, para isto, precisamos saber o que
significam.
PROPRIEDADES
As propriedades de um objeto constituem um conjunto de
caractersticas que definem este objeto.
Nome, cor e dimenso, so exemplos das propriedades de um
objeto.
MTODOS
Determinam o comportamento de um objeto, ou seja, representam
procedimentos que realizam operaes especificas.
A opo de inserir, selecionar e procurar, so exemplos de mtodos
pertencentes a objetos.
EVENTOS
Representam todas as atividades que envolvam o objeto. Estes
servem para que possamos ativar uma determinada tarefa, quando
houver uma solicitao do usurio.
Abrir ou fechar uma pasta de trabalho do Excel, o clique sobre um
boto ou uma planilha, so exemplos de eventos.
COLEES
Constituem um conjunto de elementos do mesmo tipo.
Por exemplo, toda pasta de trabalho do Excel, possui uma coleo
chamada de Worksheets, que representa todas as planilhas existentes
nesta pasta de trabalho.
DESCRIO DOS PRINCIPAIS OBJETOS DO EXCEL

Nesta parte, conheceremos um pouco sobre os principais objetos


disponveis na biblioteca de objetos do Excel, para se ter um
entendimento preciso de quando utilizar cada um desses objetos para
solucionar problemas prticos que sero abordados em assuntos
posteriores.
OBJETO APPLICATION
Objeto pertencente ao topo hierrquico da biblioteca de objetos do
Excel, que representa todo o aplicativo do Excel carregado em memria.
Por exemplo, ao abrir o Excel, automaticamente criado na memria da
mquina, um objeto Application.
Use a propriedade Application para retornar o objeto Application.
Quando estivermos trabalhando dentro de uma determinada planilha,
no preciso criao explicita de um objeto Application. Por exemplo,
se desejarmos fazer referncia dentro do cdigo a uma determinada
clula, no precisamos criar um objeto Application, seguido de um
Workbook e um Worksheet para poder finalmente acessar as clulas da
planilha. Ao invs disso, podemos fazer referncia direta clula
desejada. Com isso, o Excel supe que estamos trabalhando com a
instncia atual do Excel, dentro da pasta de trabalho atual, dentro de
uma das planilhas, o que bastante significativo. Somente precisaramos
criar toda esta hierarquia de objetos, caso desejssemos fazer referncia
a uma clula de uma planilha de uma pasta de trabalho externa.
Por exemplo, caso desejssemos formatar a clula A1 da planilha
chamada Plan1, da pasta de trabalho atual, poderamos seguir este
cdigo:
Application.ActiveWorkbook.Worksheets("Plan1").Range("A1").
Font.Bold = True
Mas se caso desejarmos uma declarao mais simplificada,
poderamos simplesmente fazer:
Application.Range("A1").Font.Bold = True
Simplificando mais ainda, poderamos fazer:
Range("A1").Font.Bold = True
Observe que ao invs de utilizar toda a hierarquia de
objetos para chegar at a clula a ser formatada, podemos
apenas definir a clula que ser formatada que o Excel j
pressupe que esta clula pertence instncia atual do
Excel, da pasta de trabalho atual e da planilha atual.
A seguir segue uma lista com as principais propriedades e
mtodos deste objeto.
Propriedades
Caption Texto exibido na barra de ttulo do Excel.
Nome do diretrio onde o Excel est
Path
instalado.
O estado da janela da aplicao:

XlNormal tamanho normal.


WindowState
XlMaximized tamanho maximizado.
XlMinimized tamanho minimizado.

Exibe ou oculta a Barra de Status.


DisplayStatusBar
True exibe
Exibe ou oculta a Barra de Formulas
DisplayFormulaBar
True exibe
Mtodos
Implica o clculo de todas as frmulas de todas as Planilhas
Calculate
e pastas de trabalho abertos.
Quit Fecha a aplicao Excel.
OBJETO WORKBOOK
O objeto Workbook, na hierarquia de objetos, segue de imediato o
objeto application e representa uma pasta de trabalho do Excel, ou seja,
um arquivo .xls, onde podem haver uma ou mais planilhas.
Este objeto membro da coleo Workbooks que possui todos os
objetos Workbook atualmente abertos no Excel.
Para fazer referncia a um objeto Workbook, podemos utilizar
diversas propriedades, como:
Propriedade Workbooks
Propriedade ActiveWorkbook
Propriedade Workbooks
Para fazer referncia ao objeto Workbook atravs do uso desta
propriedade, devemos seguir a seguinte sintaxe:
Workbooks(ndice)
Onde ndice, o nmero de ndice ou o nome da pasta de trabalho
que ir retornar um nico objeto Workbook. O exemplo a seguir, salva a
pasta de trabalho identificada pelo ndice 1, ou seja, salva a primeira
pasta de trabalho que foi aberta.
Workbooks(1).Save
Propriedade ActiveWorkbook
O uso desta propriedade refere-se pasta de trabalho que esta
ativa no momento. O exemplo a seguir, protege a pasta de trabalho que
esta ativa.
ActiveWorkbook.Protect
A seguir segue uma lista com as principais propriedades e
mtodos deste objeto.
Propriedades
Nome do arquivo. No permite a alterao do nome, para isso
Name
necessrio utilizar a propriedade SaveAs.
Path Diretrio onde o arquivo se encontra.
Determina se o arquivo encontra-se salvo.
True se no houve nenhuma alterao no arquivo desde a
Saved
ltima gravao.
False caso contrrio.

Mtodos
Activate Ativa um documento aberto.
Close Fecha um documento.
Protege um documento contra qualquer tipo de
Protect
alterao.
Save Salva a pasta de trabalho.
SaveCopyAs Cria uma cpia do documento em questo.
OBJETO WORKSHEET
Objeto que esta abaixo do objeto Workbooks na hierarquia de
objeto do Excel.
Refere-se a uma planilha da pasta de trabalho e membro da
coleo Worksheets.
Para fazer referncia a um objeto Worksheet, podemos utilizar
diversas propriedades, como:
Propriedade Worksheets
Propriedade ActiveSheet
Propriedade Worksheets
Para fazer referncia ao objeto Worksheet atravs do uso desta
propriedade, devemos seguir a seguinte sintaxe:
Worksheets(ndice)
Onde ndice, o nmero de ndice ou o nome da planilha que ir
retornar um nico objeto Worksheet. O exemplo a seguir, oculta a
planilha 1 (um) da pasta de trabalho ativa.
Worksheets(1).Visible = False
O nmero de ndice da planilha especifica a posio da planilha na
guia de planilhas da pasta de trabalho. Onde Worksheets(1) a primeira
planilha (mais esquerda).
Podemos tambm usar como ndice o nome da planilha. O exemplo
a seguir, protege a planilha chamada Plan1.
Worksheets("plan1").Protect
Propriedade ActiveSheet
O uso desta propriedade refere-se planilha que esta ativa no
momento. O exemplo a seguir, imprime a planilha que esta ativa.
ActiveSheet.PrintOut
A seguir segue uma lista com as principais propriedades e
mtodos deste objeto.
Propriedades
Name Nome da planilha.
Visible Torna a planilha visvel ou a oculta.

Mtodos
Activate Ativa uma determinada planilha.
Delete Apaga uma planilha da pasta de trabalho.
Protect Protege uma planilha contra qualquer tipo de
alterao.
OBJETO RANGE
Este um dos objetos mais utilizados no Excel, pois representa
uma clula ou uma faixa de clulas em um determinado intervalo.
Para fazer referncia a um objeto Range, podemos utilizar diversas
propriedades e mtodos, como:
Propriedade Range
Propriedade Cells
Propriedade Offset
Mtodo Union
Propriedade Range
Para fazer referncia ao objeto Range atravs do uso desta
propriedade, devemos seguir a seguinte sintaxe:
Range (argumento)
Onde argumento, contm o endereo de uma clula ou intervalo de
clulas.
O exemplo a seguir, copia o valor da clula A3, para a clula A1.
Range(A1).Value = Range(A3).Value
O exemplo a seguir, preenche o intervalo de clulas com o texto
VBA.
Range("A1:A8").Value = "VBA"
O exemplo a seguir, apaga o contedo do intervalo chamado
banco.
Range("banco").ClearContents
Propriedade Cells
Para utilizar esta propriedade, devemos utilizar a seguinte sintaxe:
Cells (linha, coluna)
Onde linha, contm o ndice da linha e coluna, contm o ndice da
coluna para retornar uma clula.
Por exemplo:
Se desejarmos fazer referncia a clula A1, devemos apenas
utilizar Cells (1,1). Ou seja, linha 1 e coluna 1 da planilha (clula A1).
O exemplo a seguir, preenche a clula A1 com um nmero
randmico.
Cells(1, 1).Formula = "=rand()"
Em algumas situaes o uso da propriedade Cells para fazer
referncia as clulas mais apropriado do que a utilizao
da propriedade Range, pois com a propriedade Cells,
podemos utilizar uma varivel para a linha ou a coluna e
percorrer todo um intervalo dentro de uma lao de repetio.
Para entendermos melhor a explicao, proceda da seguinte
maneira:
1. Abra uma nova pasta de trabalho do Excel.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a
seguir:

O exemplo anterior, preenche todo o intervalo de A1:A10 com


nmeros seqenciais de 1 a 10.
Propriedade Offset
Utilizado para fazer referncia a um intervalo de clulas, atravs do
deslocamento de outro intervalo. Esta propriedade pouco trabalhada se
comparada s anteriores. Para utiliz-la devemos seguir a seguinte
sintaxe:
Offset (linha, coluna)
Onde, linha e coluna, so os deslocamentos que iro retornar um
intervalo de clulas especifico.
Para entender melhor a utilizao desta propriedade, visualize o
problema abaixo:

No problema anterior, a clula C2 da planilha 1 selecionada e logo


a seguir, 3 linhas abaixo e 1 coluna a direita dela selecionada.
Mtodo Union
Utilizado para fazer referncia a intervalos de vrias reas, isto ,
intervalos compostos de dois ou mais blocos de clulas.
Para utilizar este mtodo, devemos seguir a seguinte sintaxe:
Union (intervalo1, intervalo2, ...)
Onde intervalo o intervalo de clulas que se deseja retornar.
Para entender melhor a utilizao deste mtodo, visualize o
problema abaixo:

No exemplo anterior, criamos um objeto definido pela unio dos


intervalos A2:C3 e D4:G7 e em seguida, este selecionado.

UTILIZAO DOS PRINCIPAIS OBJETOS DO EXCEL

Nesta parte, trabalharemos com alguns exemplos na utilizao dos


principais objetos do Excel.
Exemplo 1
Abrir uma planilha que se encontra gravada no disco rgido:
Para este exemplo, faremos uso do mtodo Open:
No exemplo anterior, utilizamos o mtodo Open, da coleo
Workbooks do objeto Application, para ter acesso ao arquivo
Controle.xls que se encontra gravado no disco rgido (C:).

Exemplo 2
O usurio seleciona a planilha que ser aberta:
Para este exemplo, faremos uso do mtodo GetOpenFilename:

No exemplo anterior, utilizamos o mtodo GetOpenFilename,


pertencente ao objeto Application que exibe a caixa de dilogo Abrir.
Aps o usurio selecionar o arquivo na caixa, o nome deste ser
atribudo a varivel caminho.
Logo em seguida, testamos para saber se algum arquivo foi
selecionado, caso verdadeiro, uma mensagem aparece informando que o
arquivo ser aberto.
Depois da confirmao da mensagem, o arquivo selecionado abre-
se para o usurio.
MDULO 10 FORMULRIOS NO VBA (USERFORMS)
Neste mdulo, aprenderemos a criar formulrios para serem
utilizados nas nossas aplicaes com o objetivo de tornar nosso trabalho
mais interativo, ou seja, fazer com que o usurio acesse e manipule as
informaes da nossa planilha de forma clara e facilitada.
INTRODUO SOBRE FORMULRIOS

O uso mais comum e prtico para os Userforms a criao de


formulrios que atuam como uma interface mais amigvel para o usurio.
Na figura a seguir, temos um exemplo de um formulrio, utilizado
para a entrada de dados com a finalidade de cadastrar e excluir
funcionrios:

Este, no entanto, facilita bastante o trabalho principalmente de um


usurio sem experincia no Excel que no sabe manipular planilhas.
Observe que, desta maneira, podemos criar um aplicativo bastante
parecido com softwares profissionais vistos no dia-a-dia.
CRIANDO UM USERFORM

Para criar um userform, dentro do Editor do VBA, proceda da


seguinte maneira:
1. Clique o menu Inserir, do Editor do VBA.
2. Clique a opo Userform.
Com isso, surgir o novo userform criado:

Observe que o novo formulrio vem em branco, sem nenhum boto


ou controle.
Alm disso, podemos visualizar tambm no Project Explorer, o
cone referente ao formulrio criado.
CAIXA DE FERRAMENTAS

Depois de inserido o formulrio, precisamos agora decidir quais


controles faro parte dele, ou seja, devemos escolher quais botes ou
controles desejamos inserir no formulrio, mas para isso, precisamos
conhecer a caixa de ferramentas.

A caixa de ferramentas contm diferentes controles nos quais


podem ser inseridos no formulrio.
Para visualizar a caixa de ferramentas, proceda da seguinte
maneira:
1. Clique o menu Exibir.
2. Clique a opo Caixa de Ferramentas.

JANELA DE PROPRIEDADES

Nesta janela encontramos as propriedades pertencentes a cada


controle selecionado, atravs dela podemos alterar nos controles a sua
cor, dimenso, nome e etc.
Para visualizar a janela de propriedades, proceda da seguinte
maneira:
1. Clique o menu Exibir.
2. Clique a opo Janela de propriedades.
PROPRIEDADES DOS CONTROLES

Antes de comear a trabalhar com os controles, conheceremos


algumas de suas propriedades que sero de extrema importncia com o
trabalho dos mesmos.
PROPRIEDADE AUTOSIZE
Esta propriedade determina se o controle pode ser
automaticamente redimensionado para exibir todo o seu contedo. Nesta
propriedade encontramos dois valores (True ou False).
PROPRIEDADE AUTOTAB
Esta propriedade determina se ir ocorrer a tabulao automtica
quando o usurio digita o nmero mximo de caracteres permitido no
controle. Nesta propriedade encontramos dois valores (True ou False).
PROPRIEDADE BACKCOLOR
Esta propriedade utilizada para definir a cor do segundo plano do
controle.
PROPRIEDADE BACKSTYLE
Esta propriedade utilizada para definir o estilo do segundo plano
do controle.
Nesta propriedade encontramos dois valores:
fmBackStyleTransparent ou 0: O segundo plano transparente.
fmBackStyleOpaque ou 1: O segundo plano opaco (padro).
PROPRIEDADE BORDERCOLOR
Esta propriedade utilizada para definir a cor da borda do controle.
PROPRIEDADE BORDERSTYLE
Esta propriedade utilizada para definir o estilo da borda do
controle.
Nesta propriedade encontramos dois valores:
fmBorderStyleNone ou 0: O controle no tem linha de borda
visvel.
fmBorderStyleSingle ou 1: O controle tem uma borda de linha
nica (padro).
PROPRIEDADE BOUNDCOLUMN
Esta propriedade identifica a fonte de dados de um controle Caixa
de combinao (ComboBox) ou uma Caixa de listagem(ListBox) de
varias colunas.
Se o controle possuir mais de uma coluna, esta propriedade indica
qual valor ser associado ao controle, depois que uma opo da lista for
selecionada.
Nesta propriedade devemos definir um nmero inteiro que identifica
a posio da coluna que dever ter seu valor retornado, por exemplo: 1
para a primeira coluna, 2 para a segunda e assim por diante.
PROPRIEDADE COLUMNCOUNT
Esta propriedade utilizada para determinar o nmero de colunas a
serem exibidas em uma caixa de listagem ou em uma caixa de
combinao.
Nesta propriedade devemos definir um nmero inteiro que identifica
a quantidade de colunas a serem exibidas no controle, por exemplo: 1
para exibir uma coluna, 2 para exibir duas colunas e assim por diante.
Se definir valor 0, nenhuma coluna ser mostrada, e se definir o
valor -1, todas as colunas sero mostradas.
PROPRIEDADE CONTROLTIPTEXT
Esta propriedade utilizada para um texto que aparece quando o
usurio mantm, durante um momento, o ponteiro do mouse sobre o
controle sem clicar.
PROPRIEDADE ENABLED
Esta propriedade especifica se o controle pode receber o foco e
responder aos eventos gerados pelo usurio.
Nesta propriedade encontramos dois valores (True ou False).
PROPRIEDADE LISTROWS
Esta propriedade especifica o nmero mximo de linhas a exibir na
lista de uma caixa de combinao ou caixa de listagem.
PROPRIEDADE MAXLENGTH
Esta propriedade especifica o nmero mximo de caracteres que o
usurio pode digitar em uma caixa de texto ou em uma caixa de
combinao.
Nesta propriedade devemos definir um nmero inteiro que identifica
a quantidade de caracteres a serem exibidas no controle, por exemplo: 1
para exibir um caractere, 2 para exibir dois caracteres e assim por diante.
Se definir valor 0, indica que na h limite para digitao alm do
criado por restries da memria.
PROPRIEDADE ROWSOURCE
Esta propriedade especifica a origem que fornece uma lista para o
controle caixa de combinao ou caixa de listagem.
PROPRIEDADE TABINDEX
Esta propriedade especifica a posio do controle selecionado na
ordem de tabulao do formulrio.
Nesta propriedade devemos definir um nmero inteiro que identifica
a ordem de tabulao do controle, por exemplo: 0 para o primeiro objeto,
1 para o segundo e assim por diante.
PROPRIEDADE TEXT
Esta propriedade utilizada para retornar ou definir o texto em um
controle caixa de texto.
CONTROLES DE FORMULRIOS

Depois de ter conhecido as principais propriedades dos controles,


iremos agora conhecer estes controles de formulrios importantes para o
trabalho no VBA.
Nesta parte trabalharemos com os controles:
 Caixa de Listagem
 Caixa de Seleo
 Boto de Opo
 Boto de Rotao
 Caixa de Combinao

CONTROLE CAIXA DE LISTAGEM


Neste tipo de controle temos uma lista de valores, onde podemos
apenas selecionar uma ou mais opes caso o controle tenha sido
configurado para isso.
Para entendermos o funcionamento deste controle vamos a um
exemplo prtico. Iremos selecionar uma opo na caixa de listagem e a
opo selecionada aparecer escrita em uma caixa de mensagem.
Para isso proceda da seguinte maneira:
1. Abra o arquivo Exerccio 14.xls localizado na pasta da
turma.
2. Inicie o Editor do VBA.
No editor, voc ver o seguinte formulrio:
3. Clique duplamente sobre o controle caixa de listagem e
digite o seguinte cdigo:

4. Execute o formulrio e ao clicar sobre uma das opes da


lista o valor aparecer numa caixa de mensagem.
CONTROLE CAIXA DE SELEO
Este tipo de controle exibido no formulrio no formato de um
pequeno quadrado que pode se encontrar marcado ou desmarcado.
Para entendermos o funcionamento deste controle vamos a um
exemplo prtico. Iremos selecionar algumas opes e logo em seguida
as opes selecionadas aparecero em uma caixa de mensagem.
Para isso proceda da seguinte maneira:
1. Abra o arquivo Exerccio 15.xls localizado na pasta da
turma.
2. Inicie o Editor do VBA.
No editor, voc ver o seguinte formulrio:
3. Clique duplamente sobre o boto de comando chamado
resultado e digite o seguinte cdigo:
4. Execute o formulrio e ao clicar sobre o boto Resultado,
as opes escolhidas aparecero numa caixa de
mensagem.
CONTROLE BOTO DE OPO
Este tipo de controle exibido no formulrio no formato de um
pequeno crculo que pode se encontrar marcado ou desmarcado.
Importante! No confundir este controle com o controle
caixa de seleo. Neste o usurio pode apenas selecionar
uma das opes oferecidas.

Para entendermos o funcionamento deste controle vamos a um


exemplo prtico. Iremos selecionar algumas opes e logo em seguida
as opes selecionadas aparecero em uma caixa de mensagem.
Para isso proceda da seguinte maneira:
1. Abra o arquivo Exerccio 16.xls localizado na pasta da
turma.
2. Inicie o Editor do VBA.
No editor, voc ver o seguinte formulrio:

3. Clique duplamente sobre o boto de comando chamado


resultado e digite o seguinte cdigo:
4. Execute o formulrio e ao clicar sobre o boto Resultado, a
opo escolhida aparecer numa caixa de mensagem.

CONTROLE BOTO DE ROTAO


Este tipo de controle utilizado para incrementar e decrementar
nmeros.
Para entendermos o funcionamento deste controle vamos a um
exemplo prtico. Iremos indicar a idade, atravs do boto de rotao.
Para isso proceda da seguinte maneira:
1. Abra o arquivo Exerccio 17.xls localizado na pasta da
turma.
2. Inicie o Editor do VBA.
No editor, voc ver o seguinte formulrio:
3. Clique duplamente sobre o boto de rotao e digite o
seguinte cdigo:

4. Execute o formulrio e ao clicar sobre o boto de rotao, os


nmeros iro aparecendo na caixa de texto.

CONTROLE CAIXA DE COMBINAO


Este tipo de controle utilizado para exibir uma lista de opes.
Para entendermos o funcionamento deste controle vamos a um
exemplo prtico. Iremos selecionar uma opo da lista e esta ser
mostrada em uma caixa de mensagem.
Para isso proceda da seguinte maneira:
1. Abra o arquivo Exerccio 18.xls localizado na pasta da
turma.
2. Inicie o Editor do VBA.
No editor, voc ver o seguinte formulrio:
3. Clique duplamente sobre o caixa de combinao e digite o
seguinte cdigo:

4. Execute o formulrio e ao selecionar um estado na caixa de


combinao, este ser informado em uma caixa de
mensagem.
PROJETO FINAL
Neste projeto, cada aluno dever criar um sistema em Excel
utilizando os recursos do VBA vistos durante o curso, para controle de
um estabelecimento. Este projeto ir compor a nota final do curso.
Solicite ao seu instrutor as informaes necessrias para criao de
tal projeto.
Fiquem atentos ao prazo de entrega e aos requisitos bsicos
para criao do projeto.
BOA SORTE!!!

Vous aimerez peut-être aussi