Você está na página 1de 19

Tpicos em Microsoft Excel 2007

4 Criao de macros e introduo linguagem VBA


Vinicius A. de Souza
va.vinicius@gmail.com

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Sumrio
Introduo criao de macros............................................................................................................3
Gravao automtica de macros......................................................................................................3
Referncias absoluta e relativa........................................................................................................5
Associando macros a elementos grficos.............................................................................................6
Personalizar barra de ferramentas de acesso rpido (Excel 2007)...................................................6
Criando menus personalizados (Excel 2003)...................................................................................9
Associando macros a um boto de comando.................................................................................10
Introduo linguagem VBA.............................................................................................................12
Sub-rotinas e funes.....................................................................................................................12
Fundamentos da Linguagem ..............................................................................................................13
Variveis e atribuio de valores...................................................................................................13
Tipos de variveis .........................................................................................................................14
Declarao de variveis.................................................................................................................14
Operadores.....................................................................................................................................15
Operadores aritmticos..............................................................................................................15
Operadores relacionais..............................................................................................................15
Rotinas de exemplo........................................................................................................................15
Estruturas de controle....................................................................................................................16
If Then Else...............................................................................................................................17
For Next.................................................................................................................................18
While-Wend..............................................................................................................................19

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Introduo criao de macros


Uma macro um pequeno programa que contm uma lista de instrues a realizar no Excel.
Como sendo um repositrio de operaes, uma macro pode executar todo um conjunto de
tarefas atravs de uma nica chamada, que pode ser invocada rapidamente.
As instrues que formam o corpo da macro so escritas num cdigo prprio para que o
computador as possa entender, essa linguagem designada por VBA Visual Basic for
Applications.
Inicialmente, iremos realizar a construo de macros utilizando o assistente de gravao.
Vale lembrar que no Office 2007 precisamos salvar as planilhas habilitadas para macros. Assim:

Gravao automtica de macros


Para iniciar a criao de uma macro utilizando o assistente de gravao, temos que acessar a
aba Exibio Macros Gravar Macro. Ir aparecer o seguinte painel:

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Neste painel poderemos realizar as seguintes formataes:


1. Nome da Macro: ser constitudo por um conjunto de caracteres que identificaro a
Macro. interessante que este nome reflita a sua funcionalidade.
2. Tecla de atalho: composto por uma combinao de teclas que podero ser utilizadas
para executar uma macro.
3. Armazenamnto: Esta pasta de trabalho, Nova pasta de trabalho ou Pasta pessoal de
macros, sendo que cada uma corresponde a macros de mbitos diferentes. Assim, para
que a macro
fique
ativa sempre que o documento estiver aberto, devemos
armazenar na opo Esta pasta de trabalho.
4. No campo Descrio, introduza um comentrio macro este comentrio poder ser
importante para que no
seja esquecido o
seu
respectivo objetivo e
funcionalidade.
Configurando as opes, clicando em OK, iniciaremos a gravao da macro. importante
verificar que na barra de status aparecer um novo boto, que servir para pausar a gravao:

Ao acionarmos a gravao da macro, todas as operaes que realizarmos sero


automaticamente gravadas pelo Excel. Para executar a macro, basta utilizar a tecla de atalho
configurada (CTRL + alguma coisa) ou execut-la pelo painel de macros, acessvel em
Exibio Macros Exibir Macros:

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Referncias absoluta e relativa


Antes de comearmos a criar nossas macros, importante mencionar o conceito de referncias.
Antes de iniciar a gravao de uma macro, podemos configurar a referncia.
Por padro, o Excel utiliza referncia absoluta. As referncias absolutas realizam a gravao
de operaes com base no endereo selecionado, enquanto que a referncia relativa
apenas executa a operao, independente do local onde ela foi gravada. Para acionar a referncia
relativa, basta clicar no boto:

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Associando macros a elementos grficos


A princpio, podemos executar ma macro atravs de diferentes maneiras, como por exemplo:

Tecla de Atalho
Comando no Menu (Painel de macros)
Editor de Visual Basic for Applications

Uma outra maneira bastante interessante associar uma macro a um boto. Desta
forma, possvel criarmos um verdadeiro menu de opes de macros. Estas configuraes
sero vistas adiante.

Personalizar barra de ferramentas de acesso rpido (Excel 2007)


possvel criar um boto de atalho para executar uma macro dentro da barra de ferramentas
de acesso rpido. Para isto, clique com o boto direito do mouse sobre a barra e selecione
Personalizar barra de ferramentas de acesso rpido...

Ir aparecer o seguinte painel:

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Para criar o boto, em Selecionar mais usados, selecione a opo Macros. Selecione a
macro desejada e clique em Adicionar:

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007


Voc poder ainda modificar o desenho e o texto do boto. Basta clicar sobre a macro inserida no
painel direito e clicar em Modificar:

Para remover este boto criado da barra de ferramentas, voc dever


painel, selecionar a macro a ser excluda e clicar em Remover:

So Jos dos Campos, 2011.

acessar o mesmo

Tpicos em Microsoft Excel 2007

Criando menus personalizados (Excel 2003)


medida que criamos vrias macros, interessante que elas estejam organizadas e acessveis, de
forma que facilite sua utilizao. Uma opo que temos no microsoft Excel 2003 criar uma nova
barra de ferramentas e inseri-la no contexto do Excel. Assim, teremos funcionalidades novas e
personalizadas.
Para criar uma nova barra de ferramentas, devemos acessar novamente o menu Exibir Barra de
ferramentas Personalizar. Agora, devemos clicar na aba Barras de ferramentas, como mostra a
figura abaixo:

Para criar uma nova barra de ferramentas, devemos clicar no boto Nova. Em seguida, deveremos
dar um nome a ela. Perceba que, aps definirmos um nome, ela se comportar como uma barra de
ferramentas normal do Excel, podendo ser arrastada, exibida ou no exibida.
Aps criarmos uma barra de ferramentas, devemos agora criar itens de menu para ela. Para isto,
basta acessar a aba Comandos, mostrada na figura acima. Poderemos adicionar botes
diretamente barra de ferramentas ou criar um sistema de menus. Para adicionar um boto, basta
repetir o mesmo processo executado para atribuir uma macro a um boto. Para adicionar um menu,
voc dever acessar a categoria Novo menu, clicar no comando Novo menu e arrast-lo at sua
barra de ferramentas, como mostra a figura abaixo:

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

A figura abaixo mostra, em destaque, um menu criado:

Posteriormente, poderemos atribuir novos menus aos menus criados (sub-menus), novos botes e
comandos, inclusive botes associados a macros.
Para remover estes itens, basta acessar o painel de Personalizao novamente (Exibir Barra de
ferramentas Personalizar), clicar sobre o item e arrast-lo para o painel. Para excluir uma macro,
basta acessar o painel de macros (ALT + F8), selecionar a macro desejada e clicar no boto Excluir.

Associando macros a um boto de comando


possvel ainda associar uma macro a um boto de controle, parecido com este:

So Jos dos Campos, 2011.

10

Tpicos em Microsoft Excel 2007

Para isto, voc precisa primeiro habilitar a aba desenvolvedor. Clique no boto Office, escolha
Opes do Excel. Na categoria Mais usados, selecione a opo Mostrar guia Desenvolvedor
na faixa de opes.
Feito isto, v para a aba Desenvolvedor. Clique em inserir Controles de formulrio Boto.
Ento, clique e arraste o ponteiro do mouse, como se estivesse desenhando o boto.
Automaticamente o Excel solicitar que voc selecione a macro a ser executada quando clicarem
neste boto.

possvel configurar algumas opes de boto, basta clicar com o boto direito do mouse
sobre ele:

So Jos dos Campos, 2011.

11

Tpicos em Microsoft Excel 2007

Introduo linguagem VBA


Neste captulo trataremos da linguagem VBA Visual Basic for Applications. importante
ressaltar que no a veremos em profundidade. A ideia principal ajud-lo a realizar operaes como
leitura de dados de uma planilha, realizar determinados processamentos nestes dados e devolver os
resultados na planilha.
Como verificamos, as macros so pequenos programas, ou seja, sequncias de instrues ou
comandos, que o Excel executa em srie. Dessa forma, ao utilizarmos a linguagem VBA, podemos
criar programas macros utilizando tcnicas de programao estruturada.

Sub-rotinas e funes
Como verificamos na primeira aula, quando se grava uma macro no Excel, este tem um
comportamento em background que realiza a respectiva codificao para Visual Basic for
Applications. Este resultado bem visvel quando procedemos edio de uma macro no editor
VBA, por exemplo. Por isso, bastante interessante para o aprendizado criar uma macro com o
auxlio do assistente com alguns procedimentos e depois visualizar o cdigo criado.
Cada macro que se cria tem um comportamento autnomo relativamente a outras macros
implementadas, e tem como objetivo executar um determinado nmero de instrues que
respondam s exigncias do utilizador. Cada macro criada d origem a um procedimento ou rotina.
Existem dois tipos de rotinas:

as sub-rotinas ou rotinas (Sub) e


as funes (functions).

So Jos dos Campos, 2011.

12

Tpicos em Microsoft Excel 2007


As Sub-rotinas so aquelas cuja definio delimitada pelas palavras-chave Sub e End Sub. Assim,
se reparar todas as macros que grava no Excel so deste tipo. Repare ainda como que so
definidas:
Sub<nome_da_macro>()
<corpo_da_macro>
EndSub
Estas Sub-rotinas so designadas pelo nome que lhe atribumos e no recebem parmetros do
exterior, tm como funo desempenhar um conjunto de tarefas que compem o seu corpo. O corpo
da macro, assim composto por um conjunto de instrues, sendo que cada instruo diferente
necessita de estar numa linha diferente.
Funes so rotinas cuja definio comea com a palavra-chave Function e termina com as palavras
End Function. Todas as funes que utiliza no Excel so deste tipo de rotina. A sua definio tem a
estrutura seguinte:
Function<NomedaFuno>(<parametro1>,<parametro2>,...)
...
<NomedaFuno>=<Valor/Expresso>
...
EndFunction
A funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e tem como
objectivo executar um conjunto de instrues e produzir um valor final. Isto , sempre que se
pretender executar uma funo sabido priori que ela produzir um valor. Recorde-se como
exemplo a funo SOMA, esta recebe por parmetro um conjunto de valores que se pretendem
somar, sabe-se que o resultado da aplicao dessa funo ao conjunto de valores ser o respectivo
somatrio. Para definir o valor produzido por uma funo basta no seu interior, atribuir ao nome da
funo um determinado valor ou expresso.

Fundamentos da Linguagem
Variveis e atribuio de valores
Variveis so repositrios de dados na memria, que podem ser acessados atravs de um apelido.
Quando se pretende atribuir valores a variveis devemos indicar o nome da varivel (que uma
espcie de apelido, ou referncia sua posio na memria), o operador "=" e o valor que se
pretende que a varivel armazene.
Sintaxe: <Nome_Varivel>=<Valor>
So Jos dos Campos, 2011.

13

Tpicos em Microsoft Excel 2007


Como o nome da varivel representa, de certa forma, o contedo da mesma, sempre que
mencionarmos o nome da varivel o seu contedo que ser considerado.
Por exemplo, na expresso: Total=Parcela_1+Parcela_2
Parcela_1 representa o primeiro valor introduzido e Parcela_2 representa o segundo valor, no se
trata de adicionar o nome de duas variveis, mas adicionar os contedos que elas armazenam.

Tipos de variveis
O tipo de varivel est associado ao gnero de dado que esta tem, por hiptese, de armazenar.
Temos os seguintes tipos de variveis:
Nome
Integer
Long
Single
Double
Currency
String
Boolean
Date
Object
Variant

Tamanho
2 bytes
4 bytes
4 bytes
8 bytes
8 bytes
1 byte por caractere
2 bytes
8 bytes
4 bytes
16 bytes + 1 byte para cada
caractere

Intervalo
-32768 a 32767
-2.147.483.648 a 2.147.483.467
-3,4 x 1038 a 3,4 x 1038
1,7 x 10308 a 1,7 x 10308
-9223372036854,5808 a 9223372036854,5807
0 a aproximadamente 65.500
Verdadeiro ou Falso
01/01/100 a 31/12/9999
Qualquer referncia a objeto
Vlido para qualquer tipo de dados.

Declarao de variveis
A declarao de variveis em VBA tem a seguinte forma:
Dimnome_variavelAstipo
Onde:

Dim: Palavra chave que indica uma declarao de variveis (abreviatura de dimenso)
Nome_variavel: nome da varivel a utilizar para referenciar a posio na memria ocupada
As: palavra chave utilizada para separar o nome da varivel do tipo de dados
Tipo: tipo de dados atribudo varivel

So Jos dos Campos, 2011.

14

Tpicos em Microsoft Excel 2007

Operadores
Operadores aritmticos
A tabela, a seguir, apresenta os smbolos e as respectivas operaes e sintaxes dos operadores
aritmticos:
Operador
^
*
/
\
Mod
+
-

Significado
potenciao
multiplicao
diviso
diviso (quociente inteiro)
diviso (retorna o resto)
soma
subtrao

Sintaxe
r = b^e
r = n1*n2
r = n1/n2
r = n1\n2
r = n1 Mod n2
r = n1+n2
r = n1-n2

Operadores relacionais
Operadores relacionais fazem comparaes, isto , verificam a relao de magnitude e igualdade
entre dois valores. So seis os operadores relacionais:
Operador
>
>=
<
<=
=
<>

Significado
maior
maior ou igual
menor
menor ou igual
igual
diferente

Rotinas de exemplo
Vamos realizar a construo de algumas funes e sub-rotinas:

Criar uma funo que recebe um valor em graus Fahrenheit e o converte em graus Celsius.
Functioncelsius(fAsInteger)
celsius=((f32)*5/9)
EndFunction

So Jos dos Campos, 2011.

15

Tpicos em Microsoft Excel 2007


Para usar esta funo, basta selecionar uma clula da planilha ativa e digitar = celsius(45), por
exemplo.

Criar uma rotina que receba do usuario determinado valor, calcule uma taxa de desconto de
5% e exiba o resultado:
SubCalcula_Desconto()
ConstTaxa_DescAsSingle=0.05
DimDescontoAsDouble
Desconto=InputBox(IntroduzavalordasCompras)*
Taxa_Desc
MsgBoxOdescontode:&Desconto
EndSub

As subrotinas podem ser usadas atravs das mesmas formas vistas para executar macros criadas
com o gravador automtico.

Estruturas de controle
Estruturas de controle so mecanismos de programao que permitem controlar o fluxo de
processamento de uma rotina. Resumidamente, o VBA possui as seguintes estruturas:

Estrutura

Descrio

If -Then - Else

Testa uma condio e executa um determinado conjunto de


instrues consoante o resultado dessa avaliao

For Next

Executa uma determinada tarefa um determinado nmero de vezes.

While-Wend

Executa uma determinada tarefa enquanto que uma determinada


condio permanea verdadeira, com o valor True.

Do Loop

Executa uma determinada tarefa enquanto que a avaliao de uma


condio permanea True ou ento at que seja True.

Select - Case

Seleciona um dos segmentos de cdigo a processar mediante a


avaliao consecutiva de condies.

For Each Next

Realiza uma determinada tarefa repetitiva em cada objeto de uma


coleo ou em cada item de um vetor.

So Jos dos Campos, 2011.

16

Tpicos em Microsoft Excel 2007

If Then Else
Podemos imaginar o IF como a funo SE do Excel:
=IF( <condio>, <se condio verdadeira>, <se condio falsa> )
A funo SE tinha o seguinte comportamento:
1. Avalia a condio, que dever ser uma expresso booleana colocada como primeiro
parmetro;
2. Se a condio for verdadeira, ento (then) realiza as operaes colocadas no segundo
parmetro;
3. Caso contrrio (else) realiza as operaes que formam o terceiro parmetro
A estrutura If do VBA tem o mesmo tipo de funcionamento, o que difere a sintaxe.:
If<Condio>Then
<secondioverdadeira>
[Else
<secondiofalsa>]
EndIf
A palavra Else opcional numa avaliao If-Then-Else, sendo que no caso de ser omitida, a
avaliao negativa da condio implica uma sada automtica da Instruo If.
Elseif
Em certos casos, poder haver mais de um critrio a ser avaliado. Desta forma, teremos que
acrescentar um novo controle If interno, criando algo que chamamos de Ifs aninhados. Por exemplo,
considere a seguinte classificao hipottica:

Grau
Menos que 3
Entre 3 e 5
Entre 6 e 8
Maior que 8

Risco
Nenhum
Baixo
Mdio
Alto

Um possvel cdigo para implementar esta classificao seria:

So Jos dos Campos, 2011.

17

Tpicos em Microsoft Excel 2007


Subclassifica()
DimgrauAsInteger
grau=Application.InputBox("Digiteumvalornumrico",
"Valor",,,,,,1)

If(grau<3)Then
MsgBox"Riscoinexistente"
ElseIf(grau<=5)Then
MsgBox"Riscobaixo"

ElseIf(grau<=8)Then
MsgBox"Riscomdio"

ElseMsgBox"Riscoalto"

EndIf
EndSub

For Next
Este lao permite a execuo de uma tarefa durante um determinado nmero de vezes. Sua sintaxe
a seguinte:
For <Inicializao do Contador> To <Fim> [Step <Valor a
Incrementar>]
<Instruesarealizaremcadaiterao>
Next
O argumento do passo (step) pode ser negativo ou positivo, o que determina a direo do loop
(crescente ou decrescente).
Exemplo de aplicao
Pretende-se criar uma rotina que, recebendo a base e a potncia, calcule o valor desta operao de
potenciao.
Subcalcula_potencia()
DimbaseAsInteger
DimpotenciaAsInteger
DimresultadoAsInteger
DimcontadorAsInteger

So Jos dos Campos, 2011.

18

Tpicos em Microsoft Excel 2007


base=InputBox("Digiteabasedapotencia:")
potencia=InputBox("Digiteapotencia:")
resultado=1
Forcontador=1TopotenciaStep1

resultado=resultado*base
Next
MsgBoxresultado:&resultado

EndSub

While-Wend
A estrutura While-Wend tem um funcionamento similar ao For-Next. Realiza um looping um
determinado nmero de vezes, at que uma determinada condio seja falsa. Porm, um grande
diferencial do lao While que, dependendo da nossa implementao, ele pode ficar executando
determinadas instrues um nmero no determinado de vezes.
Sintaxe
While<Condio>
<Instruesarealizaremcadaiterao>
Wend
Exemplo de aplicao
Vamos fazer um simples contador para ir de 1 at 10:
Subtesta_while()
DimcontadorAsInteger
contador=1

Whilecontador<10
MsgBox"Valorcontador:"&contador
contador=contador+1
Wend

EndSub

So Jos dos Campos, 2011.

19