+ All Categories
Home > Documents > Program an Do Excel

Program an Do Excel

Date post: 15-Jul-2015
Category:
Upload: jeferson-barbosa
View: 48 times
Download: 0 times
Share this document with a friend
37
Transcript

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"


Recommended