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
I trod!"o # cria"o de macros............................................................................................................$ %ra&a"o a!tom'tica de macros......................................................................................................$ (efer) cias a*sol!ta e relati&a........................................................................................................+ ,ssocia do macros a eleme tos -r'ficos.............................................................................................. /erso ali0ar *arra de ferrame tas de acesso r'pido 1Excel 20072.................................................... Cria do me !s perso ali0ados 1Excel 200$2...................................................................................3 ,ssocia do macros a !m *oto de coma do.................................................................................10 I trod!"o # li -!a-em 45,.............................................................................................................12 S!*6roti as e f! "7es.....................................................................................................................12 8! dame tos da 9i -!a-em ..............................................................................................................1$ 4ari'&eis e atri*!i"o de &alores...................................................................................................1$ Tipos de &ari'&eis .........................................................................................................................1: ;eclara"o de &ari'&eis.................................................................................................................1: <peradores.....................................................................................................................................1+ <peradores aritmticos..............................................................................................................1+ <peradores relacio ais..............................................................................................................1+ (oti as de exemplo........................................................................................................................1+ Estr!t!ras de co trole....................................................................................................................1. If T=e Else...............................................................................................................................17 8or > ?ext.................................................................................................................................1@ A=ile6Ae d..............................................................................................................................13

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Introduo criao de macros


Bma macro !m peC!e o pro-rama C!e co tm !ma lista de i str!"7es a reali0ar o Excel. Como se do !m repositrio de opera"7es, !ma macro pode exec!tar todo !m co D! to de tarefas atra&s de !ma E ica c=amada, C!e pode ser i &ocada rapidame te. ,s i str!"7es C!e formam o corpo da macro so escritas !m cdi-o prprio para C!e o comp!tador as possa e te der, essa li -!a-em desi- ada por 45, > 4is!al 5asic for ,pplicatio s. I icialme te, iremos reali0ar a co str!"o de macros !tili0a do o assiste te de -ra&a"o. 4ale lem*rar C!e o <ffice 2007 precisamos sal&ar as pla il=as =a*ilitadas para macros. ,ssimF

Gravao automtica de macros


/ara i iciar a cria"o de !ma macro !tili0a do o assiste te de -ra&a"o, temos C!e acessar a a*a Exi*i"o > Macros > %ra&ar Macro. Ir' aparecer o se-!i te pai elF

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

?este pai el poderemos reali0ar as se-!i tes formata"7esF 1. ?ome da MacroF ser' co stit!Gdo por !m co D! to de caracteres C!e ide tificaro a Macro. H i teressa te C!e este ome reflita a s!a f! cio alidade. 2. Tecla de atal=oF composto por !ma com*i a"o de teclas C!e podero ser !tili0adas para exec!tar !ma macro. $. ,rma0e am toF Esta pasta de tra*al=o, ?o&a pasta de tra*al=o o! /asta pessoal de macros, se do C!e cada !ma correspo de a macros de Im*itos difere tes. ,ssim, para C!e a macro fiC!e ati&a sempre C!e o doc!me to esti&er a*erto, de&emos arma0e ar a op"o JEsta pasta de tra*al=oK. :. ?o campo ;escri"o, i trod!0a !m come t'rio # macro > este come t'rio poder' ser importa te para C!e o seDa esC!ecido o se! respecti&o o*Deti&o e f! cio alidade. Co fi-!ra do as op"7es, clica do em <L, i iciaremos a -ra&a"o da macro. M importa te &erificar C!e a *arra de stat!s aparecer' !m o&o *oto, C!e ser&ir' para pa!sar a -ra&a"oF

,o acio armos a -ra&a"o da macro, todas as opera"7es C!e reali0armos sero a!tomaticame te -ra&adas pelo Excel. /ara exec!tar a macro, *asta !tili0ar a tecla de atal=o co fi-!rada 1CT(9 N al-!ma coisa2 o! exec!t'6la pelo pai el de macros, acessG&el em Exi*i"o > Macros > Exi*ir MacrosF

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Referncias absoluta e relativa


, tes de come"armos a criar ossas macros, importa te me cio ar o co ceito de refer) cias. , tes de i iciar a -ra&a"o de !ma macro, podemos co fi-!rar a refer) cia. /or padro, o Excel !tili0a refer) cia a*sol!ta. ,s refer) cias a*sol!tas reali0am a -ra&a"o de opera"7es com *ase o e dere"o selecio ado, e C!a to C!e a refer) cia relati&a ape as exec!ta a opera"o, i depe de te do local o de ela foi -ra&ada. /ara acio ar a refer) cia relati&a, *asta clicar o *otoF

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

Associando macros a elementos grficos


, pri cGpio, podemos exec!tar ma macro atra&s de difere tes ma eiras, como por exemploF Tecla de ,tal=o Coma do o Me ! 1/ai el de macros2 Editor de 4is!al 5asic for ,pplicatio s

Bma o!tra ma eira *asta te i teressa te associar !ma macro a !m *oto. ;esta forma, possG&el criarmos !m &erdadeiro me ! de op"7es de macros. Estas co fi-!ra"7es sero &istas adia te.

Personalizar barra de ferramentas de acesso rpido (Excel 200 !


M possG&el criar !m *oto de atal=o para exec!tar !ma macro de tro da *arra de ferrame tas de acesso r'pido. /ara isto, cliC!e com o *oto direito do mo!se so*re a *arra e selecio e /erso ali0ar *arra de ferrame tas de acesso r'pido...

Ir' aparecer o se-!i te pai elF

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

/ara criar o *oto, em JSelecio ar mais !sadosK, selecio e a op"o JMacrosK. Selecio e a macro deseDada e cliC!e em J,dicio arKF

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007 4oc) poder' ai da modificar o dese =o e o texto do *oto. 5asta clicar so*re a macro i serida o pai el direito e clicar em ModificarF

/ara remo&er este *oto criado da *arra de ferrame tas, &oc) de&er' pai el, selecio ar a macro a ser excl!Gda e clicar em J(emo&erKF

acessar o mesmo

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

"riando menus personalizados (Excel 200#!


O medida C!e criamos &'rias macros, i teressa te C!e elas esteDam or-a i0adas e acessG&eis, de forma C!e facilite s!a !tili0a"o. Bma op"o C!e temos o microsoft Excel 200$ criar !ma o&a *arra de ferrame tas e i seri6la o co texto do Excel. ,ssim, teremos f! cio alidades o&as e perso ali0adas. /ara criar !ma o&a *arra de ferrame tas, de&emos acessar o&ame te o me ! Exi*ir > 5arra de ferrame tas > /erso ali0ar. ,-ora, de&emos clicar a a*a J5arras de ferrame tasK, como mostra a fi-!ra a*aixoF

/ara criar !ma o&a *arra de ferrame tas, de&emos clicar o *oto J?o&aK. Em se-!ida, de&eremos dar !m ome a ela. /erce*a C!e, aps defi irmos !m ome, ela se comportar' como !ma *arra de ferrame tas ormal do Excel, pode do ser arrastada, exi*ida o! o exi*ida. ,ps criarmos !ma *arra de ferrame tas, de&emos a-ora criar ite s de me ! para ela. /ara isto, *asta acessar a a*a JComa dosK, mostrada a fi-!ra acima. /oderemos adicio ar *ot7es diretame te # *arra de ferrame tas o! criar !m sistema de me !s. /ara adicio ar !m *oto, *asta repetir o mesmo processo exec!tado para atri*!ir !ma macro a !m *oto. /ara adicio ar !m me !, &oc) de&er' acessar a cate-oria J?o&o me !K, clicar o coma do J?o&o me !K e arrast'6lo at s!a *arra de ferrame tas, como mostra a fi-!ra a*aixoF

So Jos dos Campos, 2011.

Tpicos em Microsoft Excel 2007

, fi-!ra a*aixo mostra, em destaC!e, !m me ! criadoF

/osteriorme te, poderemos atri*!ir o&os me !s aos me !s criados 1s!*6me !s2, o&os *ot7es e coma dos, i cl!si&e *ot7es associados a macros. /ara remo&er estes ite s, *asta acessar o pai el de /erso ali0a"o o&ame te 1Exi*ir > 5arra de ferrame tas > /erso ali0ar2, clicar so*re o item e arrast'6lo para o pai el. /ara excl!ir !ma macro, *asta acessar o pai el de macros 1,9T N 8@2, selecio ar a macro deseDada e clicar o *oto Excl!ir.

$ssociando macros a um boto de comando


M possG&el ai da associar !ma macro a !m *oto de co trole, parecido com esteF

So Jos dos Campos, 2011.

10

Tpicos em Microsoft Excel 2007

/ara isto, &oc) precisa primeiro =a*ilitar a a*a dese &ol&edor. CliC!e o *oto <ffice, escol=a J<p"7es do ExcelK. ?a cate-oria JMais !sadosK, selecio e a op"o JMostrar -!ia ;ese &ol&edor a faixa de op"7esK. 8eito isto, &' para a a*a ;ese &ol&edor. CliC!e em i serir > Co troles de form!l'rio > 5oto. E to, cliC!e e arraste o po teiro do mo!se, como se esti&esse dese =a do o *oto. ,!tomaticame te o Excel solicitar' C!e &oc) selecio e a macro a ser exec!tada C!a do clicarem este *oto.

M possG&el co fi-!rar al-!mas op"7es de *oto, *asta clicar com o *oto direito do mo!se so*re eleF

So Jos dos Campos, 2011.

11

Tpicos em Microsoft Excel 2007

Introduo linguagem VBA


?este capGt!lo trataremos da li -!a-em 45, > 4is!al 5asic for ,pplicatio s. M importa te ressaltar C!e o a &eremos em prof! didade. , ideia pri cipal aD!d'6lo a reali0ar opera"7es como leit!ra de dados de !ma pla il=a, reali0ar determi ados processame tos estes dados e de&ol&er os res!ltados a pla il=a. Como &erificamos, as macros so peC!e os pro-ramas, o! seDa, seC!) cias de i str!"7es o! coma dos, C!e o Excel exec!ta em srie. ;essa forma, ao !tili0armos a li -!a-em 45,, podemos criar pro-ramas > macros > !tili0a do tc icas de pro-rama"o estr!t!rada.

%ub&rotinas e fun'es
Como &erificamos a primeira a!la, C!a do se -ra&a !ma macro o Excel, este tem !m comportame to em *acP-ro! d C!e reali0a a respecti&a codifica"o para 4is!al 5asic for ,pplicatio s. Este res!ltado *em &isG&el C!a do procedemos # edi"o de !ma macro o editor 45,, por exemplo. /or isso, *asta te i teressa te para o apre di0ado criar !ma macro com o a!xGlio do assiste te com al-! s procedime tos e depois &is!ali0ar o cdi-o criado. Cada macro C!e se cria tem !m comportame to a!tQ omo relati&ame te a o!tras macros impleme tadas, e tem como o*Deti&o exec!tar !m determi ado Emero de i str!"7es C!e respo dam #s exi-) cias do !tili0ador. Cada macro criada d' ori-em a !m procedime to o! roti a. Existem dois tipos de roti asF as s!*6roti as o! roti as 1S!*2 e as f! "7es 1f! ctio s2.

So Jos dos Campos, 2011.

12

Tpicos em Microsoft Excel 2007 ,s S!*6roti as so aC!elas c!Da defi i"o delimitada pelas pala&ras6c=a&e S!* e E d S!*. ,ssim, se reparar todas as macros C!e -ra&a o Excel so deste tipo. (epare ai da como C!e so defi idasF Sub <nome_da_macro> ( ) <corpo_da_macro> End Sub Estas S!*6roti as so desi- adas pelo ome C!e l=e atri*!Gmos e o rece*em parImetros do exterior, t)m como f! "o desempe =ar !m co D! to de tarefas C!e comp7em o se! corpo. < corpo da macro, assim composto por !m co D! to de i str!"7es, se do C!e cada i str!"o difere te ecessita de estar !ma li =a difere te. 8! "7es so roti as c!Da defi i"o come"a com a pala&ra6c=a&e 8! ctio e termi a com as pala&ras E d 8! ctio . Todas as f! "7es C!e !tili0a o Excel so deste tipo de roti a. , s!a defi i"o tem a estr!t!ra se-!i teF Function <Nome da Funo> ( <parametro1>, <parametro2>,...) ... <Nome da Funo> = <Valor / Expresso> ... End Function , f! "o ide tificada pelo ome, pelo Emero e tipo de parImetros rece*idos, e tem como o*Decti&o exec!tar !m co D! to de i str!"7es e prod!0ir !m &alor fi al. Isto , sempre C!e se prete der exec!tar !ma f! "o sa*ido # priori C!e ela prod!0ir' !m &alor. (ecorde6se como exemplo a f! "o S<M,, esta rece*e por parImetro !m co D! to de &alores C!e se prete dem somar, sa*e6se C!e o res!ltado da aplica"o dessa f! "o ao co D! to de &alores ser' o respecti&o somatrio. /ara defi ir o &alor prod!0ido por !ma f! "o *asta o se! i terior, atri*!ir ao ome da f! "o !m determi ado &alor o! expresso.

Fundamentos da Linguagem
(ariveis e atribuio de valores
4ari'&eis so repositrios de dados a memria, C!e podem ser acessados atra&s de !m apelido. R!a do se prete de atri*!ir &alores a &ari'&eis de&emos i dicar o ome da &ari'&el 1C!e !ma espcie de apelido, o! refer) cia # s!a posi"o a memria2, o operador STS e o &alor C!e se prete de C!e a &ari'&el arma0e e. Si taxeF <Nome_Varivel> = <Valor> So Jos dos Campos, 2011. 1$

Tpicos em Microsoft Excel 2007 Como o ome da &ari'&el represe ta, de certa forma, o co teEdo da mesma, sempre C!e me cio armos o ome da &ari'&el o se! co teEdo C!e ser' co siderado. /or exemplo, a expressoF Total = Parcela_1 + Parcela_2 /arcelaU1 represe ta o primeiro &alor i trod!0ido e /arcelaU2 represe ta o se-! do &alor, o se trata de adicio ar o ome de d!as &ari'&eis, mas adicio ar os co teEdos C!e elas arma0e am.

)ipos de variveis
< tipo de &ari'&el est' associado ao -) ero de dado C!e esta tem, por =iptese, de arma0e ar. Temos os se-!i tes tipos de &ari'&eisF Nome I te-er 9o Si -le ;o!*le C!rre cV Stri 5oolea ;ate <*Dect 4aria t Tamanho 2 *Vtes : *Vtes : *Vtes @ *Vtes @ *Vtes 1 *Vte por caractere 2 *Vtes @ *Vtes : *Vtes 1. *Vtes N 1 *Vte para cada caractere Inter alo 6$27.@ a $27.7 62.1:7.:@$..:@ a 2.1:7.:@$.:.7 6$,: x 10$@ a $,: x 10$@ 1,7 x 10$0@ a 1,7 x 10$0@ 6322$$720$.@+:,+@0@ a 322$$720$.@+:,+@07 0 a aproximadame te .+.+00 4erdadeiro o! 8also 01W01W100 a $1W12W3333 R!alC!er refer) cia a o*Deto 4'lido para C!alC!er tipo de dados.

*eclarao de variveis
, declara"o de &ari'&eis em 45, tem a se-!i te formaF Dim nome_variavel As tipo < deF ;imF /ala&ra c=a&e C!e i dica !ma declara"o de &ari'&eis 1a*re&iat!ra de dime so2 ?omeU&aria&elF ome da &ari'&el a !tili0ar para refere ciar a posi"o a memria oc!pada ,sF pala&ra c=a&e !tili0ada para separar o ome da &ari'&el do tipo de dados TipoF tipo de dados atri*!Gdo # &ari'&el

So Jos dos Campos, 2011.

1:

Tpicos em Microsoft Excel 2007

+peradores Operadores aritmticos


, ta*ela, a se-!ir, aprese ta os sGm*olos e as respecti&as opera"7es e si taxes dos operadores aritmticosF <perador X Y W Z Mod N 6 Si- ificado pote cia"o m!ltiplica"o di&iso di&iso 1C!ocie te i teiro2 di&iso 1retor a o resto2 soma s!*tra"o Si taxe r T *Xe r T 1Y 2 r T 1W 2 r T 1Z 2 r T 1 Mod 2 r T 1N 2 r T 16 2

Operadores relacionais
<peradores relacio ais fa0em compara"7es, isto , &erificam a rela"o de ma- it!de e i-!aldade e tre dois &alores. So seis os operadores relacio aisF <perador [ [T \ \T T \[ Si- ificado maior maior o! i-!al me or me or o! i-!al i-!al difere te

Rotinas de exemplo
4amos reali0ar a co str!"o de al-!mas f! "7es e s!*6roti asF Criar !ma f! "o C!e rece*e !m &alor em -ra!s 8a=re =eit e o co &erte em -ra!s Celsi!s. Function celsius(f As Integer) celsius = ((f - 32) * 5 / 9) End Function

So Jos dos Campos, 2011.

1+

Tpicos em Microsoft Excel 2007 /ara !sar esta f! "o, *asta selecio ar !ma cl!la da pla il=a ati&a e di-itar T celsi!s1:+2, por exemplo. Criar !ma roti a C!e rece*a do !s!ario determi ado &alor, calc!le !ma taxa de desco to de +] e exi*a o res!ltadoF Sub Calcula_Desconto() Const Taxa_Desc As Single = 0.05 Dim Desconto As Double Desconto = InputBox (Introduza valor das Compras)* Taxa_Desc MsgBox O desconto de : End Sub ,s s!*roti as podem ser !sadas atra&s das mesmas formas &istas para exec!tar macros criadas com o -ra&ador a!tom'tico. & Desconto

Estruturas de controle
Estr!t!ras de co trole so meca ismos de pro-rama"o C!e permitem co trolar o fl!xo de processame to de !ma roti a. (es!midame te, o 45, poss!i as se-!i tes estr!t!rasF

!strutura
I# $Then $ !lse %or Ne&t 'hile$'end "o (oo) Select $ Case %or !ach Ne&t

"escrio
Testa !ma co di"o e exec!ta !m determi ado co D! to de i str!"7es co soa te o res!ltado dessa a&alia"o Exec!ta !ma determi ada tarefa !m determi ado Emero de &e0es. Exec!ta !ma determi ada tarefa e C!a to C!e !ma determi ada co di"o perma e"a &erdadeira, com o &alor Tr!e. Exec!ta !ma determi ada tarefa e C!a to C!e a a&alia"o de !ma co di"o perma e"a Tr!e o! e to at C!e seDa Tr!e. Selecio a !m dos se-me tos de cdi-o a processar media te a a&alia"o co sec!ti&a de co di"7es. (eali0a !ma determi ada tarefa repetiti&a em cada o*Deto de !ma cole"o o! em cada item de !m &etor.

So Jos dos Campos, 2011.

1.

Tpicos em Microsoft Excel 2007

If T en !lse
/odemos ima-i ar o I8 como a f! "o SE do ExcelF TI81 \co di"o[, \se co di"o &erdadeira[, \se co di"o falsa[ 2 , f! "o SE ti =a o se-!i te comportame toF 1. ,&alia a co di"o, C!e de&er' ser !ma expresso *oolea a colocada como primeiro parImetro^ 2. Se a co di"o for &erdadeira, e to 1t=e 2 reali0a as opera"7es colocadas o se-! do parImetro^ $. Caso co tr'rio 1else2 reali0a as opera"7es C!e formam o terceiro parImetro , estr!t!ra If do 45, tem o mesmo tipo de f! cio ame to, o C!e difere a si taxe.F If <Condio> Then <se condio verdadeira> [ Else <se condio falsa> ] End If , pala&ra Else opcio al !ma a&alia"o If6T=e 6Else, se do C!e o caso de ser omitida, a a&alia"o e-ati&a da co di"o implica !ma saGda a!tom'tica da I str!"o If. Elseif Em certos casos, poder' =a&er mais de !m critrio a ser a&aliado. ;esta forma, teremos C!e acresce tar !m o&o co trole If i ter o, cria do al-o C!e c=amamos de Ifs a i =ados. /or exemplo, co sidere a se-!i te classifica"o =ipotticaF

*rau
Me os C!e $ E tre $ e + E tre . e @ Maior C!e @ ?e =!m 5aixo Mdio ,lto

+isco

Bm possG&el cdi-o para impleme tar esta classifica"o seriaF

So Jos dos Campos, 2011.

17

Tpicos em Microsoft Excel 2007 Sub classifica() Dim grau As Integer grau = Application.InputBox("Digite um valor numrico", "Valor", , , , , , 1) If (grau < 3) Then MsgBox "Risco inexistente" ElseIf (grau <= 5) Then MsgBox "Risco baixo" ElseIf (grau <= 8) Then MsgBox "Risco mdio" Else MsgBox "Risco alto" End If End Sub

For " #e$t


Este la"o permite a exec!"o de !ma tarefa d!ra te !m determi ado Emero de &e0es. S!a si taxe a se-!i teF For Next <Inicializao do Contador> To <Fim> [Step Incrementar>] <Instrues a realizar em cada iterao> <Valor a

< ar-!me to do passo 1step2 pode ser e-ati&o o! positi&o, o C!e determi a a dire"o do loop 1cresce te o! decresce te2. !&em)lo de a)licao /rete de6se criar !ma roti a C!e, rece*e do a *ase e a pot) cia, calc!le o &alor desta opera"o de pote cia"o. Sub calcula_potencia() Dim Dim Dim Dim base As Integer potencia As Integer resultado As Integer contador As Integer

So Jos dos Campos, 2011.

1@

Tpicos em Microsoft Excel 2007 base = InputBox("Digite a base da potencia: ") potencia = InputBox("Digite a potencia: ") resultado = 1 For contador = 1 To potencia Step 1 resultado = resultado * base Next MsgBox resultado: & resultado End Sub

% ile&%end
, estr!t!ra A=ile6Ae d tem !m f! cio ame to similar ao 8or6?ext. (eali0a !m loopi - !m determi ado Emero de &e0es, at C!e !ma determi ada co di"o seDa falsa. /orm, !m -ra de difere cial do la"o A=ile C!e, depe de do da ossa impleme ta"o, ele pode ficar exec!ta do determi adas i str!"7es !m Emero o determi ado de &e0es. Si taxe While <Condio> <Instrues a realizar em cada iterao> Wend !&em)lo de a)licao 4amos fa0er !m simples co tador para ir de 1 at 10F Sub testa_while() Dim contador As Integer contador = 1 While contador < 10 MsgBox "Valor contador: " & contador contador = contador + 1 Wend End Sub

So Jos dos Campos, 2011.

13