Você está na página 1de 15

Apndice 1: Macros e Interao com o Usurio

A1.1 Introduo

A macro uma rotina de usurio no VBA usada para rotinas automtica ou operaes repetitivas no Excel.
Macros so tambm chamadas subroutines; usamos esses nomes alternadamente. Algumas das rotinas
VBA de interao com o usurio esto cobertas nas sees A1.3 e A1.4. Mdulos (foram mencionados
brevemente no Captulo 31) so dados com uma cobertura completa como o ltimo assunto do captulo.

A1.2 Subroutines Macro

A primeira linha de uma subrotina macro d um nome macro e lista os parmetros se houverem. muito
semelhante primeira linha de uma funo:
Sub NomeDaMacr o( )
A ltima linha indica o final da macro e assim se parece (muito aproximadamente) com isto:
End Sub
Separando a primeira e a ltima linhas esto aquelas declaraes que a macro executa. O que segue uma
macro muito simples que coloca uma mensagem na tela.
Sub Di gaAl o( )
MsgBox " Al " , , " Eu di sse Al "
End Sub

A macro introduz uma macro VBA interna chamada MsgBox. Ela tambm introduz a maneira como uma
macro ativada (chamada) de uma rotina VBA. A MsgBox chamada por um comando na linha seguido por
uma lista de argumentos separados por vrgulas. Note a sintaxe:
MsgBox " Al " , , " Eu di sse Al "
Existem trs argumentos:

"Al" a mensagem que ser mostrada.
O segundo argumento est vazio: note o espao entre as vrgulas. Este argumento pode ser usado para
definir botes para a caixa de mensagem.
O terceiro argumento : "Eu disse Al" este o ttulo da caixa de mensagem.
Uma macro pode ser ativada (rodada) no Excel de vrias maneiras. A maneira mais simples de rodar uma
macro do menu ferramentas ir para a guia Desenvolvedor e no Grupo Cdigo escolher o boto Visual
Basic.


Se usarmos o boto Macros, ou usando a tecla de atalho de teclado [Alt + F8], aparece a caixa de seleo
de macro. A caixa lista alfabeticamente todas as macros disponveis. Encontre a sua macro, clique no seu
nome, e clique no boto Executar.






Nesse momento o Excel est travado. Voc tem que clicar o boto OK antes de progredir.
A1.2.1 Tecla de Atalho para Macros
Usando uma tecla de atalho de teclado um modo mais rpido de fazer a macro rodar. Para prender uma
tecla de atalho a nossa macro:
1. Selecione o boto Opes da caixa de seleo de macro.
2. Digite um caractere no espao fornecido, e clique OK.
3. Feche a caixa de seleo de macro usando o X no canto superior direito.
Voc pode ativar agora a macro usando a tecla de atalho ([Ctrl +h] no nosso caso).




A1.2.2 Atribuindo Macros a uma Barra de Ferramentas
Voc pode atribuir macros a um boto numa barra de ferramentas, e mais tarde ativar a macro clicando no
boto. Para atribuir DigaAlo a um boto, abra o menu barra de ferramentas (Exibir|Barra de
Ferramentas|Personalizar...)



e selecione a aba do painel Comandos.



Escolha qualquer Categorias e qualquer Comandos:
Por exemplo, selecione Exibir e Pilhas de chamadas... e arraste-o para uma barra de ferramentas.
(Mantenha o boto esquerdo do mouse pressionado enquanto movimentar o mouse.)



Selecione o boto Pilhas de chamadas...


Este boto ser inserido ali.
Neste ponto o boto
esquerdo do mouse no foi
liberado ainda
Clique com o boto direito do mouse no boto inserido recentemente



Troque o Nome do boto digitando Boto Personalizado na caixa direita de Nome. A seguir clique em
Editar imagem de boto... e ir aparecer a janela Editor de boto:

Use a sua criatividade artstica e desenhe outro boto do seu gosto. Eu fiz assim: . Voc pode tambm
Alterar imagem de boto. Feito o que voc desejar, selecione AssignMacro no menu.



Selecione nossa macro da lista e clique no boto OK. Clique o boto Close. DigaAlo atribuda agora ao
boto smiling na barra de ferramentas.



A imagem no boto e a ferramenta dica atribuda a ele pode tambm ser personalizada. Para detalhes refira-
se ao arquivo Ajuda do Excel.

A1.3 User Output e a Funo MsgBox

A funo MsgBox mostra uma mensagem na tela e retorna um valor baseado no boto. Algumas das
diferentes opes disponveis com esta funo esto demonstradas nas seguintes macros:
Sub MsgBoxDef aul t ( )
Di mTemp As I nt eger
Temp = MsgBox( " MensagemDef aul t " , , _
" T t ul o Def aul t " )
MsgBox " O val or r et or nado pel a MsgBox : _
" & Temp
End Sub



Observao: A configurao default da MsgBox produz um boto OK. O ttulo Default "Microsoft Excel."
Clicando o boto OK faz a MsgBox retornar o valor 1.
Sub MsgBoxOKCancel ( )
Di mTemp As I nt eger
Temp = MsgBox( " MensagemDef aul t " , vbOKCancel )
MsgBox " O val or r et or nado pel a MsgBox : _
" & Temp
End Sub



Como notado anteriormente, o segundo argumento da MsgBox determina quais botes sero mostrados.
Esta encarnao da macro demo usa a constante vbOKCancel para produzir os dois botes OK e Cancel.
Note que se o boto Cancelar for clicado, a MsgBox retorna o valor 2.
O que segue uma lista de algumas constantes que podem ser usadas como o segundo argumento da
MsgBox, juntamente com a caixa de mensagem elas produzem:

VbOKOnly VbOKCancel VbAbortRetryIgnore


VbYesNoCancel VbYesNo











VbRetryCancel VbCritical VbQuestion


VbExclamation VbInformation


Os valores que podem ser retornados pela MsgBox so como os que seguem:

Constante Valor Descrio
vbOK 1 boto OK clicado
vbCancel 2 boto Cancel clicado
vbAbort 3 boto Abort clicado
vbRetry 4 boto Retry clicado
vbIgnore 5 boto Ignore clicado
vbYes 6 boto Yes clicado
vbNo 7 boto No clicado

A1.4 User Input e a Funo InputBox
InputBox uma funo interna do VBA usada para obter informao textual do usurio para o interior de
uma varivel numa sub-rotina (uma macro com um outro nome ...). As operaes da funo esto
demonstradas na seguinte macro, calculadora do valor presente. A macro CalculadorVP calcula , onde FC
um nmero entrado pelo usurio:
Sub Cal cul ador VP( )
Di mFC
FC = I nput Box( " Ent r ar como val or do f l uxo de cai xa, por f avor " , " Cal cul ador a
VP" , " 100" )
MsgBox " O val or pr esent e de " & FC & " a 5%dur ant e 10 per odos : " & _
Round( Appl i cat i on. PV( 0. 05, 10, - FC) , 2) , vbI nf or mat i on, " Cal cul ador a PV"
End Sub
Note a sintaxe:
FC = I nput Box( " Ent r ar como val or do f l uxo de cai xa, por f avor " , " Cal cul ador a
VP" , " 100" )
"Entrar ... Por favor," o primeiro argumento para InputBox, a mensagem a ser mostrada.
"Calculadora VP," o segundo argumento, o ttulo para a caixa.
"100," o terceiro argumento, a string default a ser colocada na caixa.
Se voc no trocar o valor default por algum outro valor, rodando a macro dever resultar no seguinte:


Neste momento voc pode trocar "100" com algum outro nmero. (Neste exemplo, optamos por mant-lo.)
Clicando no boto OK produz a seguinte caixa:



A macro tambm introduz um novo operador VBA, o &. Este operador usado para concatenar (combinar)
seus dois operandos numa nica string de caracteres. Ela merece uma pequena funo demo por si prpria.
Note que operandos no string so convertidos em strings.
Funct i on Concat Demo( Par amet er 1, Par amet er 2)
Concat Demo = Par amet er 1 & Par amet er 2
End Funct i on


A1.5 Mdulos
O VBA organiza as funes definidas pelo usurio e sub-rotinas em unidades chamadas mdulos. Poder (e
algumas vezes, dever) ter mais do que um mdulo num projeto VBA (isto , a parte da pasta que tem
nossas funes e sub-rotinas). Os Mdulos tm nomes: Por default o VBA usa o nome "Module" seguido por
um nmero para indicar o nome do mdulo, mas voc poder achar til (como temos feito na pasta
acompanhando este livro) para dar-lhes um nome um pouco mais descritivo.
Para re-nomear um mdulo (no editor VBA), selecione o mdulo no painel Project Explorer.


Se o painel Project Explorer no estiver visvel, selecione o Project Explorer do menu Exibir.
1
2
3
4
5
6
7
A B C D
Parmetro1 Parmetro2
1 2 12 <=ConcatDemo(A4;B4)
Ber tolo Bertolo <=ConcatDemo(A5;B5)
Ber 1 Ber1 <=ConcatDemo(A6;B6)
tolo 2 tolo2 <=ConcatDemo(A7;B7)
ConcatDemoemAo
Uma vez selecionado um mdulo, a lista de propriedades do mdulo dever aparecer no painel
propriedades. Clique no nome do mdulo (ela dever ser a nica propriedade disponvel) e mude-a (use uma
palavra somente, e somente dgitos e caracteres alfabticos).



Uma vez pressionada a tecla [Enter] o nome mudado. Note a mudana no Project Explorer.

Exerccios
1. Escreva uma macro que mostre a seguinte caixa de mensagem. A caixa de mensagem dever ficar no
topo de todas as outras janelas, e dever evitar o usurio de fazer qualquer coisa em qualquer aplicao at
que um dos botes seja clicado.
Sugesto Voc precisa usar algumas opes da MsgBox que no foram cobertas no texto; use o sistema
de Ajuda VBA.


2. Escreva uma macro calculadora de valor presente semelhante aquela uma que aparece na seo A1.4.
Entretanto como ilustrado aqui sua macro dever perguntar ao usurio pelos valores dos fluxos de
caixa, da taxa de juros, e do nmero de perodos. Ela dever ento mostrar o resultado numa caixa de
mensagem. Valores default lgicos devero ser fornecidos para todos os argumentos. No use a funo
Excel PV; escreva a sua prpria funo valor presente e use-a. Um lembrete:
vP(FC, i, n) =
FC
(1 +i)
k
n
k=1










Voc pode usar a funo VP fornecida pelo Excel, como fizemos, para verificar a exatido de sua macro.
3. Reescreva a macro do exerccio anterior de modo que a interface do usurio seja como a demonstrada na
seguinte screen shots. Algumas das funes necessrias para escrever a macro no foram cobertas no
texto. Usamos as funes seguintes:
Val Uma funo usada para converter uma string de dgitos para um nmero.
Left Uma funo usada para retornar a parte esquerda de uma string.
Right Uma funo usada para retornar a parte direita de uma string.
FormatPercent Uma funo usada para formatar um nmero.
FormatCurrency Uma funo usada para formatar um nmero.
Mais informaes sobre estas funes esto disponveis no arquivo Ajuda do VBA; recomendamos voc us-
las.









Observao: Seu computador poder mostrar um smbolo de moeda diferente.

4. Reescreva a macro do exerccio anterior de modo que ele trate apropriadamente com o boto Cancel.
Uma verso simples da nova macro abortar a macro se Cancel for clicado em qualquer estgio.
Uma verso mais sofisticada da nova macro permitir o usurio entrar novamente com os dados do ponto
de partida.
A verso mais sofisticada da nova macro permitir entrar novamente com os dados usando os dados
antigos como default.
5. Escreva uma macro calculadora de plano de prestaes; a macro perguntar ao usurio pela soma do
emprstimo, o nmero de parcelas, e a taxa de juros. Assuma que o pagamento seja no final do perodo.
A sada dever se parecer com o exemplo seguinte:
Sub St r i ngConcat ( )
Di mS As St r i ng
S = " Col l " & Chr ( 9) & " Col 2" ' Chr ( 9) _
i s t he Tab
S = S & Chr ( 13) & " aaa" & Chr ( 9) & " bbb"
MsgBox S
End Sub



Aqui est um exemplo da macro solicitada em ao:









6. Reescreva a macro - Calculadora de Plano de Prestaes - de modo que ela mostre os pagamentos
segregados em juros e pagamentos do capital (amortizaes). A caixa de entrada no exemplo foi removida
por solidez.



7. Reescreva a macro, calculadora de plano de pagamentos; a macro perguntar pela soma do emprstimo,
os pagamentos, e a taxa de juros. Assuma o pagamento no final do perodo. A macro dever mostrar os
pagamentos segregados em juros e amortizaes. Obviamente, o ltimo pagamento pode ser menor (mas
no maior) que o pagamento fornecido pelo usurio. A sada parecer com o seguinte exemplo (caixas de
entrada removidas por solidez).



8. Uma verso um pouco mais complicada da macro no exerccio 7 produziria os seguintes resultados
melhores apresentados. Escreva esta verso da macro.

9. Um plano mvel de pagamentos envolve pagamentos que variam por um porcentual fixo durante a vida do
emprstimo. Escreva a verso mvel do plano de pagamento da calculadora do exerccio 8. Alm de todas
as entradas descritas anteriormente, a macro obter uma taxa de pagamento de troco (em porcentagem) do
usurio. Isto o que ela dever se parecer numa ao.
Observao Uma rpida olhada no arquivo Ajuda da funo Format dever ser vantajoso neste momento.



9. Um plano de pagamento deslizante (sliding) envolve pagamentos que variam por uma porcentagem fixa
durante a vida do emprstimo. Escreva uma verso prestao deslizante do plano de prestaes da
calculadora do exerccio 8. Alm disso, para todas as entradas descritas anteriormente, a macro pedir uma
taxa de variao de prestao (como porcentagem) ao usurio. Isto o que deve parecer em ao.

Você também pode gostar