Date post: | 15-Jul-2015 |
Category: |
Documents |
Upload: | jeferson-barbosa |
View: | 48 times |
Download: | 0 times |
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 1/37
Urn tuto ria l sobre proqrarnacao Excel com
V isual B asic for Applications
Por L .A .Berto lo
http://www.bertolo.pro.br
Este arquivo contern um arquivo para lrnpressao das cinco lic;oes de um tutorial ExcelNBA criado por
L.A.Bertolo, um professor do IMES-FAFICA.
Todos os creditos na producao deste documento e as planilhas Excel que acompanham sao para
L.A.Bertolo.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 2/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 2
Programacao 1
User Dermed Function (UDF's) - urn pequeno defeito e uma inconveniencia!
Qualquer urn que tenha experimentado as UDF's em qualquer versao do Excel posterior aquela do
Excel 5 tera notado duas caracteristicas inoportunas. Estas seriam vistas primeiro antes de
fazermos qualquer trabalho mais avancado,
o pequeno defeito
Abra 0Excel e centralize 0alinhamento de todas as Celulas,
G 3 Microsoft Exce I . Pastil1 [[]~-X
~~ -6_rquivo E_ditar E"ibir [nserir Eormatar l Ferramentas Dados Flash~aper Janela Aj~da - is ' x
~@ 1 m ~.!D c ;g ~ ~I~ ~ ~elulas" Ctrl+l 0< ·I~ ~ f~ ~ j. u I01!!l100% . ? ) .
1 Ari~1 ;. 10
. IN LinQa • ~ I ~ < % : o ~
,QO I , .: -: - " - = - 1 l : ± J . . . : ~. ~ ..000 ,*,0 I =r- =v-
1 1 ·I~ Ita· I
Colu[[~ ~~ 0 P 1 hll t ! ' ) ~§lI '" ' :i J '" Ab1I'~. Hi.' " LJ
o : : T ii
A1 fi <I"_lanilha •
A I B C AutoEo rmat~>~o. , , I G I H I J K I L___J
1 ! I I I_:j
Formata,ao condconel, ,
2 I
I :I I
3 I I E~tllo".I I
4 I I I I I I I
Estilo tIl XNome do !l_stilo: INorm~1
Estilo inclui ------------
r ; ; ; liumero Ger~1
if OK
W A! inhamento Gera l, I nfe rio r a li nhado
W coote AriallO
r ; ; ; !l_ord~ .5em borda,
Sem somor eado
Trevada
Formiltilr ceLlJ1iu; '? X
Numer 0 Alinh amento
Alinhamento de teo-to -----
Borda I ~drde s I Pro t e~ao IOiena~ao--------;
~onte
tiorizontal:
~
.. •..Texto -. .. ..
Jcentro
Ij_ertical:
• • • •res t ribul,ao Iustifl rads
Controlede tecto ------
rR~tomo eutomen code texto
rRedugjr para ejusterp" M e s ere r celulas
De direite para a esquer de ----
D ire~aodote ; :5.to:
]contexto
OK Canceler
Na Celula B6 digite 'X' e de B8 a B21 preencher com urn range de inteiros de -3 to 10.
Destacar as Celulas B6 a B21 e selecionar Inserir ~ Nome ~ Definir, etc, para nomear 0
intervalo como 'x'. Na Celula A3 digite h e na Celula A4 digite 0, dai destaque as Celulas A3 a
A4 e selecione Inserir ~ Nome ~ Definir, etc, para nomear a Celula como 'b'.
A seguir, selecione 0Arquivo ~ Salvar como, e digite "defeito1". Salvar no seu disquete. Nas
Celulas C6 a G6 digite 'a' a 'e', urn em cada Celula, Em C8 digite = xA3 - 4*xA2 + 4/(x + 5) ,epressione Enter. Isto dara urna Celula saida de - 61. A seguir, duplo clique no botao
preenchimento manual da Celula C8 para automaticamente preencher toda a coluna 'a'.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 3/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 3
A 8 C o E ; F G H
4 0
5
6 x a b c d e
7 I I I I I I8 -3 -61
9 - 2
10 -1
1 1 0
1 2 1
13 2
1 4 3
1 5 I 4 I I1 5 51 7 5
18 7
1 9 B
2 0 9
2 1 10
Note que, se voce em vez disso tiver uma coluna de - 61's entao sua planilha ainda estarano Modo 'Calculo Manual'. Se voce quiser recolocar 0Modo 'Calculo Automatico ' entao
selecione Ferramentas ::::)Op~oes ::::)Tab Calculo,
Internacional S~IY~r
EX'ib ir C alcu lo_- : I Editar
( :6 Icu ' lo - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
r. _A ~tomatico
ru tgma t ico , e&ceto tebe l es
Ve ri f i ca , ao d e e rr os
-Geral I tran<i,ao
Verificar or togr af i~
I Listas I GraFico
Segur~n,a
J Co r
r Manual
p: F :eca icu la r en tes de se lve r
~~ILul~r~gor~ (fog)
ca!cu lar p l< ln i lha-
r!tera,aoill' ma !, d e i te rd ,0 5 e< : ~
Op ,0 5e sd e p as ta d e t re b sl ho - - -- - -- - -- - -- - -- - -- - -- -
W . At ual i , - ~r r e fe r enc l as r emo tas
rr eei 5ao con forme ex ib i d 0
ri _i st em~de d et e 190 4
Ii7 Sa lva r va lg_ re<d05 v incu lo , e x te r nos
r\c !)_ i tGrrotulos em form uI~s
O K Canee lar I
e dai clique na opcao "Au tomatico" seguido por OK. Se voce nllo quiser mudar de volta
entao simplesmente pressione a Tecla de Funcao Especial F9 uma vez - mas sugiro que
voce mude de volta.
Agora, selecione Arquivo::::) Salvar como, e digite "defeitola". Salvar para 0 seu disquete.
A seguir, pressione A1t+Tecla de Funcao Especial FII, isto e , A1t+FII. Isto abre uma janela
Visual Basic for Applications (VBA) na qual nos iremos escrever a funcao anterior.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 4/37
Bertolo Umtutorial sobre programa!;80 Excel com Visual Basic for Applications 4
.. Microsoft Visual BHic - glitch' < I . . xis ~l[] L R l1l,rquivo !;ditar Exit!ir Lnserir Fg_rmatar Q_epurar E&ecutar Ee"ament~s ~uplementos 2anela ilj~da
~ 1 ! J ~ ' 1 i i i - l ! . J i ~BrMll~ h • II .~llM~W;t"ICY)1
Dig i te urna pergunt a
Prole to - YBAProjec t C J
E ll AddInMgr (Addinmgr . •da)
; ! J & ; ! : atpvbaen.Kls (ATPYBIIEM.:
1 i J · · · & ; ! :funcres (FUM[RE5.XLA)
1 i J " ' ~ Interne t_Assistant (HTMI
1 i J & ; ! : YO_Ellilmples (VbeKmpls.,
o o & ; ! : YO_Made_Ea~)' (vbhelp . .. r
S ! ! & YOAProjed (glit~h la. ll ls)
: B ·· ·@ ! J Microsoft Ex( el Obje tos
:-i!:] E;taP~; ta _de _tr~b~lh
. - i I r l pian 1 (p Ian1 )
L i I r l PlanZ (PlanZ)
: - - i I r l PI~n3 (p l~n3)
o o , , · ~ YOAProject ( lapp_Mat . x l'
v~ior Ti 0 Contexto
,op., edades - Plan 1 J R I
PIa nI Workshee t
IIlf-ab&ico I Cateqonzedo I'Planl
DisplayPageBreaks False
DisplayRightToLef False
En~b leAutoFi lte r Fal se
Enab leCaku l.t ion True
In.spel;oes de 'Y.ariaY'el§ C I
Enabl eO utlin ing Felse
EMblePivothble Fal<e
E nabl eSelection 0 - x INoRes trictio
Name Planl
5"oIlAre~
Selecionar Inserir = > Modulo, isto abre a jane1a na qual nos digitamos 0 codigo seguinte:
(Lembre-se que 0 editor preenchera muito deste codigo automaticamente - terminado nos
pressionamos ou 0botao Enter ou a tecla Tab no momenta apropriado.)
Function f(x As Single) As Single
f= x A 3 - 4 * X A 2 + 4 / (x + 5)End Function
Clique no leone Excel na Barra de Ferramentas Padrao para retornar a planilha Excel e agora na
Celula D8, digite nela = f(x) , e pressione Enter. 0que sera mostrado e a mensagem de erro
"#VALOR". Apesar deste erro, de urn duplo clique em preenchimento manual da Celula parapreencher com a formula. A seguir, na Celula B4 digite = f(h) , e pressione Enter. Desta vez voce
devera ter 0valor 0,8 na Celula (Se voce tiver novamente 0"#V ALOR" entao pode ser porque
nao alterou 0argumento da funcao f() de 'x' para 'h').
Repetir esta operacao anterior mas desta vez na Celula C24. Devera dar 0,8. Assim, celulas
simples nomeadas nao experimentam nenhurn problema com User Defined Functions (UDF's)
Primeiro 'Fixit'
Na Celula E8 digite =f(VALOR(x)) , e pressione Enter (Maiusculas nao sao necessarias) e de urn
duplo clique em preenchimento manual da Celula para preencher toda a coluna com a formula.
Isto funciona, mas nao e nem particularmente sucinto nem matematicamente claro.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 5/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 5
Segundo 'Fixit'
Na Celula F8 digite = f(x+O) , e pressione Enter e de urn duplo clique no preenchimento manual
da Celula para preencher toda a coluna com a formula. Isto funciona mas novamente ela poderia
ser confusa matematicamente.
Terceiro 'Fixit'
Na Celula G8 digite = f(x + h) , e pressione Enter e de urn duplo clique empreenchimento manual
da Celula para preencher toda a coluna com a formula. Isto funciona e da a resposta correta para
aquilo que esperamos de f(x) (porque no presente h e colocado igual a zero). Agora isto pode roo
ser exatamente 0 que nos estavamos atras, MAS 0 fato que a combinacao de urn Intervalo
Nomeado de valores com urna Celula Nomeada colocada no argumento da nossa UDF tera muito
uso posteriormente, e dai tera maior significado matematico, Sabemos agora que urna tal UDF
d ta be tid L t t d C'1 lao e m em re omar va ores eum nervao e eu s.
A B C D E F G H
3 h
4 0 0,85
6 x
7
8 -3 -61 #VALOR! -61 -61 -61
9 -2 -22,66667 #VALOR! -22,66667 -22,66667 -22,66667
10 -1 -4 #VALOR! -4 -4 -4
11 0 0,8 #VALOR! 0,8 0,8 0,8
12 1 -2,333333 #VALOR! -2,333333 -2,333333 -2,333333
13 2 -7,428571 #VALOR! -7,428571 -7,428571 -7,428571
14 3 -8,5 #VALOR! -8,5 -8,5 -8,5
15 4 0,444444 #VALOR! 0,444444 0,444444 0,444444
16 5 25,4 #VALOR! 25,4 25,4 25,417 6 72,36364 #VALOR! 72,36364 72,36364 72,36364
18 7 147,3333 #VALOR! 147,3333 147,3333 147,3333
19 8 256,3077 #VALOR! 256,3077 256,3077 256,3077
20 9 405,2857 #VALOR! 405,2857 405,2857 405,2857
21 10 600,2667 #VALOR! 600,2667 600,2667 600,2667
22
23
24 0,8
Note que f(I *x), f(2*x), f(xl5), etc, ou f{p*x), f{xlq), etc, tambem retomaria intervalos de valores
cheios. Para escolhas apropriadas de p e q - util para transformacao grafica.
Portanto, no momento sugiro que voce realmente digite a funcao em termos de x como voce fez
na coluna C e dai copie esta formula para baixo. Dai entao urn clicar em qualquer Celula neste
intervalo mostrara a voce a forma matematica da funcao na barra de formula, neste caso = x/\3-4*x/\2+4/(x+5). A seguir, abra 0 editor VBA com 0A1t+FII e defina a mesma funcao nurn
modulo, e entao isto sera 0 que voce usara nurn trabalho posterior em planilha (estabelecido que
voce estara usando urn argumento para a funcao, exceto urn unico 'x' - como foi discutido em
profundidade acima).
Lembre-se novamente que para uma Celula Simples Nomeada, ao inves de urn Intervalo de
Celulas Nomeado entao a correta entrada de celula = f(x) avaliara a func;ao corretamente sem
nenhurn dos 'fixes'acima
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 6/37
Bertolo Umtutorial sobre programa!;80Excel comVisual Basicfor Applications 6
A Inconveniencia
Abra 0Excel, alinhe Centralizar todas as Celulas,
Selecionar Arquivo = > Salvar como, e digite "vba_junc". Salve para 0 seu disquete.Na Celula B4 digite x, e em B5 digite 0 valor 2. De a esta Celula de dados 0Nome x.
Na Celula C5 digite = ACosh(x) + x -3, e pressione Enter, a celula devera ter 0 valor 0.316958.
A seguir, pressione Alt+Tec1a de Funcao Especial Fll, isto e , Alt+Fll. Isto abre a jane1a Visual
Basic for Applications (VBA) na qual nos agora iremos escrever a funcao anterior.
Selecionar Inserir = > Modulo, isto abre a jane1a na qual nos digitamos 0 codigo seguinte:
Function f(x As Single) As Single
f= ACosh(x) + x -3
End Function
Clique no leone Excel na Barra de Ferramentas Padrao para retornar a planilha Excel e agora naCelula D5 digite = f(x) , e pressione Enter. 0que sera mostrado e a seguinte mensagem de erro
abaixo.
MicrDsDft V i s u a L Basic X
Erru de,compila> ao :
's ub ' o u 'FunctioA' n~ o definida
A causa deste problema e que a linguagem VBA nao sabe 0 que ArcCosh de x significa,Diferentemente da planilha Excel verdadeiramente. De fato 0VBA tern uma surpreendente
colecao de funcoes matematicas conhecidas 'pre-programadas' nele. Para ver uma listagem das
funcoes matematicas disponiveis no VBA primeiro obtenha a tela VBA usando Alt+F 11, dai em
qualquer lugar dela abra uma jane1a (modulo) digite vba.math. , e ao digitar 0ultimo ponto (ponto
fmal!) voce tera as funcoes disponiveis mostradas numa lista 'pop-up '. Como voce vera, as coisas
sao muito limitadas, entretanto, onde existe uma existira uma maneira!
vba·I'IClth.
'· '~Abs"~""Aln
" ,," C os
~ "" E xp" ,," L og
' '' '' " " Randomim
"'~Rnd
A listagem na proxima pagina da muitas funcoes matematicas uteis reescritas em termos de
algumas das funcoes VBA disponiveis, Note que numa expressao tal como:
Arccosh = Log(x + Sqr(x * x-I)),
Eu tenho deliberadamente deixado fora 0 argumento da funcao atual, Isto e devido a como ele
deve ser implementado no codigo Modulo do VBA. Por exemplo, considere 0 codigo Modulo
dado abaixo, ambos as saidas dao 0mesmo valor, aquela de cosh" (x) ou arc cosh (x):
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 7/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 7
Function f(x As Single) As Single
Arccosh = Log(x + Sqr(x * x - 1»
f= Arccosh + x - 3End Function
ou Function f(x As Single) As Single
f= Log(x + Sqr(x * x - 1» + x - 3
End Function
Eu acredito que a primeira e preferivel pois somos lembrados exatamente que funcao estamos
usando.
Agora reescreva 0 seu codigo de modulo anterior ou os dois anteriores e antes de retomar de volta
a planilha Excel selecione Executar = > Redefinir, ou simplesmente clique no pequeno quadrado
azul na barra de ferramentas. 0 proposito desta ac;ao e entrar com suas variacoes e parar 0modo
Compilador do Editor. Ao retomar a planilha, certifique-se de que a sua resposta e identica aquela
em C5. Salve seu arquivo.
I Construcao de funcoes baseado nas funcoes VBA
Sec = 1 / Cos(x)
Cosec = 1 / Sin(x)
Cotan = 1 / Tan(x)
Arcsin = Atn(x / Sqr(-x * x + 1»Arccos = Atn(-x / Sqr(-x * x + 1» + 2 * Atn(1)Arcsec = Atn(x / Sqr(x * x - 1» + Sgrujx) - 1) * (2 * Atnfl )Arccosec =Atn(x / Sqr(x * x - 1» + (Sgn(x) - 1) * (2 * Atnfl )Arccotan =Atn(x) + 2 * Atn(1)Sinh = (Exp(x) - Expf-x) / 2
Cosh = (Exp(x) + Expf-x) / 2Tanh = (Exp(x) - Expf-x) / (Exp(x) + Expf-x)Sech =2/ (Exp(x) + Expf-x)Cosech = 2 / (Exp(x) - Expt-x)
Cotanh = (Exp(x) + Expf-x) / (Exp(x) - Expf-x)
Arcsinh =Log(x + Sqr(x * x + 1»Arccosh =Log(x + Sqr(x * x - 1»Arctanh = Log«1 + x) / (1 - x) / 2
Arcsech =Logr(Sqrf-x * x + 1) + 1) / x)Arccosech =Log«Sgn(x) * Sqr(x * x + 1) + 1) / x)Arccotanh =Logttx + 1) / (x - 1» / 2LogN =Log(x) / Log(n)
Note que nem todas as funcoes acima estao
tambem disponiveis como funcoes padrao - !'_rocurepor uma fun,ao:
no Excel. Para encontra-las primeiro mude- - ,------------------ !r
se para a pasta Excel e entao clique emOu selecione uma ceteoorte: l lMatematica e triqonometrice : : : : : J
qualquer Celula limp a e dai selecione Inserir -_ 2_elecione uma fun~ao:
=> FUn!;8o. Isto mostrara a Caixa de Dialogo
"Inserir Fun~ao", como mostrada ao lado. - ACOS
ACOSH
Dai escolha "Matemdtica e trigonometrica" ALEATORIO . . : . lALEATORIOENTRE
e role pelas funcoes disponiveis, Aquelas ~ AB5(num)
que nlio estiverem na lista, tais como - Retorna 0valorebsoluto de ur n numer.o, ur n numero semsinal.
cosech" ( X ) , podem ou ser entradas como -
uma UDF, como fora descrito acima, ou ~ -Aj-Uda-S-ob-re-est-af-un-ca-o------;:==OK==:::;--c-an-ce-Iar----;
como a forma equivalente correspondente:
-------------------Inserir fun~a.o 12l[gJ
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 8/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 8
Logf(Sgrux) * Sqr(x * x + 1) + 1) I x)
Mas, note que as alteracoes seguintes sao necessarias para usar dentro de uma pasta do Excel ao
inves de usar no VBA, a saber:
Log«Sign(x) * Sqrt(x * x + 1) + 1) I x)
Pois a pasta Excel tern diferente 'chamadas' para a me sma funcao - confuso ainda? Pessoalmente,
eu iria a uma UDFpara esclarecer melhor 0 trabalho.
A Application.WorksheetFunction
Antes de voce comecar a pensar que tern de saber tudo, e mais alguma coisa, a respeito da construcao
das formulas acima e que tudo esta completamente alem de voce, 0Excel tern uma maneira muito
simples, apesar da abundancia delas de 'driblar' quaisquer funcoes encontradas na Planilha Excel ecolocando-as no codigo VBA. 0 codigo de modulo acima para a funcao ArcCosh precisaria em vez
disso ser escrito:
Function f(x As Double) As Double
f= Application.WorksheetFun«;ao.Acosh (x)
End Function
Note agora que a funcao de planilha 'Acosh' deve ter 0 seu argurnento ajustado como urn mirnero
precisiio dupla, ponto flutuante. A importancia deste exemplo aparentemente inocuo nao pode ser
exagerada; a Application. WorksheetFunction no seu codigo devera quase sempre ser usada. 0
raciocinio existente e que seu proprio esforco em projetar uma funcao apropriada, apesar de admiravel,
quase sempre fara 0 seu codigo executar mais devagar epode tambem conter erros.
Note que quando voce esta digitando a frase "Application. WorksheetFunctionAcosh(x}" entaorealmente voce so precisara digitar o final '(x)' acredite ou nao! - veja os estagios abaixo!
(1) Clicar com 0botao direito apos 0sinal
'='. Clique ou em "Listar
propriedades/metodos" ou "Palavra
completa" .
(2) Role para baixo ate a palavra 'Application'
ou selecione ou pressione 0botao 'Tab'
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 9/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 9
!)_epur" E"eLut~r Eerr~meMt" _2uplement,
II • ~ I J M - ~ 'ai ~ ( 7 ) I tn Z , C eil 5
function f i x A3 Doublel A3 Double
f~,-----------------,
End ReLor~"
C;;opiar
Colar
~ Ito r "', ,,se; do per §met ro
A:!- Ealavr~complete
------------------------, - [M l id ulo ' (C li di gg )]
' ir FQrmatar Q.epurar E!ecutar Ee rrameritas .2:uplementos
"l '"I II. ~ I l ! l! i ~ W ~ [I I tn 2,Ceil5
Ianela
i]fFunction f i x A s Douhlel A s Douhle
f - IE, @' ActlveWI nd ow
@' AetiveWorkbook
@' Addlns
,,% Ap pAetivate
@'
,_,,, Ase
"" AscB
Application
(4) Novamente digite urn ponto ".", isto
abrira urn outro menu drop-down. Similar-
mente, selecione tambem a OP9aorequerida: I I~ ,,,, ~ II • ~ ~ ~ 'eI ~
'Acosh' e dai pressione 0botao 'Tab'ou de --;::================f-;===========urn duplo clique na OP9aorequerida. I(G",r"l) = = : : J f
functi~n f(~ As Dcubl~1 As Dcubl~
I ~ Application.¥orksheetFunction .
. = - ~ Ac os
End Function .-~~
"~~And
Il£' Appllcattnn
,"_~Asc
~~~Asin
""~Asillh
(3) A seguir digite urn ponto "." ,isto abrira
urn outro menu drop-down. Agora ou role
para baixo ou apenas digite 'w' - isto rolara
automaticamente para baixo ao inicio das
OP90esque comecam com a letra 'w'.
Novamente, selecione tambem a OP9ao
requerida: 'WorksheetFunction' e dai oupressione 0botao 'Tab' ou de urn duplo
clique na OP9aorequerida.
'Ir FQrmatar [l_epurar .E"ecutar Eerrameritas .2,uplementos Jane-Ia il j~da
~ Coo I ~ II • ~ I ~ . I l 1 f 1 ¥; ~ I G ) I L n 2, C oll7
Fun~ti~n fix As D~ubl~1 As D~ubl~
f ~l\_ppli~"tion.
;@ i ' Width
End Funet ion I@ i ' Windows
;@ i ' Win dowsF orPen 5
Acosh
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 10/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 10
(5) Agora digite abrir parentese e note a
informacao que aparece na caixa. Ela the da
informacao importante com respeito a
quantos argumentos a funcao pode aceitar e
quais os argumentos a digitar devem ser
usados.
(6) Finalmente digite na sua funcao 0argu-
mento falso - ele nao precisa ser x - e feche
o parentese,
Assim somente (x) precisa ser digitado!!
g_epurer, .E3:e<ut~r !: _ er r~", eri t~ ; _~uple", entos
~ 00 I ~ II • ~·I&i [jj1W ~ ~: tn 2, Col4i
i J fFunction fix As Double) As Double
f ~Applicati~n.U~~kgbeetFun~ti~n.Ac~gh(
Ac os ~ ( ,1 '1 1 " 0, 1As O ouble) A s D.oub l e I
En" Fun~cion
II • ~ I % N ~ W ~ l f I l Ln3, Ceil 1
f ~ Appli~ation.UorksheetFunction.Acoshlx)
End Function
Finalmente, tenha consciencia que existirao vezes em que voce tera de escrever sua propria funcao
personalizada, possivelmente porque ela nao esta nem presente na Planilha Excel e nem nas listas de
funcoes VBA. Urn exemplo matematico simples 6 a Secante Hiperbolica. Aqui entao, a Tabela na
Pagina 7 acima 6 de uso.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 11/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 11
Programando 2
Botoes de Controle na Planilha
Abra 0Excel, selecione Arquivo::::) Salvar como, e chame 0novo arquivo "Prog2a" de seu
disquete. Selecione Exibir::::) Barra de ferramentas ::::)Visual Basic. Isto coloca os leones do
Visual Basic na Barra de ferramentas, Quer dizer:
I - ' ~ ~ : : s e g u ran~9' .Abra 0Editor VBA.
(0 mesmo que
Alt+Fll)
: _ ::~!M : I QO
/ Coloque a Folba Excel
.---- ----, no Modo de Projeto -
Isto permite a edic;ao dos
botoes na planilha
Botao de Comando
Abra a Caixa de Ferra-
mentas de Controlo do
VBA, onde os Bowes de
Controle estao armazena-
dos.
Clique na Caixa de Ferramentas de Controle, isto da mais urn menu que pode ser mostrado com
as outras barras de ferramentas ou pode ficarjlutuando livremente na pasta.
Clique no icone de Botao de Comando e mova 0 cursor do mouse (que se parecera com uma cruz
frna) para 0 centro da Celula A2. A seguir, mantendo pressionado 0botao esquerdo do mouse
arraste diagonalmente para 0 centro da Celula C5 e va embora. Isto criara para voce urn botao de
comando dentro da planilha Excel. Ele sera chamado "CommandBotiiol". A seguir, na Celula B8
digite 'a' e em B9 digite 3. Destacar as Celulas B8 e B9 e selecionar lnserlr ee Nome::::) Definir,
etc, para dar a B9 0Nome 'a'. Note que entrando com valores nestas Celulas tern 0 "greyed out" a
VBA e a Barra de Ferramentas Caixa de Ferramentas de Controle - elas retornarao tao logo as
entradas na Celula tenham sido feitas e voce ainda estara no modo de projeto. Agora, ainda
enquanto no Modo de Projeto, de urn duplo clique no CommandBotiiol. Isto the levara a tela doEditor do VBA, e voce podera ver algo entre as linhas das Caixas "Project' e "Propriedades"
num lado da sua tela como mostrado na pagina seguinte. Nosso interesse e com as Propriedades
que nos queremos que 0 novo botao tenha.
Veja uma figura da Caixa de "Propriedades" abaixo para detalhes, mas na linha de topo - a linha
'(Name)' -mude Commandllotao l para 'cmdTeste'. Similarmente, na linha 'Accelerator' digite'T' e na linha 'Caption' digite 'Teste'. Para entrar com esta ultima alteracao, pressione Enter -
sempre faca isto.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 12/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 12
Prolect - VBAPrOlect E 3
IE···· TbRun97Project (TBRUN97.:U5)
S···~YBAProject (Butbon l.xls)
i B · · ·@ § ! MicrosoFt Excel Objects
• . . . . . I m Sheetl (Sheet l )
! 1 m SheetZ (SheetZ)
i · · · · · ! I I D ,• • • "L . .. _ ~ This~or~ook
Mudepara
"cmdTeste"
Janela VBA Project
Properties· CommandButton1 E 3
-~--- -
(Name)
Acceler ator Digite "T"AltHTML
AutoLoad False
AutoSize
BackColor
BackStyle
Caption
Enabled
Digite "Teste"alse
True
Font IArial
ForeColor • &H80000012&
Height
1
37
.
5
LeFt
Locked True
Mouselcon (None)
MousePointer 0- fmMousePointerDefaultPicture (None)
asfc - glitch1 ... ls - [Modulo1 ICcldigol]PicturePosition
Placement
7 - fmPicturePositionAbolieCenter
FQrmatar Q_epurar E"ecutar Ee"
I l l i l ~6digo F7 ~ ~~ <2bj<'to Shlft-t-F7
Qefil1i~.§o 5hift+F2Single)
Ulti~a posrceo Ctrl+Shift+FZ xA ;:: +
'en P,,<qui<ador de cruetc F2
~ Jenele '\IeriFica,ilo tmc:diata' Ctrl+G
IE] Jai l el.~ '.. .. .r i .§vei ~ [c,:c.i :: :'
c % c l Janela "Inspes:ao de ~ariaveis'
~ilh.3de chemades. .. Grl+F
Ctrl+R
~ Jenele 'P[opric:d.3des· F4
~ I:al~ade Ferrementes
ordem de tabula,ao
Barr as de E e . . - r ament as
I§I Mierosott Excel Alt+Fll
2
PrintObject True
Shadow IFalse
TakeFocusOnClick True
Top 118.75
Width 1102,75
WordWrap False
Note que se voce for sempre ao Editor VBA enao puder ver na tela as janelas ou do Projeto ou
das Propriedades mostradas acima, entaoselecione por outro lado na tela Editor VB
Exibir da barra de ferramentas e clique mambas opcoes 'Project Explorer' e 'Janela de
Propriedades' .
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 13/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 13
'4 i\ lq uiv o ~ di ta r E xi ~ir [ n5 8r ir FQ rm at ar Q e pu ra r E oe cu ta r E er rame nt as ~ up leme nt o, , an el a A j~ da
l l ! l l l i J • ~ I : 1 0 ~ IH " I " ' r- . ~ II • ~ I ~ ~ W ~ I ( 1 ) I
_ Ii' xNajanela do Editor voce
devera ter a subroutine
seguinte:P rol e to - VBAP rO lec t D
E fl · A d dl nM g r ( A ddi nmg r. H la )
~ . .~ a tp v baen. sl s ( ATPVBAE~ .:
E f l~ f une res (FU~(RE5 .X lA )
E f l·~ I nt e rn e t_Ass is ta n t (H IM I
E f l~ VB_EHampl esvbeHmp ls . ,
i : B ! ' i VB_Made_Easyvbhelp.HI
End Sub
I conU l l a ndBut t o n1
Private Sub CommandButtonl c u e
Clique nesta lista flecha na
Caixa de Objetos e selecione
Clique na lista na Caixa de Objetos e selecione cmdTeste na lista drop-down. Isto
automaticamente abrira a Subroutine cmdTeste que esta associada com urn Clique do Botao na
planilha Excel. Portanto, qualquer c6digo que estiver digitado nesta Subroutine sera executadocada vez que voce c1icar no botao agora chamado Teste, que fora embutido na planilha.
Digite 0c6digo seguinte na Subroutine:
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 14/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 14
Private Sub CommandButtonl_Click()
End Sub
Private Sub cmdTest_Click()
Dim Transl As Range
Dim Trans2 As Range
Dim Trans3 As Range
Dim Trans4 As Range
Dim i As Integer
Set Transl Range ("B9")
Set Trans2 [E9]
Set Trans3 Range ("a")
Set TrLL"_:l'l - [LL]
For i - 1 To 4
If i - 1 Then
Cells(13 - i, -4 + i) .Value Trans 1 " ' 3 !-4
Elself i - 2 Then
Cells (13 - i, -4 + i) .Value 2 + Trans2
Elself i - 3 Then
Cells (13 i, -4 + i) .Value - 3 '" Trans3
Else
Cells(13 i, -4 + i) .Value Trans-4 - 3
End If
Ce lIs (13 + .i, "E"). Value Tranal
Next i
End Sub
A declaracao "Dim Trans} As Range" diz ao VBA que estamos definindo 'Trans}' como sendo
urn 'Range' do tipo variavel, que ele pode aceitar valores de Celulas simples ou de multiplas
Celulas da planilha. "Dim i As Integer" diz ao VBA que estamos definindo 'i' como uma variavel
'Integer', que neste momento, e para usar mais tarde no programa. As quatro linhas:
Set Transl = Range("B9")Set Trans2 = [B9]
Set Trans3 = Range("a")Set Trans4 = [a]
sao quatro maneiras possiveis em que 0programa pode 'ler' 0 valor da Celula B9 (que tambem
tern 0Nome 'a' associado a ela) da planilha Excel que pode entao ser usado e manipulado dentro
do programa. 0 'Range' da funcao pode aceitar muitos tipos de argumentos, nao apenas aqueles
de celulas simples. Por exemplo, outros tais argumentos aceitaveis poderiam ser "B9,Bl2" ou
"A3:El9". Em particular veja a Subroutine cmdLimpar na proxima pagina,
As linhasCells(13 - i, 4 + i).Value = Trans l ?3 /4,
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 15/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 15
Cells(13 + i, "B").Value =Transl,
mostram duas maneiras em que os valores do programa (possivelmente alterado) podem ser
transmitidos de volta a planilha. Note que 0primeiro argumento na funcao 'Cells' e a coordenadaLinha eo segundo e a coordenada Coluna, que pode ser ou urn mimero ou urna letra.
Retome a folha Excel e saia do modo Design, nos veremos agora como limpar a planilha dos
resultados anteriores.
Clique na Caixa de Ferramentas de Controle e clique no [cone Botao de Comando e mova 0 cursor
do mouse ao centro da Celula C2. A seguir mantendo pressionado 0botao esquerdo do mouse
arraste diagonalmente para 0 centro da Celula E5 e va embora. Isto criara a voce urn segundo
botao de comando dentro da planilha Excel. Ele sera chamado "Commandflotao?", urn duplo
clique neste botao para abrir 0Editor VBA.
Mais uma vez, da Caixa "Propriedades", na linha '(Nome)' - mude Commandllotaoz para
'cmdLimpar'. Similarmente, na linha 'Accelerator' digite 'C' e na linha 'Caption' digite
'Limpar'.
Clique na lista na Caixa de Objetos e selecione cmdl.impar na lista drop-down. Istoautomaticamente abrira a Subroutine cmdl.impar. Na Subroutine cmdl.impar digite 0codigo
seguinte:
Private Sub cmdLimpar _Clickt)
Range("B 14:BI7,EI2,Fll,GI0,H9").Clear
End Sub
Retome a folha Excel, saia do modo Design e teste 0 seu trabalho alterando 0valor de "a" na
Celula B9 e dai salve-o. Tambem Salvar como 0arquivo "Prog2b" no seu disquete (disquete).
Neste proximo arquivo, "Prog2b", introduziremos mimeros Randomicos,
Inicialmente, redimensione seus botoes "Teste" e "Limpar" primeiro entrando no modo Design naBarra de ferramentas do VisualBasic- tome cada botao de comprimento de urna unica celula e
largura de duas celulas de modo que 0par cubra inteiramente as Celulas B2 ate C3. Crie urn outro
Botao de Comando e coloque-o sobre as Celulas D2 e D3.
Ele devera ser chamado "Commandbotao.i". Clique na Celula B5 e entre com a palavra
"Superior", clique na Celula B6 e entre com a palavra "Inferior".
Entre com 15 na Celula C5 e - 7 na C6.
Clique em C5 e dai clique na Caixa de Nome. Digite 'U' na Caixa Nome e pressione Enter.
Similarmente, clique em C6 e dai na Caixa Nome. Digite 'D' na Caixa de Nome e pressione
Enter. A seguir, se voce ainda estiver no Modo Design, de urn duplo clique neste botao para abrir
o Editor VBA, e na Caixa "Propriedades", na linha '(Nome)' - mude Commandlsotaos para
'cmdRandom'. Similarmente, na linha 'Accelerator' digite 'R' e na linha 'Caption' digite
'Random'. Clique no lista na Caixa de Objetos e selecione cmdRandom na lista drop-down. Istoautomaticamente abrira a Subroutine cmdRandom. Na Subroutine cmdRandom digite 0
codigo seguinte:
Private Sub cmdRand _Clickt)
Dim RandValue As Integer
Dim Upper As Range, Lower As Range
Set Upper = [U]
Set Lower = [D]
Randomize.RandValue = Intr(Upper - Lower + 1) * Rnd + Lower)Cells(9, "B").Value =RandValue
End Sub
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 16/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 16
Note que devemos digitar no trabalho "Randomize" antes de qualquer codigo como este selecione
urna 'semente' randomica para a Funcao Random Number Generator, Rnd.
o codigo
RandValue = Int((Upper - Lower + l) * Rnd + Lower)
Retoma urn valor inteiro no intervalo dado pelos valores nas Celulas C5 e C6.
Retome a folha Excel, saia do modo Design e teste 0 seu trabalho alterando 0 valor de "a" via 0
botao 'Random'. Salve seu trabalho, e entao selecione 0 Arquivo ~ Salvar como "Prog2c" no seu
disquete.
No novo arquivo "Prog2c", modifique 0c6digo no laco, como mostrado abaixo, na Subroutine
cmdTest- 0que acontece?
For i = 1 To 4Ifi = 1 Then
Cells(l2 - i, 4 + i).Value = "a A 3 /4"
Cells(13 - i, 4 + i).Value = Transl A 3 /4
Elself i = 2 Then
Cells(l2 - i, 4 + i).Value = "a+2"
Cells(13 - i, 4 + i).Value = 2 + Trans2
Elself i = 3 Then
Cells(l2 - i, 4 + i).Value = "3*a"
Cells(13 - i, 4 + i).Value = 3 * Trans3
Else
Cells(l2 - i, 4 + i).Value=
"a-3"Cells(13 - i, 4 + i).Value = Trans4 - 3
End If
Teste 0 arquivo e salve seu trabalho. Tambem selecione 0Arquivo ~ Salvar como "Prog2d" no
seu disquete.
Para 0pemiltimo exercicio do arquivo "Progsd" , erie mais dois Botoes de Comando e coloque-os
no topo das Celulas J2 a K3. Na Celula J5 digite 6 e pressione Enter, agora clique de volta na
Celula J5 e dai clique na Caixa de Nome. De a esta Celula 0Nome "Semente".Destacar as Celulas J6 ate L8 vazias e clicar na Caixa de Nome novamente; de a este bloco de
Celulas 0Nome "Bloco".
De urn duplo clique no botao sobre as Celulas J2 are J3 e duplo clique neste botao para abrir 0
Editor VBA, e na Caixa "Propriedades", na linha '(Nome)' - mude para 'cmdPreencher'.Similarmente, na linha 'Accelerator' digite 'F' e na linha 'Caption' digite 'Preencher Celulas'.
Digite 0 seguinte codigo:
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 17/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 17
Private Sub cmdPreencher _Clickt)
Dim i As Integer, j As Integer, count As Integer
Dim StartValue As Rangecount = 0
Set StartValue = Range("Semente")
Fori= 10 To 12
For j = 6 To 8
Cells(j, i).Value = StartValue
StartValue = StartValue + 1count = count - 1
Nextj
Next i
Cells(5, IIJII).Value= StartValue - Abs(count)
End Sub
Adicione estas linhas extras em cmdTest
Retome it planilha Excel agora e no Modo Design de urn duplo clique no botao sobre as Celulas
K2 ate K3 para abrir 0Editor VBA, e na Caixa "Propriedades", na linha '(Nome)' - mude para
'cmdLimparBloco'. Similarmente, na linha 'Accelerator' digite 'C' e na linha 'Caption' digite'Limpar'. Digite 0c6digo seguinte:
Private Sub cmdLimparBloco _Clickt)
Range (liBloco ").Clear
End Sub
Teste a planilha e salve0
seu trabalho.o que acontece se a linha CelulasrS, IIJII).Value = StartValue - Abs(count) for perdida do c6digo
na Subroutine cmdPreencher ?Teste 0arquivo e salve seu trabalho.
Selecione tambem Arquivo ::::)Salvar como "Prog2e" no seu disquete.
Para 0exercicio fmal usando 0arquivo "Prog2e" crie mais dois Botoes de Comando e coloque-os
no topo das Celulas 114 a 115 e 118 a 119.
A seguir destaque as duas Celulas 116 e 117, e com 0ponteiro do mouse em algum lugar neste
intervalo selecionado clicar com 0botao direito do mouse. A seguir, escolha Formatar Celulas ...
::::)Tab Alinhamento no menu drop-down, e marque a caixa "Mesclar celulas", Tambem na Tab
Alinhamento mude ambas caixas de texto Vertical e Horizontal para "Centro". Na Tab Font mude
o Tamanho para 20 pontos. Clique OK.
De urn clique duplo no botao sobre as Celulas 114 are 115 e urn duplo clique neste botao para abriro Editor VBA, e na Caixa "Propriedades", na linha '(Nome)' - mude para 'cmdUp'.
Similarmente, na linha 'Accelerator' digite 'U' e na linha 'Caption' digite 'Up'. Digite 0 c6digo
seguinte:
Private Sub cmdUp _Clickt)
Range("I 16").Activate
ActiveCel1.Value = ActiveCel1.Value + 1End Sub
Similarmente, de urn duplo clique no botao sobre as Celulas 116 are 117 e de urn duplo clique
neste botao para abrir0
Editor VBA, e na Caixa "Propriedades", na linha '(Nome)' - mude para
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 18/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 18
'cmdDown'. Similarmente, na linha 'Accelerator' digite 'D' e na linha 'Caption' digite 'Down'.
Digite 0 codigo seguinte
Private Sub cmdDown _Clickt)Range("I16").Activate
ActiveCel1.Value =ActiveCel1.Value - 1
End Sub
Retorne a planilha Excel e, mais uma vez fora do Modo de Projeto, clicar no botao (ou mantenha
pressionado 0botao "Alt" e pressione ou 'U' ou 0 'D') para ver 0 que acontece.
Como voce modificaria este codigo para variar 0passo incremental por qualquer outra quantia
que possa ser alterada de dentro da planilha Excel?
S lanilh d ' t fi t da abaiapam a evera mon ar a igura mos ra aa arxo:A B C D E F G H I I J K L M
1 I
2Ieste Limpar Bandom i Preencher Limpar
34
5 suoertor 15 66
6 Inferior -7 66 69 72
7 67 70 73
8 a a-3 68 71 74
9 -4 3·a -7
10 a+2 -12
11 a'3/4 -2
12 -16
13
14 -4],!p I
15 -4 I16 -4 27 -4
18Q.own i
9
20
21
22
23
24
25
26
27
28
29
30
Programando 3
Intervalos Dinamicamente Nomeados e Atualiza'tao Automatica de Grafico - 0 Poder doGravador de Macro.
Urn Intervalo Dinamicamente Nomeado e aquele em que 0 tamanho nao foi ajustado mas ao
inves dis so ele se altera correspondentemente com 0mimero de Celulas colocadas nele. Ele pode
ser redimensionado em ambos os sentidos, isto e, tornado maior ou menor, de acordo com 0
escolhido. Se urn grafico e desenhado usando dois tais intervalos entao ele sera visto se alterar
dinamicamente ou quando urn novo ponto (linha de dados), ou quando urna sequencia de pontos,
e adicionada ou subtraida.
Abra 0Excel, centralize justificado todas as Celulas e salve 0 arquivo como "Prog3a" em seu
disquete.
Destacar Celulas B2 ate B3 e selecionar Formatar ~ C61ulas ~ Tag Alinhamento, e dai alinhar 0
texto Centralizado em ambos Horizontal e Vertical e tambem marque a Caixa Mesclar celulas. Na
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 19/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 19
Tab Font mude 0 Size para 16, e dai pressione OK. Destaque as Celulas C2 ate C3 e repita 0
processo.
Na Celula B2 (B3 foi absorvido em B2 agora) digite x, e na Celula C2 digite y. Destacar estas
Celulas aurnentadas e na Barra de ferramentas Formatar se1ecione 0 [cone Borda para bordasexternas e bordas intemas nas Celulas,
Para configurar 0 Intervalo Nomeado dinamicamente
Se1ecionar Inserir = > Nome = > Definir ... Na caixa de entrada de texto "Nomes na pasta de
trabalho:", digite x. Na caixa de entrada de texto "Refere-se a:", digite
= DESLOC(P1anl !$B$4;0;0;CONT.VALORES(P1anl !$B:$B)-l)
Clique Adicionar.
Simi1armente para os y's, se1ecione Inserir = > Nome = > Definir ... na caixa de entrada de texto"Nomes na pasta de trabalho:", digite y. Na caixa de entrada de texto "Refere-se a:", digite
=DESLOC(P1anl !$C$4;0;0;CONT.VALORES(P1anl !$C:$C)-l)
Clique Adicionar.
Ilefinir nome ~ L R J
y O K -
NQ.mes;na pasta de trabalhQ:
. . .Fechar
a_diciona~
!;.xcluir
B.efere-s;e a:
c: C-1
Na Celula B4 digite - 5 e preencha are 10 com incrementos de uma unidade. Na Celula C4 digite
= x/\2 - 4*x, e pressione Enter. 0valor na Celula C4 devera 1er45, em seguida de urn duplo
clique em preenchimento manual para copiar a formula para baixo. Clique em qua1quer Celulavazia para remover e se1ecionar a co1una 'y'.
Clique no Assistente de grafico da Barra de Ferramentas Padrao e escolha Dispersao XY , e clique
a seguir Avancar. Se1ecione a Tab sequencia na 2a janela Assistente de grafico e clicar no botao
"Adicionar" .
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 20/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 20
Pa r. a c r ie r u rn graFi~o! c li que em 'Acl ic io na r ' p e r- s ad ic io nar u rns
se q " en cia d e d a do s. D e po i< , d ig ite a s in Fo rma~6e"da < eq u en c iaOIJ insira reterendes de celulas nes celxes 'Nome' evelores',
Dades de orie,eM I T ! X
5.equencias
J 1 Avam;ar '? <;;_oncluir
Intervalo de dad os S eq uencia
-10 -5 10
NO[! le:
velores de '6:
V a l o r e < de ' '{ :
.;: 'Loltar 1 1 Avam;ar)- <;;_onclui'
Clicando no botao "Adicionar" voce vera a palavra" eqOencia1" aparecer na caixa de texto,
prosseguindo digite os intervalos X e Y mostrad e entao clique em Concluir. Voce devera agorat ' fi I' C' d L d "8 . 1" . D I tr seu gra lCO, se ecionar a alXa e egen a equepcia e pressione ee e.
A B C D E \ . F G H I J
1 \.2
X Y \.3 \.4 -5 45
5 -4 3 2 '\6 -3 2 1 - ,7 -2 1 2 \.
8 -1 5 80 ]\0 0
10 1 - 360
11 2 -4 • 40 •3 - 3 • • I . SeqOencia112 ....20
13 4 0 -~ •5 5 0" •4
r - s
j••• 1 5 :~
5 61 2 - 0 o 5 1~
16 7 2 1
17 8 3 2
18 9 45
19 10 60
20
Agora destaque a linha de fundo de sua coluna de dados x e y, ela devera ser Celulas B19 a C19.
clicar no topo de preenchimento manual e com 0 botao esquerdo do mouse mantido pressionado,
arraste 0mouse are 0 indicador dizer '15', i.e. x esta em 15, e saia. 0 que devera acontecer e que 0
grafico automaticamente altera-se para 0 novo intervalo de x e y. Destacar Celulas B7 are C24 e
pressione Delete. Mais uma vez 0 grafico devera alterar-se por si mesmo. Salve seu trabalho e
tambem selecione Arquivo = > Salvar como, e desta vez salve0
arquivo as "Prog3b" no seudisquete.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 21/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 21
Preenchimento Automatleo de Celula
Na Celula E4 digite Min x, F4 digite Max x e G4 digite Passo. Na Celula E5 digite - 10, em F5digite 15 e G5 digite 1. Use uma Caixa de Nome para nomear E5, F5 e G5 como minx, maxx e
inc, respectivamente (note que nos nao nomeamos G5 "Passo" para evitar Nomes e funcoes
conflitantes mais tarde no codigo VBA).
Lembre-se de pressionar Enter depois de escrever novos Nomes na Caixa de Nomes ou e1es nao
entrarao permanentemente na planilha.
Coloque a planilha no Modo de Projeto pois agora precisamos criar dois Botoes de Comando.
Coloque-os no tapo das Celulas E2 are F3 (metade de cadalado) e F2 (metade de cadalado) ate
G3. A seguir, selecione 0primeiro botao com urn clicar do botao esquerdo do mouse, dai
enquanto ainda no topo do botao, com 0botao dire ito do mouse.
A seguir, no Menu Drop Down selecione Propriedades e na Caixa "Propriedades" mude 0
seguinte:
Nome: cmdCalc
Accelerator: C
Caption: Calcular (Mude 0Nome na face do botao)
De mane ira semelhante mas com 0 segundo botao em sua Caixa "Propriedades" mude 0 seguinte:
Nome: cmdLimparAccelerator: r
Caption: Limpar
Ainda no Modo de Projeto, de urn duplo clique no Botao "Calcular" para levar voce a Subroutine
cmdCalc (associada com 0Botao "Calcular") dentro do Editor VBA. Na SubroutineEscreva 0 codigo seguinte:
Private Sub cmdCalc _Clickf)
Dim i As Single, Count As Single, CelINurnber As Single
Dim Minx As Range, Maxx As Range, Inc As Range
Set Minx =Range ("minx ")
Set Maxx =Range("maxx")
Set Inc = Range("inc")Count = Minx
CelINumber = Int(CSng((Maxx - Minx) / Inc))
For i = 1 To CellNumber + 1
Cells(i + 3, "B").Value = CountCells(i + 3, "C").Value = f(Count)
Count = Count + CSng(Inc)Next i
Range("A1").Select
End Sub
De urna mane ira semelhante escreva 0 c6digo para 0botao "Limpar" como abaixo:
Private Sub cmdLimpar _Clickt)
Range("x", "y").Clear
End Sub
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 22/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 22
Inicialmente manteremos a equacao da mesma forma que antes,j(x )=x2 - 4x. Assim, estando no
Modo Editor do VBA selecionamos Inserir ~ Modulo, e na novajane1a Modulo digite 0 codigo:
Function f(x As Single) As Singlef= x A 2 - 4 * xEnd Function
Agora retome a pasta Excel e salve seu arquivo.
Dai mais uma vez voce estando fora do Modo de Projeto voce pode mudar alguns ou todos os
valores de Min x, Max x ou Passo, e dai clicar em um dos botoes - de qualquer forma sem
promover modificacoes ao codigo sugiro sempre clicar no botao "Limpar" antes do botao
"Calcular" .
f(Count) e realmente a funcao f, definida como
f(x) = xA2 - 4*x
avaliada em x = Count.
Isto sera reescrito num Modulo VBA posterior.
Devido ao codigo neste ter sido escrito bern espacadamente ajudar na rapidez e acredito na sua
clareza, tentativa de executar no VBA os arquivos Excel melhorados algumas vezes conduzira
mensagem de erros. Uma de tais mensagens e
Microsofl Excel E!
I [ : : : : : : : : ~ ? : ~ : ~ : : : : : : : J I
Your Formula cmteins an invalid external reference to a wotkshed.
Verify that the.path, workbook, and r.ange name or cell reference are correct! and try again,
Neste momento, neste arquivo, simplesmente clicar em OK, nenhum problema surgira, Para tentar
evitar mensagens semelhantes a um metodo muito mais completo de declaracao de Nomes,
Funcoes, Subroutines, Funcao calls, Subroutine calls, Range Declarations, Celula References,
Sheet References e assim por diante ... seja necessario, Esta precisao pela perfeicao e exigida, em
particular, quando se esta trabalhando em mais do que uma Folha de cada vez no mesmo arquivo,ou mesmo num arquivo diferente, que pode ou nao estar aberto!
Entretanto, para os nossos propositos aqui, nos estagios 'aprender logo', a brevidade acredita-se
que ajudara ate que fiquemos mais competentes com as ideias do VBA, referencias as quais
devem ser encontradas na Bibliografia.
Salve seu trabalho novamente, dai selecione Arquivo ~ Salvar como, e desta vez salve 0 arquivo
como "Prog3c" no seu disquete.
Usando 0Gravador de Macro
No arquivo "Prog3c" escolha qualquer urn Min x e Max x que voce queira mas mude 0Passo para
0,4 antes Limpar e Calcular 0novo grafico. 0que voce provavelmente notara e que as colunas x e
y parecem um pouco desarrumadas! Isto e para dizer que Celulas diferentes parecem ser avaliadas
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 23/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 23
para urn mimero diferente de casas decimais e elas nao estao centralizar justificado. Lembre-se
que a primeira coisa que foi feita com 0 arquivo original foi fazer exatamente isto, centralizar
justificando toda a planilha. Bern 0 que tern acontecido e que seu codigo VBA nao obedeceu a
formatacao feita na sua planilha Excel, assim ela precisa ser feita uma formatacao propria dentrodo codigo.
Para encontrar exatamente como efetuar as facanhas de formatacao acima, deve-se ficar algum
tempo olhando pelos livros ou atraves da jane1a ajuda. Entretanto, a ajuda esta perto do Gravador
de Macro.
o Gravador de Macro pode ser ativado selecionando-o na Barra de Ferramentas Padrao,
Ferramentas = > Macro = > Gravar Nova Macro. Voce poderia fazer isto agora e entao voce vera a
Caixa de Dialogo Gravar Macro-_ ----- --- - - -
Grd¥a.r macro ~ X
!:iome de mecro:
Ieci-3 de -3talho:ttrFt-r
8_rm.3~ener mac rorern :
Em geral e util escolher Nomes significativos para Macros mas deixe esta como Macrol e clique
OK. Voce entao vera 0Menu Flutuante e deste ponto em cada clicar do mouse, ou
arrasto, seja 0que for! Sera gravado ate que 0pequeno quadrado azul no Menu seja clicado.
Apos chegar neste estagio, enquanto estiver sendo gravado, clicar numa Celula vazia, dai
selecionar na Barra de Ferramentas Padrao, Formatar = > C61ulas = > Tab Numero, e entao nela
escolha a caixa de lista "Categoria" 0 "Numero", Mesmo se ja estiver configurada para 2 casas
decimais ajuste-a de acordo , dai ajuste-a de volta para 2 casas decimais (De modo que uma a~ao
seja feita), entao clique na Tab Alinhamento.
Mesmo se ja estivermos ajustado 0Alinhamento Centralizado na caixa "Alinhamento de texto
horizontal" ajuste-a de modo que nos nao tenhamos de ajusta-Ia novamente assim que nos
estivermos alinhados e centralizados horizontalmente. Clique em OK.
Dai clique no pequeno quadrado azul no Menu Flutuante para parar a gravacao,
Agora selecionar Ferramentas = > Macro = > Macros, ou clique Alt+F8, para obter a seguinte Caixade Dialogo:
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 24/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 24
OJar
Nome da !llacro:
jMacrol Executer
MacrolCanceler
EQitar
M~[ros em :
Desch~ao --------------
Macro gravada em 13/4/2006or B_ertolo
Com "Macro}" destacada c1icar em "Editar" para ver 0c6digo, que devera se parecer com esteabaixo:
~ub Mac::01 () c = = = ".. .-
I M a c: ro 1 M ac :r o
I Ma c:ro gra v a da em 13/4/2006 por Bertol o
S e L e c r ,i on . N 1 .U l 1 b er Fo rm a t _ ' " 0 .0 0"
lj.Jithelection
.HorizontalAlignment = xlCenter
.VerticalAlignment
.UrapText = FalsE
.Orientation = 0
.ShrinkToFit = FalsE
.MergeCells = FalsE
lj.Jith
xlBottorn
End
End Sub
Entretanto, tudo 0que precisamos dessa Macro completa sao apenas duas linhas
Pros e Cons de Macros gravadas:- Elas sao excelentes ferramentas de aprendizagem e podem
fazer muitas tarefas uteis mas elas contem muito mais informacoes irrelevantes, nao podem
competir com urn born programa VBA e elas nem podem fazer todas as tarefas que sao possiveispela programacao.
Para retomar ao nosso c6digo VBA original na Subroutine cmdCalc a fim de que possamos
modificar a formatacao da coluna poderemos ou dar urn duplo clique no leone 'Plan I' na jane1a
VBA Project ou retornar a planilha Excel, selecionar Modo de Projeto e entao de urn duplo clique
no Botao embutido "Calcular".
Assim transferindo isto para as duas linhas relevantes, anteriormente identificadas - somente urn
pouco sera modificado - e a nossa Subroutine cmdCalc original ficara com 0 novo c6digo:
Private Sub cmdCalc _Clickt)
Dim i As Single, Count As Single, CellNurnber As Single
Dim Minx As Range, Maxx As Range, Inc As RangeSet Minx = Range("minx")
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 25/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 25
Set Maxx =Range("maxx")
Set Inc =Range ("inc")
Count =Minx
CelINumber = Int(CSng((Maxx - Minx) / Inc))For i = 1 To CelINumber + 1Cells(i + 3, "B").Value =Count
Cells(i + 3, "C").Value = f(Count)
Count =Count + CSng(Inc)
Nexti
Range("x", "y").Select
With Selection.NumberFormat = "0.00"
Selection.HorizontalAlignment =xlCenter
End With
Range("Al").Select
End Sub
} C6digo Adicional
Agora retome it planilha Excel, c1icar desligar 0Modo de Projeto, pressione 0Botao "Limpar" e
uma vez mais com "Passo" ajustado para 0.4, pressione 0Botao "Calcular". Ambas as colunas x e
y deverao agora estar alinhados centralizados e ajustada para 2 casas decimais. Note tambem que
a formatacao dos eixos no grafico tern tambem mudado de acordo.
Como uma extensao, como voce reescreveria 0c6digo VBA na Subroutine cmdCalc para colocar
automaticamente uma borda extema ao redor de ambas as colunas "x" e "y" de valores?
Uma figura da planilha e mostrada abaixo no estagio final.
** QUANDO USAR ESTE ARQUIVO SEMPRE TENHA CERTEZA QUE 0 MODO DE
CALCULO DA PLANILHA ESTEJA CONFIGURADO PARA AUTOMATICO E NAO
MANUAL - CASO CONTRA.RIO 0 GRA.FICO NAO SE ALTERARA
AUTOMATICAMENTE PARA UMA NOVA ENTRADA DE INTERV ALO **D E F G H I J K
.Qalcular~
LimparII
Minx Max x Passo
-2 3 0,4
14
A B C
1
2X Y
4 -2 12
5 -1,6 8,960000038
6 -1,2 6,240000248
7 -0,8 3,840000391
8 -0,4 1,760000348
9 -5,96E-08 2,38419E-07
10 0,4 -1,439999819
11 0,8 -2,559999943
12 1,2 -3,359999895
13 1,6 -3,839999914
14 2 -415 2,4 -3,840000153
16 2,8 -3,360000134
17
18
19
20
21
22
23
24
25
1----y------:12:-+---------___~
\ 10H_-------~
\ 8~------------___1
1-------\~~16H--------~
1--------~~~,4H_--------------___1
1---------~~2H_-------~
1----~--~~~I~--~--~--~-----1
-~gT-----1--2LR~!"i1-2----'~-----'
1------------1-4~~ --
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 26/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 26
Programando 4
Nesta secao introduzimos 0 User Forms. Urn User Form e uma Caixa de Dialogo que nos
mesmos desenhamos para ser mostrada quando e onde na planilha Excel. Ela devera nos dizer
informacoes ou nos perguntar por informacoes que possam entao ser usadas para alterar valores
desde entao dentro da planilha.
Lembre-se como animar urna tangente do exercicio "Intervalos Nomeados 3" na primeira
conversa que foi atingida manualmente e repetidamente pressionando a Tecla de Funcao Especial
F9. Aqui nos projetaremos urn User Form que nos habilitara a recalcular automaticamente a
planilha toda qualquer mimero de vezes, efetivamente automatizando 0movimento da tangente.
User Form Calcular
Iniciar 0Excel, selecionar Arquivo ::::)Abrir, e abra 0arquivo "Nome3" do seu disquete.
Selecionar Arquivo::::) Salvar como, e salve isto como "Prog4a" no seu disquete.Selecionar Exibir::::) Barra de Ferramentas ::::)Visual Basic, e entao clicar no lcone Caixa de
Ferramentas de Controle. Coloque urn Botao de Comando sobre as Celulas E14 e F15 na planilha.
D e urn duplo clique neste botao para abrir 0Editor VBA. Na Caixa "Propriedades" mude 0
seguinte:
Nome: cmdAnimateGraph
Accelerator: A
Caption: Animate Graph (Mude 0Nome da face do botao)
Agora, ainda no Editor VBA, selecionar lnsarlr ee UserForm e isto abrira urna nova jane1a de
Form e urn Menu de Caixa de Ferramentas flutuante.
Clique mais uma vez no formulario e dai na janela "Propriedades" mude as seguintes
Propriedades relacionadas ao formulario,
Nome: frmCycle
Caption: Animate Graph (Mude 0Titulo no formulario)
A seguir, no Menu de Caixa de Ferramentas fiutuante leve uma Caixa Label, uma
Caixa de Texto e do is Botoes de Comando para 0 seu formulario Grafico Animado de mane ira
semelhante it dada abaixo (apes redimensionar 0 formulario com as handles)
Controlee I
~.A abl ~ IffiI.
1 7 - r. ,__J
0_jr_._W ~
~~ G]]
- ' ! : J
~
-----------------------------------Grafico AHimado ~
CommandButton 1CommandButton2
------------------- --
aiMade ferramenta!i ~
, , ,.~..... """ ""' .
, ••• ••• , , , , , •••• • , , , , , , ••••• , , ; ; i ~ ;; i • •• •••
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 27/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 27
Clicando em cada urn destes objetos de formulario de cada vez modifique-os na Caixa
"Propriedades" assim:
LabelNome: IblAnimateGraph
Caption: Entrar com 0Nurnero de Ciclos
Font: Alterar para tamanho 14
TextAlign: 2 - fmTextAlignCenter
TextBox
Nome: txtCycle
Text: (i.e. deixe-o em branco!)
Font: Alterar para 0 tamanho 20
TextAlign: 2 - fmTextAlignCenter
CommandBotaolNome: cmdBegin
Accelerator: B
Caption: Cornecar
Font: Alterar para 0 tamanho 10
CommandBotao2
Nome: cmdExit
Accelerator: x
Caption: Sair
Font: Alterar para 0 tamanho 10
Entrar c om 0 N i irnero d e
I Cicles
_ _ c _om _ e_ ~_ .ar_ --lL S.air
A seguir duplo clique no botao Comecar; isto abrira 0Editor dentro deste procedimento. Digite
nele 0 codigo seguinte:
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 28/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 28
a.xls - [frmCycLe ICadiga)] ~~~
Fg_rmatar Q.~purer E:secutar Eerramentas 2_uplementos lanela .Ai",da _ B x
I<:mdBeuill 0 i J .
:frrnCycle.Hide
Count ~ 0
~rivate Sub crndEegin_Click()
Dirn Count As Long, n As Long, k As Long
Dim step As Double, Span_x As Double
-.:
II (txtCycle.Text
n~_
Else
n ~ Clnt(txtCycle.Text)
End II
rrrr) Then
step - Range(~step~) .Value
5pan_x ~ Range("laat.x") .Value - Range(~firat.x") .Value
k - n ~ 5pan_xI
step
Do
m ~ Int(n - n ~ Count I k) + 1
Rangel"G14") ~ rn
Count ~ Count + j_
Calculate
Loop Until Count ~ Int(n ~ Span_x I atep)
:frrnCycle.SholoJ
txtCycle.Text
Range I"G14")
= ,~~.
-End Sub
~~~__j
Agora volte a jane1a formulario frmCycle e de urn duplo clique no botao cmdExit. Isto 0 colocara
no modo Editor pronto para digitar nele 0 c6digo seguinte:
Private Sub cmdExit_ Clickl)
Unload frmCyc1e
End Sub
Se voce tiver problema em encontrar a jane1a formulario frmCycle entao localize-a na jane1a
"Project" frmCyc1e e de urn duplo clique em frmCycle, veja a figura abaixo.
Proe:o-YBAProect: E:J
I±l... AddnMg..(Addnrnge-,Ha):
[$1 ..~ at:pVbc ....~n_MIs: (A TPVDAEN_=:
$..gFun" ..e. (FUr-ICRESXLA.[$..~ In:erne:_Assst:an: (HT'11
l i: J . .~ YB_EMaRlpes (vbeMRIps::1
[$1 ..~ YD_'WIade_Easy (vbhep_M."
[$..~ 'VDAProect: (Lapp_r-1a:.Kh
El ..gVBAp...,jec: (p...,g4aHs)S···~ Mc-osot ExceObeos
:-----~Sheet1(Sheet1)
:-----~SheetZ(Sheet2)
:-----~Sheet3 (Sheet3)
L--;@J ThsWockbook
S..~For-rnular-ios:
L...I§[I frrnCyde
El --~ M6dulos
L__.£!_ Module 1
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 29/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 29
Retome a planilha Excel agora e destaque as Celulas G 14 e G15. Com estas Celulas ainda
destacadas selecione na Barra de Ferramentas Padrao Formatar ~ C61ulas ~ Tab Alinhamento,
dai marque a caixa "Mesclar celulas", Tambem, certifique de que ambos alinhamentos de texto
Horizontal e Vertical foram ajustados para "Centro".Permanecendo neste Menu Formatar Celulas, clique na Tab Font e mude 0 tamanho para 20.
Finalmente, clicar na Tab Border e selecione uma linha dupla como urn Contomo. Entao clique em
OK para sair e salvar as mudancas de formatacao de celulas,
A seguir, duplo clique no botao Grafico Animado embutido na planilha Excel. Isto devera abrir 0
VBA pronto para digitar nele a seguinte subroutine emdAnimateGraph:
Private Sub cmdAnimateGraph _Cliquet)
frmCycle.Show
End Sub
Retome de volta a planilha Excel e salve seu trabalho no disquete.
Certifique de que nao esta mais no Modo de Projeto (clicando no leone novamente) e clicar rnaisurna vez no Botao Grafico Animado - 0que acontece!
Se tudo funcionar bern voce devera notar que precisou alterar ambos 0 tamanho e 0 alinhamento
do texto que e entrado manualmente na Caixa de Dialogo Grafleo Animado. Voce devera notar
que a sua tangente "circulara" ao redor do seu ponto de partida no grafico - sempre que pre cisar.
Lembre-se que voce pode ajustar isto simplesmente pressionando a Tecla de Funcao Especial F9
antes de pressionar 0botao Grafico Animado. Voce pode querer alinhar 0ponto de tangencia
sobre 0eixo y por exemplo.
Finalmente, se voce nao estiver feliz onde a Caixa de Dialogo 'Ciclos' que e mostrada na sua
planilha, entao voce poderia tentar alterar os tres itens seguintes nas PropriedadesfrmCycle
(Clique do lade de fora do formulario para mostra-lo na janela "Propriedades" - ou clique na lista
jane1a Propriedades.
FrmCycle:
Nome: frmCycle
StartUpPosition: 0 - Manual
Left: 130
Top: 300
J f rm(yde u se rf o rr n : : : . : J
A lf abe ti~o ICa tegOr iZado I(Name) FrmCycie ~
BackColor D &H80000001
BorderColor • &H8000001:
BorderStyle 0 - fmBorderSt)
Propried ad e:! i - F rm (yc le ~
IT...•-.
C a p t ic n ' -- - -- _ - + G : : _ r a = _ : _ 'i " " c o : _ c A _ c _ n : : _ i m c . . : . c a d " - ' 1
Cycle 0 - FmCy(leAIIFI
D rawBuFFer 32000
Salve seu trabalho.
Urn armazenamento dos dados do estagio final do trabalho e mostrado a seguir.
Para mim estes dois valores funcionaram OK.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 30/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 30
50
30
I--:::-;;---I--T;;-'i~--I-I Entrar com 0Numero de~+-~'i-I-I Cidos
10
S.,ir -5
-30
Esta Celula mesc1ada mostrara 0mimero de ciclos que a animacao ficou. Ela executara 0Numero
de Ciclos que foi entrado na Caixa de Dialogo 'Grafico Animado' ate ele atingir zero - quando a
animacao cessara.
Esta Caixa de Dialogo Personalizada e aberta na tela toda vez que 0botao "Grafico Animado'
embutido na planilha e pressionado e desaparecera quando seu botao de comando proprio
'Comecar' for pressionado.
Programando 5Nesta seC;aoaprendemos como alterar os intervalos dos eixos de qualquer grafico. Qualquer urn
que tenha tentado alterar os valores maximo e minimo dos eixos em ambos eixos sabera que ele
pode ser urn pouco cansativo e os resultados podem nao ser visto ate que a Caixa de Dialogo
Eixos ter sido completamente fechada.
o metoda seguinte usa "Botao de rota.;ao" embutidos na planilha para alterar os intervalos dos
eixos interativamente.
Inicie 0Excel, centralize justificar todas as Celulas e salve 0 novo arquivo no seu disquete como
"Prog5a"
Na Celula BlO digite x e na Celula Bll digite - 40. Dai use Editar ~ Preencher ~
Sequencias ... , etc, para preencher ate + 40 em incrementos unitarios, Nomeie este intervalo de x.
Na Celula ClO digite y e na Cll digite = (xA2/4 - x + 3)*(SEN(X/4))A2 - 13, e pressione Enter. A
Celula Cll devera agora mostrar 118 com 6 casas decimais. De urn duplo clique no
preenchimento manual para copiar esta formula. (Se nao for preenchido corretamente, nao deixe
de verificar em Formatar ~ Op.;oes ~ Tab Calculo e marcar automdtico, se estiver no manual)
Destacar os valores correspondentes aye de a este intervalo 0Nome y.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 31/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 31
Certifique de que nas Celulas estao destacadas antes de clicar no Jeone Assistente de Grafico na
Barra de Ferramentas Padrao. Escolha 0modelo de grafico - Dispersdo ('xl? e digite, suavizar e
sem pontos visiveis, antes de clicar 0botao Avan.;ar.
Assisteflte de griifil:o - atapa 1 de 4 - tipo de griifico L 1 ] r : g ]
lit Colunes~Barras
[Q £ Linha
~ Pi",.
LI I I i I I Area
@ Ro,,~
* Radar
~ 5u perF ic ie
: : B olhas
l . ii ; l iM i e s
Dispersao (XV)
pspe rsao com po ntos de dedos
o f onec t ados p o r l ihhas SIJ~V e s s em
r a r c ad or e s .
M~nt er p re s sl 0n ed c p er ~ " ,x i bir e xe m ol e
C~n,elar I <0 ; Yolt~~ I I AY~D> . r >I <;::onduir
Assistente de grafico - etilpa;;> de 4 - dades de origem .. . ~~
I IIntervaio de dedos r Sequencia I
Tipos pad rao Ijpos personalizsd os ,--- _
Iipo d e gr afico: S ! : ! p t ipo de . ~refic 0:
Series em: r:.inhqs
r. Cchjnes
[ntervelo de dados: 1 f :: m m u . m m t ll ll lm s ; ! w i D • • • •• • i 1 M l ! _ .
Cancelar I < V'oltar ; I Avaru:ar >. ~ ~?ncllJir
Na caixa de texto Intervalo de dados verifique os valores das celulas x,y e pressione 0botao
Concluir.
Redimensione 0grafico como segue: Mantendo pressionada a tecla "Alt" e com 0botao esquerdo
do mouse pressionado arraste 0ponto ancora no tapo esquerdo da borda do grafico para 0 topo
esquerdo da Celula H4. 0 proposito de manter pressionado 0botao "Alt" e fazer 0
redimensionamento do grafico (ou qualquer objeto) "Snap to Grids". De maneira semelhante
arraste 0ponto ancora do fundo direito da borda do grafico para tamar 0 grafico maior em sua
tela. Clique uma vez mais em Grafico Legenda para destaca-la e pressione a tecla Delete do
teclado. Com 0mouse na Area de Plotagem clique com 0botao direito dele e selecione "Limpar"
no menu drop-down. De uma maneira semelhante repita 0 feito acima com qualquer linha de
grade. Assim 0grafico nao devera ter cor de background ou linhas de grade. (A razao e que eleatualiza ou redesenha rapidamente e sem tremer).
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 32/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 32
-60
y
300
250
200
150
60-50
Salve seu trabalho.
Na Celula F4 digite "Eixos", em F5 digite 11, em E6 digite -14, em F7 digite -15 e em G6 digite
16. Agora destaque os numeros 5, 6 e 7 do 1ado esquerdo do indicador 1inha co1una como
mostrado.
300 125 0
?nn
Enquanto estes estao destacados c1icar 0botao direito do mouse num daque1es numeros (5,6 ou 7)
e se1ecionar "Altura da linha". Digite 20 e clique OK.
Agora pressione e mantenha pressionado 0botao Ctrl no teclado, e dai ao mesmo tempo clicarnas quatro Celulas F5, E6, F7 e G6. Enquanto 0ponteiro do mouse
permanecer sobre uma das Celulas pressione 0botao direito do mouse e escolha
"Formatar Celulas". Se1ecionar a Tab "Alinhamento" e altere as opcoes como mostrado abaixo.
Clique OK.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 33/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 33
1
2
3
4 E i x o s
: 5
1 1
6-H 1 16
7- 1 5
8
9
1 0
11
12
13
14
1 5
16
1 7
1 8
19
2 0,. , :.1 . . . . . _ -_ .. . . . . . . I _ . _ ~ .....I_ _~
Fnrmatar celulil5 ~ 1 R l
Numero AJinhamento I Fonte I Bmda I Padro es I Prote, Ii0 IAlioh,meoto de te xto -----
l::!o'i,oot~1 ,
Oient,as.30~---
. .JCentro
'Lertic.3l:
J Q 1 m m r
::'.:] Recuo:
ro:BT ex to - .
•
ri ,t r ibul ,~o jU, ti f i csde •. .,ontrole de t,ext,o ------
r~tQrno ~ut 0m6 t i co de texto
redu . .r pa ra ajus tar
rB~clar celules
Da direita para a esquerde ----
Icontexto : 0 : : 1
Se ja nao estiver mostrada, abrir a Barra de ferramentas do Visual Basic (Exibir ::::)Barra de
ferramentas eeVisual Basic).
Clique abrir a Caixa de Ferramentas de Controle e selecionar 0Controle "Botao de rotacao"
Enquanto mantendo pressionada a tecla "Alt" arraste 0Botao de rotacao sobre a Celula F6, ele
devera "agarrar-se" ao tamanho da celula automaticamente. Repetir com os tres Botoes de rotacao
adiante para coloca-los nas Celulas E7, F8 e G7.
Ele parecera urn pouco desarrumado agora, algo como isto:
I E i x o s
I11
-1 4 0 4 I ~ 1 6
0 4 I ~ II - 1 : 5 • I . .
P ~ r ~I
-~'
I
Entre no Modo de Projeto se ja nao estiver ativado e clique com 0botao direito do mouse no topo
de urn Botao de rotacao, escolha "Propriedades" e modifique cada uma das quatro da mesma
maneira trocando seus Nomes individuais como mostrado na figura acima. As modificacoes saodadas abaixo:
Nome: Cada um dos Nomes dos Botiies de rotaciio acima, respectivamente
Height: 6,75
Linked Celula; F5 para spnyMax, G6 para spnxMax, F7 para spnyMin ou E6 para spnxMin
Max: 500
Min: -500
Orientation: 1 - fmOrientationHorizontal
Urn dos efeitos disto e tomar os botoes de rotacao como retangulos bern finos. Anteriormente
alinhamos as quatro celulas F5, G6, F7 e E6 como "topo", a razao para isto foi que poderiamosaperta-los debaixo de cada mimero associado ao Botao de rotacao, De longe quanto mais preciso 0
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 34/37
Bertolo Umtutorial sobre programa!;80Excel comVisual Basicfor Applications 34
modo de mover agora cada botao de rotacao e destaca-lo e pressionar a tec1a "Ctrf" quando voce
pressionar tambem as teclas de cursor do teclado (flechas). Voce devera terminar com a seguinte
figura - Eu tenho incluido uma borda simples tambem,
Agora damos as Celulas F5, G6, F7 e E6 os Nomes "ymax", "xmax", "ymin" e "xmin", respec-
tivamente usando a Caixa de Nome para ser mais rapido (mas nao esquecer de pressionar Enter a
cada vez ou 0Nome M O entrara)
A seguir, no Modo de Projeto, clique com 0botao direito do mouse no Botao de rotacao spnyMax
E escolha "Exibir C6digo". Digite 0 c6digo seguinte:
4 Eixos
5I 1111 t
-1 4 • 116.6 .i ,
-1 57' • i'"
S
Private Sub spnyMax _Change 0Range ("ymax ").Activate
ActiveCell.Value = spnyMax.Value
Call axesl
End Sub
Altere isto de acordo para cada urn dos outros Botoes de rotacao respectivamente.
Agora, ou permaneca no Editor VBA ou se no Excel pressione Alt+Fll. Dai selecione lnsarlr ee
Procedimento, e preencher a Caixa de Dialogo Adicionar Procedimento como mostrado abaixo
dando ao Nome "eixosl". Depois pressionando OK digite a seguir no c6digo do "eixosl" como
mostrado abaixo.
Adidondr pmeedimente ~
Nome: I elxosl 0 1 <
Tipo----------,
r . - Sub
runo;:ao
r ropriedade
Cancelar
Escopo - - -- - -- - -,
r. Publico
r Particular
r Todes as lI ar ia ve is lo ca ls c omo esta tiC 'a !;
ITipo I,Contexto
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 35/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 35
Public Sub eixos 10
Dim xmin As Range, xmax As Range
Dim ymin As Range, ymax As Range
Set xmin = Range("xmin")
Set xmax = Range("xmax")
Set ymin =Range("ymin")
Set ymax = Range("ymax")
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes( xICategory). Select
With ActiveChart.Axes(xICategory)
.MinimumScale = xmin.Value
.MaximumScale = xmax.ValueEnd With
ActiveChart.Axes(xIValue). Select
With ActiveChart.Axes(xIValue)
.MinimumScale = ymin.Value
.MaximumScale = ymax.Value
End With
End Sub
Note que neste Procedimento e esperado que seu grafico seja chamado "Chart l" - se nao 0 for, 0
procedimento nao funcionara. Para ver se seu grafico e realrnente charnado assim (mantenhapressionada a tec1a "Shift" enquanto clicando no grafico e olhe na Caixa de Nome). Voce pode
consertar isto assim:
1. Escolhendo 0nome na Caixa do grafico, ou
2. mudando 0Nome no codigo do Procedimento "eixosl" para casar com aquele de seu grafico na
planilha.
Agora volte it planilha Excel e clique nas setas do Botao de rotacao, 0que acontece? Note que
tambem voce pode alterar diretarnente os tamanhos dos eixos clicando ou nas Celulas F5, F7, E6
ou G6 respectivarnente, ou digitando em qualquer valor particular valor e dai pressionando Enter.
Salve 0 seu trabalho!
Note tambem que, diferentemente do exercicio anterior (Prograrnando 4), este range de valores x
e y sao estaticos. Por conseguinte, ha poucos pontos para alterar os valores maximos e minimos dex alem dos valores 40 e - 40, respectivamente.
Terminarnos com uma declaracao geral que deveria ser lida como tambem aplicada a muitos de
nossos exercicios anteriores, a saber:
Portanto, uma vez tendo uma Subroutine ou Modulo que funciona - GRA VE-A em algum lugar
para ou importar ou 'cortar e colar' num momento posterior em outros projetos.
Uma exibicao de tela e mostrada abaixo, em que as linhas de grade foram removidas para clareza
selecionando Ferramentas = > Op~oes = > Tab Exibir, e desmarcando a Caixa linhas de grade na
secao "Opcoes de janelas".
Para tomar este exercicio particular mais transferivel aos outros trabalhos delete "todo seu
intervalo x eye seu grafico mas deixe seus Botoes de rotacao e os seus mimeros, Salve este
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 36/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 36
arquivo como Eixosl e dai use isto como urn template ou ponto de partida para qualquer outro
trabalho que for necessario desenhar urn grafico como parte dele.
A B c D E F G H K M N 0
Eixos
14 y=(x"2/4 •x + 3)'(SEN(X/4))"2 • 13---Ll.....LJ
·9~....!...L!...J
14·16.....!...L!...J
9
4
x
·40
·39
·38
·37
·36
·35
·3 4
·33
·3 2
·31·30
·29
·28
·27
·26
·25
·24
·23
Mudando 0
nome dodiagrama
embutido
·16
6
y
118.1098233
30.1085645
·10,72962826
·1,441695318
48,65251745
121,3538963
194,8516241
249,3819465
271,8394544
258,2954311213,9997408
151,1152018
84,98032573
29,98904461
·3,837231364
·12,79716647
0,350486528
2788351096
·11
·1
·6
ADENDO
Voce pode variar manualmente 0 nome de um grMico embutido,
via a Caixa de Nome.
Para conseguir isto com 0 intuito de alterar 0 nome do diagrama
(chart) voce tera que selecionar 0grMico como um objeto ao lnves
de ter 0 grMico selecionado. Mantenha a tecla Shift enquanto
seleciona 0qraflco.
Note que a sutil diferenc;a na selecao e denotada pela cor do
identificador de setecao (selection handles). Eles ficam brancos aolnves do preto normal. 0 nome do diagrama atual e agora
mostrado na caixa de Nome e pode ser editado.
5/12/2018 Program an Do Excel - slidepdf.com
http://slidepdf.com/reader/full/program-an-do-excel 37/37
Bertolo Um tutorial sobre programa!;80 Excel com Visual Basic for Applications 37
Chart 1 I... ~l
~
A I B C I D I E I F I G
~I I I I I I
~ -- ChEut TH le -3 -4 [).5
f - - - - - - = ' - --r---
-
5
~-- 0.4 -
7--0, 3
r--- ~T
I-- 0,2 - -8 r 1 - -g 0, 1 - -I'10 °
-
'1 T--
Te8l1 Test 2 Test 3 Test 4-
-
12
A rnudanca pode tarnbem ser feita via c6digo VBA:
'renomeie 0 objeto grafico selecionado
ActiveChart.Parent.Name = "Meunomedodiagrama"