Você está na página 1de 104

Excel Macros e Visual Basic for Applications

(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

ndice






MACROS................................................................................................................................................ 5
O QUE UMA MACRO? .......................................................................................................................... 6
CRIAR MACROS..................................................................................................................................... 6
Gravar uma Macro ........................................................................................................................... 6
Exerccio .....................................................................................................................................................................87
Procedimento BackGround do Excel ........................................................................................................................98
Programao em Visual Basic for Applications ..............................................................................109
EXECUTAR UMA MACRO...................................................................................................................... 11
Tecla de Atalho Shortcut Key .................................................................................................... 1211
Boto na Toolbar ............................................................................................................................ 12
Associar uma Macro a umBoto ..............................................................................................................................12
Dissociar uma Macro de umBoto ...................................................................................................................... 1415
Run .............................................................................................................................................. 1415
Comando no Menu ....................................................................................................................... 1516
Associao de uma Macro a umComando do Menu .......................................................................................... 1516
Dissociao ............................................................................................................................................................ 1618
Editor de Visual Basic for Applications ........................................................................................ 1719
REMOVER MACROS .......................................................................................................................... 1719
Remoo de Macros em Ambiente Excel ....................................................................................... 1720
Remoo de Macros no Editor de VBA ......................................................................................... 1820
EDITOR DE VISUAL BASIC FOR APPLICATIONS .................................................................... 1921
PROJ ECT EXPLORER ......................................................................................................................... 2122
PROPERTIES WINDOW....................................................................................................................... 2224
JANELA DE EDIO .......................................................................................................................... 2325
OBJ ECT BROWSER ............................................................................................................................ 2326
HELP ON-LINE ................................................................................................................................. 2427
AS CORES DO VBA .......................................................................................................................... 2427
FUNES E SUBROTINAS ............................................................................................................ 2628
SUBROTINAS .................................................................................................................................... 2830
Definio de SubRotinas .............................................................................................................. 2830
Trabalhar no Editor de VBA Criar uma SubRotina .................................................................... 2831
Execuo de uma SubRotina ........................................................................................................ 2932
FUNES ......................................................................................................................................... 3032
Definio de Funes................................................................................................................... 3032
Definio do tipo de parmetros e do tipo da funo .................................................................... 3033
Trabalhar no Editor de VBA Criar uma Funo ........................................................................ 3134
Execuo de uma Funo ............................................................................................................. 3235
Execuo dentro de uma Clula ........................................................................................................................... 3236
Execuo dentro de uma Rotina ........................................................................................................................... 3437
DIFERENAS ENTRE FUNES E ROTINAS .......................................................................................... 3539
REGRAS PARA A PASSAGEM DE PARMETROS .................................................................................... 3540
VARIVEIS ...................................................................................................................................... 3741
MANUSEAMENTO COM VARIVEIS .................................................................................................... 3841
O que so variveis? .................................................................................................................... 3841
Assignao de valores a variveis: ............................................................................................... 3842
Utilizao de variveis como se fossem valores: ........................................................................... 3943
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
TIPOS DE VARIVEIS ......................................................................................................................... 3943
DECLARAO DE VARIVEIS ............................................................................................................ 4044
VARIVEIS VANTAGENS DA UTILIZAO ........................................................................................ 4045
VARIVEIS DO TIPO OBJ ECTO ........................................................................................................... 4145
Declarao da Varivel Objecto .................................................................................................. 4145
Atribuio de uma varivel Objecto ............................................................................................. 4145
Utilizao Genrica da Varivel Objecto ..................................................................................... 4246
Utilizao Especifica da Varivel Objecto .................................................................................... 4246
VARIVEIS DECLARAO OPCIONAL E O TIPO VARIANT ................................................................. 4348
Os Prs e Contras da Utilizao do tipo Variants ......................................................................... 4348
Prs ......................................................................................................................................................................... 4348
Contras ................................................................................................................................................................... 4348
Variveis Declarao Forada .................................................................................................. 4449
VARIVEIS TIPOS DEFINIDOS PELO UTILIZADOR - ESTRUTURAS ........................................................ 4450
Definio do Tipo ........................................................................................................................ 4450
Utilizao das Estruturas de Dados.............................................................................................. 4551
VARIVEIS ARRAYS ...................................................................................................................... 4651
O que um Array ? ...................................................................................................................... 4652
Array Uni-Dimensional ......................................................................................................................................... 4652
Array Bi-Dimensional ........................................................................................................................................... 4652
Declarao de um array .............................................................................................................. 4753
Arrays Uni-dimensionais ...................................................................................................................................... 4753
Arrays Bi-dimensionais ......................................................................................................................................... 4754
Utilizao de um Array ................................................................................................................ 4854
Para aceder ao elemento ........................................................................................................................................ 4854
Atribuio de valores ............................................................................................................................................ 4854
Option Base e Array Bounds ........................................................................................................ 4956
CONSTANTES .................................................................................................................................. 5056
O QUE SO CONSTANTES ? ................................................................................................................ 5157
INPUTBOX E MSGBOX .................................................................................................................. 5258
O QUE SO ?..................................................................................................................................... 5359
INPUTBOX ....................................................................................................................................... 5359
O que faz .................................................................................................................................. 5359
Sintaxe ......................................................................................................................................... 5359
Parmetros .................................................................................................................................. 5360
MSGBOX ......................................................................................................................................... 5461
O que faz .................................................................................................................................. 5461
Sintaxe ......................................................................................................................................... 5561
Parmetros .................................................................................................................................. 5562
Valores Produzidos .................................................................................................................. 5869
DOMNIO DAS VARIVEIS, CONSTANTES E ROTINAS.......................................................... 5970
O QUE O DOMINIO? ........................................................................................................................ 6071
DOMNIO DAS VARIVEIS ................................................................................................................. 6071
mbito do Procedimento .............................................................................................................. 6072
mbito do Mdulo ....................................................................................................................... 6173
mbito do Projecto ...................................................................................................................... 6274
DOMNIO DAS CONSTANTES .............................................................................................................. 6375
mbito do Procedimento .............................................................................................................. 6375
mbito do Mdulo ....................................................................................................................... 6376
mbito do Projecto ...................................................................................................................... 6476
DOMNIO DE SUBROTINAS E FUNES .............................................................................................. 6477
ESTRUTURAS DE CONTROLO ..................................................................................................... 6578
O QUE SO ESTRUTURAS DE CONTROLO? ........................................................................................... 6679
QUAIS AS ESTRUTURAS ................................................................................................................. 6679
IF-THEN-ELSE .................................................................................................................................. 6780
Funo IF do Excel ...................................................................................................................... 6780
Sintaxe da Estrutura If-Then-Else ................................................................................................. 6780
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Aplicao Prtica ........................................................................................................................ 6881
A instruo adicional ElseIf ........................................................................................................ 6983
Aplicao Prtica................................................................................................................................................... 6983
FOR NEXT ..................................................................................................................................... 7084
Sintaxe ......................................................................................................................................... 7084
Aplicao Prtica ........................................................................................................................ 7084
A Funo das Variveis: ....................................................................................................................................... 7185
Construo do Ciclo: ............................................................................................................................................. 7185
Traduo Integral................................................................................................................................................... 7286
Funcionamento do Ciclo: ............................................................................................................. 7286
Perigos associados utilizao do ciclo For-Next: ....................................................................... 7386
Outra Aplicao .......................................................................................................................... 7387
WHILE-WEND .................................................................................................................................. 7388
Sintaxe ......................................................................................................................................... 7488
Aplicao Prtica ........................................................................................................................ 7488
A Funo das Variveis: ....................................................................................................................................... 7489
Construo do Ciclo: ............................................................................................................................................. 7589
Traduo Integral................................................................................................................................................... 7590
Funcionamento do Ciclo .............................................................................................................. 7690
Perigos associados utilizao do ciclo While-Wend ................................................................... 7690
Outra Aplicao .......................................................................................................................... 7691
DO LOOP ....................................................................................................................................... 7792
Sintaxe ......................................................................................................................................... 7892
Aplicaes Prticas ..................................................................................................................... 7893
SELECT CASE ................................................................................................................................... 8095
Sintaxe ......................................................................................................................................... 8195
Aplicao Prtica ........................................................................................................................ 8196
Construo da Estrutura........................................................................................................................................ 8197
FOR EACH NEXT ......................................................................................................................... 8298
Sintaxe ......................................................................................................................................... 8398
Aplicaes Prticas ..................................................................................................................... 8399
Utilizando Arrays .................................................................................................................................................. 8399
Construo do Ciclo ....................................................................................................................................... 84100
Utilizando Coleces de Objectos ...................................................................................................................... 85101
COLECES DE OBJECTOS E OBJECTOS .............................................................................. 87103
O QUE SO OBJ ECTOS ? .................................................................................................................. 88104
OBJ ECTOS: PROPRIEDADES, MTODOS E EVENTOS........................................................................... 88104
Propriedades ............................................................................................................................. 88104
Mtodos ..................................................................................................................................... 88104
Eventos ...................................................................................................................................... 88105
OBJ ECTOS MAIS UTILIZADOS NO EXCEL .......................................................................................... 89106
Propriedades......................................................................................................................................................... 89106
Mtodos ................................................................................................................................................................ 90107
Propriedades......................................................................................................................................................... 91108
Mtodos ................................................................................................................................................................ 92109
Propriedades......................................................................................................................................................... 93110
Mtodos ................................................................................................................................................................ 93111
Propriedades......................................................................................................................................................... 94112
Mtodos ................................................................................................................................................................ 95113
OBJ ECTOS SINGULARES VS COLECES DE OBJ ECTOS ........................................................... 96114
INDEXAO DE COLECES POR NMERO OU NOME ......................................................................... 97115
Indexao com Base em Nmeros .............................................................................................. 97115
Indexao com Base no Nome .................................................................................................... 98116
Vantagem............................................................................................................................................................. 98116
O Objecto Range uma excepo .............................................................................................. 98117
Tratamento como objecto: .................................................................................................................................. 98117
Tratamento como coleco de objectos: ............................................................................................................ 98117
REFERNCIA IMPLCITA .................................................................................................................. 99118
Declarao implcita da aplicao: ............................................................................................ 99118
Declarao implcita do WorkBook: ......................................................................................... 100119
Declarao implcita da WorkSheet: ........................................................................................ 100119
Nvel de referncia a privilegiar ............................................................................................... 101120
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
MISCELLANEOUS ...................................................................................................................... 102121
A INSTRUO WITH ..................................................................................................................... 103122
Aplicao Prtica .................................................................................................................... 103122
OUTRAS FUNES TEIS DO VBA ................................................................................................ 103123







Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
















M
M
a
a
c
c
r
r
o
o
s
s























Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

O QUE UMA MACRO?
Uma macro um pequeno programa que contm uma lista de instrues a realizar no
Excel. Como sendo um repositrio de operaes, uma macro pode executar um conjunto
de tarefas atravs de um nico procedimento o qual pode ser invocado rapidamente.

As instrues que formam o corpo da macro so escritas num cdigo prprio para que o
computador as possa entender, essa linguagem designada por VBA Visual Basic for
Applications.


CRI AR MACROS
Existem duas possibilidades de criao de macros:

Atravs do Gravador de Macros
Utilizando o editor e programando em Visual Basic for Applications




Gravar uma Macro

1. Tools / Macro / Record New Macro. O Excel exibir a caixa de dilogo da fig.1.


Fig.1 caixa de dilogo para a gravao de macros.



3.2.O nome da Macro ser constitudo por um conjunto de caracteres que identificaro a
Macro e a sua funcionalidade.

Formatados: Marcadores e
numerao
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
4.3.Shortcut Key composto por uma combinao de teclas que podero ser utilizadas
para executar uma macro.

5.4.Opte por armazenar a macro numa das seguintes alternativas: This Workbook, New
Workbook ou Personal Workbook, sendo que cada uma corresponde a macros de
mbito diferente. Assim devero armazenar a macro na opo ThisWorkBook para
que ela esteja activa sempre que o documento estiver aberto, e para que ela esteja
armazenada no prprio ficheiro no correndo o risco de ficar armazenada nas
Macros do Excel. (na rede do ISCTE impossvel gravar a macro no Personal
WorkBook.)

6.5.No campo Description, introduza um comentrio funo este poder ser
importante para que no seja esquecido o respectivo objectivo e funcionalidade.

7.6.Clique em OK para iniciar a gravao da macro neste momento ser exibida uma
toolbar semelhante da figura 2, e o cone do rato ser transformado numa cassete,
indicando o estado de gravao.


Fig.2 Toolbar exibida para a gravao de macros.


7. Na toolbar Stop Record, existem dois botes: Stop Recording e Relative Reference
O boto de Stop Recording termina a gravao da macro, o boto de Relative
Reference selecciona o modo de gravao da macro se feito com base em
referncias relativas (boto seleccionado) ou referncias absolutas.

8. No caso da toolbar Stop Record desaparecer, poder voltar a exibi-la fazendo no
menu a sequncia: View / Toolbars / Stop Record (seleccione a toolbar). Caso a
toolbar no aparea listada a gravao de macros no est activa.


Nota: Tome ateno aos passos que d quando est a gravar pois tudo ser registado, o
que significa que quando for executar a macro, esses procedimentos sero efectuados.













Formatados: Marcadores e
numerao
Formatados: Marcadores e
numerao
Formatados: Marcadores e
numerao
Formatados: Marcadores e
numerao
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

EXERCCIO
Objectivo: Gravar uma macro testando a diferena entre a execuo de macros com
referncias absolutas e relativas.

1 Fase: Macro com referncias Absolutas

1. Accione a gravao da macro. Atribua-lhe o Short Key Ctrl+P
2. Certifique-se que o boto Relative Reference est desactivado.
3. Clique na clula B3.
4. Escreva ISCTE
5. Formate a clula para Bold, Itlico, tamanho 18, Small Caps, (utilize o Format /
Font)
6. Na clula B4 escreva: Av. Foras Armadas
7. Na clula B5 escreva: 1700 Lisboa
8. Pare a gravao da macro. A macro est criada.
9. Apague tudo o que escreveu nas clulas da coluna B.
10. Clique na clula L8.
11. Carregue simultaneamente nas teclas Ctrl e P
12. O que aconteceu ?


2 Fase: Macro com referncias Relativas

1. Seleccione a clula D5.
2. Accione a gravao da macro. Atribua-lhe o Short Key Ctrl+R
3. Seleccione o boto Relative Reference.
4. Escreva ISCTE na clula que havia sido seleccionada.
5. Formate a clula para Bold, Itlico, tamanho 18, Small Caps, (utilize o Format /
Font)
6. Na clula D6 escreva: Av. Foras Armadas
7. Na clula D7 escreva: 1700 Lisboa
8. Pare a gravao da macro. A macro est criada.
9. Apague tudo o que escreveu nas clulas da coluna D.
10. Clique na clula L8.
11. Carregue simultaneamente nas teclas Ctrl e R
12. O que aconteceu ? Porqu ?












Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
PROCEDIMENTO BACKGROUND DO EXCEL
O Excel quando se grava uma macro cria um objecto designado por module no
workbook onde regista todas as operaes gravadas em linguagem Visual Basic for
Applications - VBA. Este module no aparece no Excel com as restantes Sheets.

Para ser visualizado necessrio abrir o Editor de Visual Basic for Applications:

1. Tools / Macro / Macros

2. Selecciona-se a Macro e Clica-se no boto Edit

3. Poder visualizar na rea do lado direito o cdigo VBA que est subjacente s
macros que entretanto gravou. A poder executar as mesmas tarefas que num editor
de texto normal: escrever, apagar, copiar, mover, mas instrues de VBA.

4. Tente fazer a leitura do que est escrito e compreenda o procedimento da macro.

5. Para regressar ao Excel basta File / Close and return to Microsoft Excel.






























Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Programao em Visual Basic for Applications


1. Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual Basic
Editor (para se familiarizar mais com o editor consulte o capitulo Editor Visual
Basic for Applications e o capitulo Funes e SubRotinas)


Figura 3 Editor de Visual Basic for Applications



2. Para inserir um mdulo faa Insert / Module isto porque as macros que construir
devero ser escritas dentro de um mdulo (repare na Figura 3 que o Module 1 est
seleccionado na janela de projecto e do lado direito tem-se uma rea de edio onde
poder-se-o escrever as macros a executar)




3. Pode agora programar os procedimentos manualmente ou com recurso a algumas
funcionalidades do Editor:

a) Insert / Procedure insere um procedimento para o qual dever indicar o tipo de
procedimento.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
b) Quando estiver a introduzir as variveis haver de ser exibida a lista de tipos de
variveis possvel.

4. Sempre que precisar de construir uma macro mais ou menos complicada, se no
conhecer muito de VBA poder comear por gravar no EXCEL pequenas macros
com operaes muito simples e depois no editor de VBA tentar compreender a sua
funcionalidade e assim construir uma macro cada vez mais complexa, completa e
adequada s suas exigncias.

5. Poder em cada macro fazer uma chamada a uma outra macro, bastando para tal
escrever o respectivo nome.

6. No Editor de Visual Basic for Applications poder encontrar ajuda para o
desenvolvimento do seu procedimento. Assim:


6.1. Clique no cone do Object Browser ou View/Object Browser ou F2

6.2. Na Caixa de Drop-Down onde aparece referido <All Libraries>, seleccione a
aplicao para a qual pretende ajuda neste caso Excel. Convm referir que
poder utilizar as funes de toda e qualquer aplicao.

6.3. Na rea intitulada por Classes aparecem todos os objectos especficos para o
manuseamento da aplicao seleccionada. A classe especial designada por
Globals refere-se s funes que esto disponveis na aplicao
independentemente dos objectos seleccionados.

6.4. Seleccione um dos objectos e visualize do lado direito os Members of
<Elemento seleccionado>


6.5. Para cada membro da classe dispe de um help on-line que o esclarece sobre a
respectiva funo e funcionamento, dando exemplo que poder testar. Para tal
basta clicar sobre o boto de Help da janela do Object Browser.



EXECUTAR UMA MACRO
A execuo de uma macro pode ser concretizada de diversas formas:

Tecla de Atalho Shortcut Key
Boto na Toolbar
Run
Comando no Menu
Editor de Visual Basic for Applications


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Tecla de Atalho Shortcut Key


A associao a teclas de atalho realizada aquando da criao da macro.


Boto na Toolbar


ASSOCIAR UMA MACRO A UM BOTO

1. View / Toolbars / Customize

2. Na janela do Customize seleccione o Commands Tab

3. Seleccione a categoria Macro (visualizar a caixa de dilogo exibida na Figura 4)



Fig.4 caixa de dilogo para assignao de boto a macros






Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




4. Na rea respeitante aos Commands sero exibidos dois itens: Custom Menu Item e
Custom Button. Seleccione este segundo e arraste-o com o rato at Toolbar onde o
pretende inserir. Ateno s poder inserir o boto quando o ponteiro do rato ficar
com a forma I. Nesse momento libertar o boto do rato utilizado para o
arrastamento e verificar que ser criado um novo boto.


5. Na janela de Customize poder ainda utilizar dois botes que se encontram na rea
do Selected Command:
a) Description que exibe um texto explicando o que o comando seleccionado
faz.
b) Modify Selection semelhante ao clique sobre o boto criado, exibe uma
srie de tarefas possveis para configurao do boto ( ver operaes
seguintes).


Fig.5 Menu para configurao do boto da toolbar

6. Clique sobre o boto Modify Selection- abrindo um menu de tarefas possveis para a
configurao do boto Ver Figura 5

a) No ltimo agrupamento de configuraes possveis existe uma opo
designada por Assign Macro. Esta opo permite indicar qual a macro que
dever ser executada sempre que se clica no boto.

b) No terceiro agrupamento existem 4 estilos diferentes de exibir o boto: s
com texto, com texto e imagem ou somente com imagem. Se seleccionar o
estilo Texto e Imagem, ser exibido no boto para alm da imagem o nome
associado ao boto.
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

c) Na opo Name indique o nome que pretende ver associado ao boto, por
defeito aparece o nome da macro. (repare que aparece um & atrs da letra que
aparece a sublinhado)

d) Para alterar a imagem associada ao boto poder: optar por uma imagem
diferente, alterar a que est a visualizar ou a construir a sua. Para isso clique
sobre a tarefa de Change Button Image, seleccione o logotipo pretendido, se
nenhum o satisfizer e pretender criar o seu seleccione o logotipo que
representa um quadrado vazio. Para o poder (re)desenhar a imagem, na lista
de tarefas disponibilizada pelo boto Modify Selection opte por Edit Button
Image e crie a sua imagem que poder reeditar.



DI SSOCIAR UMA MACRO DE UM BOTO
1. Tools / Customize
2. Arraste o boto da toolbar at ao documento
3. Solte-o

Run

1. Tools / Macro / Macros

2. Na caixa de dilogo Macros selecciona-se a macro pretendida na lista da Macro
Name (Figura 6)

3. Clique sobre o boto Run


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Fig.6 Janela para seleco da macro a executar


Comando no Menu


ASSOCIAO DE UMA MACRO A UM COMANDO DO
MENU

1. View / Toolbars / Customize

2. Na janela do Customize encontra-se no Commands Tab

3. Seleccione a categoria Macro

4. Na area respeitante aos Commands ser exibido um item de Custom Menu Item,
seleccione-o e arraste-o com o rato at a uma posio do menu que lhe interesse
por exemplo pode introduzir numa das listas de opes do menu (File, View,) ou
ento criar como uma nova opo do Menu..


Fig.7 Caixa de dilogo para atribuir uma macro a umcomando do menu

5. Se pretender criar uma nova lista no menu dever :

a) Seleccionar a categoria New Menu
b) Na rea dos Commands ser exibida a opo New Menu, que dever arrastar at
barra dos menus
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
c) Poder alterar o seu nome clicando no boto de Modify Selection
d) Esta nova lista ter o mesmo comportamento que a outras



Fig.8 Caixa de dilogo para criar umnovo menu na barra dos menus


6. Na janela de Customize poder ainda utilizar dois botes que se encontram na rea
do Selected Command:

c) Description que exibe um texto explicando o que o comando seleccionado
faz.
d) Modify Selection semelhante ao clique sobre o menu ou comando de menu
criado, exibe uma srie de tarefas possveis para configurao (Ver o item 6
do captulo Associar uma Macro a um Boto)

DI SSOCIAO
1. Tools / Customize

2. Arraste o Menu ou Comando do Menu at ao documento e solte-o









Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br





Editor de Visual Basic for Applications


1. Tools / Macro / Visual Basic Editor - para aceder ao Editor
2. Posicionando-se no corpo de uma macro, na janela do lado direito inferior, poder
executar a macro atravs de: Run / Run Sub-UserForms (figura 9) ou boto Run.


Fig.9 Execuo de uma macro no Editor de Visual Basic for Applications


REMOVER MACROS
A remoo das macros poder ser feita:

no ambiente Excel, ou
no Editor de VBA



Remoo de Macros em Ambiente Excel

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

1. Tools / Macro / Macros
2. Selecciona-se a Macro a remover
3. Clica-se no boto Delete
4. Pede a confirmao e apaga se confirmar

Remoo de Macros no Editor de VBA


2. Tools / Macro / Visual Basic Editor - para aceder ao Editor
3. Podem-se apagar as macros que se encontrem na janela do lado direito inferior e que
tm inicio com a palavra Sub e fim com as palavras End Sub (Ver capitulo de
funes e procedimentos)



















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




E
E
d
d
i
i
t
t
o
o
r
r
d
d
e
e
V
V
i
i
s
s
u
u
a
a
l
l

B
B
a
a
s
s
i
i
c
c
f
f
o
o
r
r

A
A
p
p
p
p
l
l
i
i
c
c
a
a
t
t
i
i
o
o
n
n
s
s


















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual Basic
Editor



Figura 10 Editor de Visual Basic for Applications


Encontrar o cran dividido em trs grandes reas: Project Explorer, Properties Window
e do lado direito a janela de edio de texto.












Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
PROJ ECT EXPLORER
Se a janela no estiver visvel active-a atravs do View / Project Explorer ou utilizando
o boto ou combinaes de letras associadas a esta tarefa.

Nesta janela poder visualizar a hierarquia dos projectos de Visual Basic for
Applications activos nesse momento.

Entre eles dever encontrar um cujo nome corresponde ao nome do WorkBook do Excel
com que est a trabalhar. E.g. VBAProject (Book1). dentro deste projecto que dever
trabalhar para que todas as funcionalidades que implemente estejam nele activas sempre
que necessrio.


Figura 11 Janela do Project Explorer









Assim se fizer o desdobramento do seu VBAProject, encontrar um folder cuja
designao Microsoft Excel Objects, e um outro designado Modules (se este no
aparecer significa que o seu projecto ainda no possui qualquer macro implementada.
Para criar este folder dever fazer: Insert / Module).

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
No folder do Microsoft Excel Objects, encontrar todos os objectos que fazem parte do
seu documento: as WorkSheets e o WorkBook (que no fundo o conjunto de
WorkSheets). Se clicar duplamente em cada um destes objectos, uma nova janela ser
visualizada na rea da direita, em cada uma dessas reas poder definir a aco a ser
executada em funo dos eventos de cada objecto.

No Folder Modules, aparecer o conjunto de ficheiros (mdulos) onde poder
programar as suas macros. Clicando duplamente em cada um dos mdulos indicados
poder visualizar as macros, que o compem, na janela da direita.

PROPERTI ES WI NDOW

Se a janela das propriedades no estiver visvel active-a atravs do View / Properties
Window ou utilizando o boto ou combinaes de letras associadas a esta tarefa.



Figura 12 Janela de propriedades


Nesta janela poder visualizar e alterar as propriedades que definem cada objecto: o
nome - neste caso.









Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


JANELA DE EDI O

A janela de edio exibir a cada momento o cdigo em Visual Basic for Applications
associado ao elemento seleccionado na janela do Project Explorer.



Figura 13 Janela de edio





OBJ ECT BROWSER

No Editor de Visual Basic for Applications poder encontrar ajuda para o
desenvolvimento do seu procedimento. Assim:


Clique no cone do Object Browser ou View/Object Browser ou F2

Na Caixa de Drop-Down onde aparece referido <All Libraries>, seleccione a
aplicao para a qual pretende ajuda neste caso Excel. Convm referir que poder
utilizar as funes de toda e qualquer aplicao.

Na rea intitulada por Classes aparecem todos os objectos especficos para o
manuseamento da aplicao seleccionada. A classe especial designada por Globals
refere-se s funes que esto disponveis na aplicao independentemente dos
objectos seleccionados.
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Seleccione um dos objectos e visualize do lado direito os Members of <Elemento
seleccionado>


Para cada membro da classe dispe de um help on-line que o esclarece sobre a
respectiva funo e funcionamento, dando um exemplo que poder testar. Para tal
basta clicar sobre o boto de Help da janela do Object Browser.



HELP ON-LI NE
O Editor de Visual Basic for Applications, disponibiliza ao utilizador um sistema de
ajuda constante. Assim, quando se constroiem procedimentos, na janela de edio,
medida que a linguagem escrita o editor abre oportunamente listas de opes para
ajudar a escrever o cdigo.

AS CORES DO VBA
Na Janela de Edio so programados, armazenados e exibidos os procedimentos VBA
criados.

Porm, o texto envolvido em cada procedimento dotado de uma srie de cores
diferentes, sendo que cada uma tem significado diferente.


Cor Significado

Azul Palavras-Chave da linguagem. Ex: Sub, End Sub, Function, If, Then,
Else, While, Loop,

Vermelho Sempre que escreve na janela uma linha em linguagem VBA, o editor
vai rectificar a sintaxe da linguagem por forma a indicar se existe ou
no algum erro de escrita. Se for detectado um erro a linha fica a
vermelho e exibida uma mensagem de erro, seno todas as palavras
so reconhecidas, coloridas da cor da respectiva categoria e alteradas
para letras maisculas ou minsculas, conforme esteja pr-definido.

Preto Nome de variveis, procedimentos, valores, operadores,

Verde Comentrio introduzidos no seio dos procedimentos. Estes
comentrios servem para o utilizador poder associar algumas
explicaes aos procedimentos realizados. De referir que as palavras
com esta cor so ignoradas no procedimento, i.e., no produzem
qualquer efeito na sua execuo. Para introduzir comentrios bastar
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
que o caractere anteceda o texto a introduzir.

Amarelo Um sombreado amarelo poder aparecer sobre a linha que identifica
um procedimento. Esta cor simboliza a ocorrncia de um erro na
execuo do respectivo procedimento e o estado de execuo do
mesmo, i.e., o procedimento iniciou a execuo, durante a qual
detectou um erro e agora est parado, mas ainda em execuo.
Quando isto acontecer no dever voltar a dar ordem de execuo do
procedimento, sem antes parar (Stop) a execuo mal sucedida.










































Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




















F
F
u
u
n
n

e
e
s
s
e
e

S
S
u
u
b
b
R
R
o
o
t
t
i
i
n
n
a
a
s
s






















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br



Como foi referido anteriormente, quando se grava uma macro no Excel, este tem um
comportamento em background que realiza a respectiva codificao para Visual Basic
for Applications. Este resultado bem visvel quando procedemos edio de uma
macro no Editor de Visual Basic for Applications. Cada macro que se cria tem um
comportamento concreto e autnomo relativamente a outras macros implementadas, e
tem como objectivo executar um determinado nmero de instrues
1
que respondam s
exigncias do utilizador.

Cada macro criada d origem a um procedimento ou rotina. Existem dois tipos de
rotinas:

as subrotinas ou rotinas Sub, e
as funes.
































1
Entenda-se instruo como uma tarefa a executar que corresponde a uma linha de cdigo.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
SUBROTI NAS
Definio de SubRotinas


As SubRotinas so aquelas cuja definio delimitada pelas palavras-chave Sub e
EndSub. Assim se reparar todas as macros que grava no Excel so deste tipo. Repare
ainda como que so definidas:

Sub <nome_da_macro>( )

<corpo_da_macro>

End Sub


Estas SubRotinas so designadas pelo nome
2
que lhe atribumos e no recebem
parmetros
3
do exterior, tm como funo desempenhar um conjunto de tarefas que
compem o seu corpo. O corpo da macro, assim composto por um conjunto de
instrues, sendo que cada instruo diferente necessita de estar numa linha diferente.
Contudo, quando se trata de instrues demasiado grandes o editor faz a sua partio
por diversas linhas, recorrendo ao operador _, por forma a facilitar a leitura.



Trabalhar no Editor de VBA Criar uma SubRotina

Para criar uma SubRotina necessrio que exista um mdulo onde se possa escrever.
Uma vez posicionado nesse mdulo poder:

Escrever a macro integralmente, ou

Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie a
estrutura (Figura 14)



2
O nome da rotina pode ser qualquer umdesde que no contenha espaos, comece por caracteres alfa

3
Para ter a noo do que so parmetros recorde-se do funcionamento das funes do Excel, que para
executaremdeterminada funo necessitavamde receber parmetros que colocamos entre parntesis
separados por virgulas.


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Figura 14 Caixa de Dilogo para a criao de uma nova rotina


Assim dever indicar o tipo de rotina a criar Sub e o nome que pretende dar
macro (ou rotina ou procedimento ou SubRotina)
4
. Automaticamente ele criar
a estrutura da rotina, neste caso ficaria:

Sub Macro1( )

End Sub



Execuo de uma SubRotina


SubRotina e Macro so duas designaes para a mesma realidade, portanto tudo o que
foi referido relativamente a Macros vlido tambm para as SubRotinas. (Consultar
captulo das Macros)

Neste contexto a execuo de SubRotinas segue o mesmo mecanismo das macros.
Porm neste momento j se pode referir uma nova forma de executar as macros ou
SubRotinas dentro de outras rotinas, i.e., quando se escreve dentro de uma rotina o
nome de outra a execuo da rotina tem continuidade na execuo da rotina que est a
ser invocada.





4
Nomes alternativos para fazer referncia a umconjunto de instrues.
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
FUNES
Definio de Funes

Funes so rotinas cuja definio comea com a palavra-chave Function e termina com
as palavras End Function. Todas as funes que utiliza no Excel so deste tipo de
rotina. A sua definio tem a estrutura seguinte:

Function <Nome da Funo>( <parametro1>, <parametro2>,)


<Nome da Funo>=<Valor / Expresso>


End Function

A funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e tem
como objectivo executar um conjunto de instrues e produzir um valor final. Isto ,
sempre que se pretender executar uma funo sabido priori que ela produzir um
valor. Recorde-se como exemplo a funo SUM, esta recebe por parmetro um conjunto
de valores que se pretendem somar, sabe-se que o resultado da aplicao dessa funo
ao conjunto de valores ser o respectivo somatrio.

Para definir o valor produzido por uma funo basta no seu interior, atribuir ao nome da
funo um determinado valor ou expresso.



Definio do tipo de parmetros e do tipo da funo

Todos os elementos de input e output de uma funo tm um tipo de dados atribudo.
Assim os parmetros devero ser definidos com o tipo de dados respectivo e a funo
dever ser definida do tipo de dados que ela envie para o exterior.
Aps isto poder-se- refinar a definio de uma funo:


Function <Nome da Funo>( <parametro1>As <Tipo>, ) As <Tipo>


<Nome da Funo>=<Valor / Expresso>


End Function


Nota: Se os tipos no forem definidos ser assumido por defeito como sendo do
tipo Variant
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br



Trabalhar no Editor de VBA Criar uma Funo

Para criar uma Funo necessrio que exista um modulo onde se possa escrever.
Uma vez posicionado nesse mdulo poder:

Escrever a macro integralmente, ou

Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie a
estrutura (Figura 15)


Figura 15 Caixa de Dilogo para a criao de uma nova rotina - funo


Nesta caixa de dilogo dever indicar o tipo de rotina a criar Function e o
nome que pretende dar funo. Automaticamente o Visual Basic for
Applications criar a estrutura da rotina, que neste caso ficaria:


Function IVA( )

End Function







Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Execuo de uma Funo

Uma vez que uma funo produz um valor ela poder ser executada:

dentro de uma clula numa WorkSheet, semelhana de qualquer uma outra funo
do Excel

dentro de qualquer outra funo ou SubRotina.


Com base na seguinte funo, analisemos as formas de execuo com mais pormenor:







Figura 16 Janela de Edio coma funo IVA



EXECUO DENTRO DE UMA CLULA


1. Posicione-se na clula onde pretende inserir a funo
2. Insert / Function
3. Seleccione a categoria User Defined repare que aparece listada a funo que
acabou de criar IVA (Figura 17)
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


Figura 17 Caixa de Dilogo para introduo da funo



4. Clique em OK e de imediato uma janela de ajuda vir auxiliar a utilizao da sua
funo (Figura 18)




Figura 18 Caixa de Dilogo para apoio utilizao da funo


5. Introduza os parmetros e clique em OK (Figura 19)


Figura 19 Caixa de Dilogo para apoio utilizao da funo introduo de valores


Em suma:

Qualquer funo poder ser chamada a partir da WorkSheet do Excel, sendo que a sua
chamada ser realizada semelhana de qualquer outra funo: numa clula

=<nome da funo>(<Param_1>, <Param_2>)




Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
EXECUO DENTRO DE UMA ROTINA

Quando dentro de uma rotina se faz referncia ao nome de uma outra rotina a execuo
da primeira passa pela execuo daquela que est a ser invocada.

No exemplo que se segue, a funo Valor_Liquido faz uma chamada funo IVA por
forma a que, o valor por esta produzido, seja adicionado varivel Valor, e assim
produzir o output final da funo Valor_Liquido.




Figura 20 Funo Valor_Liquido ao ser executada d ordens de execuo funo IVA


Um outro exemplo poder elucidar melhor:


Figura 21 A Subrotina Ident_Maior ao ser executada d ordens de execuo funo Ver_Maior
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


DI FERENAS ENTRE FUNES E ROTINAS

As funes so similares s subrotinas, existem simplesmente trs diferenas:

1. As Funes Comeam com a palavra-chave Function e terminam com as palavras
End Function

3.2.As Funes podem ser chamadas a partir de frmulas introduzidas numa WorkSheet
3. As funes retornam valores para as frmulas ou subrotinas que as chamarem

REGRAS PARA A PASSAGEM DE
PARMETROS

Regra 1: Como uma funo retorna um valor, esta dever ser utilizada numa expresso.
Quando uma funo utilizada do lado direito de uma assignao, ou como argumento
de uma outra rotina, dever-se- passar os parmetros dentro de parntesis

Regra 2: Pode-se chamar uma funo ou subrotina com a palavra-chave Call, neste
caso dever-se-o colocar todos os parmetros entre parntesis.

Regra 3: Quando uma rotina chamada de forma isolada e sem a palavra-chave Call,
no se deve utilizar parntesis.















Formatados: Marcadores e
numerao
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
































Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




V
V
a
a
r
r
i
i

v
v
e
e
i
i
s
s


























Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
MANUSEAMENTO COM VARI VEI S

O que so variveis?

As variveis constituem repositrios temporrios de dados, podendo ser utilizadas para
diversos fins.





Figura 22 Manuseamento de Variveis
















Assignao de valores a variveis:

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Quando se pretende atribuir valores a variveis dever-se- indicar o nome da varivel, o
operador "=" e o valor que se pretende que a varivel armazene.

<Nome_Varivel> = <Valor>

Pela observao do procedimento Adio - Figura 22- podemos verificar que as
variveis Parcela_1 e Parcela_2 armazenam os valores introduzidos pelo utilizador
atravs das InputBox (Ver captulo "InputBox e MsgBox"). Tambm varivel Total vai
ser atribudo o valor resultante da adio das duas parcelas - Total = Parcela_1 +
Parcela_2.



Utilizao de variveis como se fossem valores:

O nome da varivel representa o contedo da mesma, i.e., sempre que mencionar o
nome da varivel o seu contedo que ser considerado.

No exemplo da figura 22, pode-se constatar que na expresso:

Total = Parcela_1 + Parcela_2

Parcela_1 representa o primeiro valor introduzido e Parcela_2 representa o segundo
valor, no se trata de adicionar o nome de duas variveis, mas adicionar os contedos
que elas armazenam.



TI POS DE VARI VEI S
O tipo de varivel est associado ao gnero de informao que esta tem hiptese de
armazenar

Boolean 2 bytes Permite armazenar valores Boolenaos True ou False

Byte 1 Byte permite armazenar nmeros sem sinal entre 0 e 255

Currency - 8 bytes permite armazenar moeda

Date 8 Bytes permite armazenar datas

Double 8 bytes permite armazenar um real desde -1.79769313486232E308
at -4.94065645841247E-324 para valores negativos, e desde
1.79769313486232E308 at 4.94065645841247E-324 para valores positivos.

Single 4 bytes permite armazenar um real desde -3.402823E38 at
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
-1.4011298E-45, para valores negativos e desde 3.402823E38 at
1.4011298E-45, para valores positivos

Integer 2 bytes - permite armazenar nmeros inteiros entre -32.768 e 32767

Long 4 bytes permite armazenar nmeros inteiros entre -2 147 483 648 e
2 147 483 648

Object 4 bytes utilizado para fazer referncia a um objecto do Excel

String 1 byte por caractere permite armazenar conjuntos de caracteres

Variant 16 bytes - permite armazenar qualquer tipo de dados

User-Defined permite armazenar valores de tipos diferentes


DECLARAO DE VARI VEI S

Dim I_Numero As Integer

Onde:

Dim Palavra chave que indica uma declarao de variveis (abreviatura de dimenso)
I_Numero - nome da varivel a utilizar
As palavra chave utilizada para separar o nome da varivel do tipo de dados
Integer tipo de dados atribudo varivel



possvel na mesma declarao de variveis declarar variveis de diversos tipos:

Dim var1 As Integer, var2 As Date, var3 As Double


Para declarar diversas variveis do mesmo tipo:

Dim var_1, var_2, var_3 As Currency





VARI VEI S VANTAGENS DA UTI LI ZAO
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Simplificam a codificao, principalmente quando se necessita de utilizar um
valor especifico inmeras vezes

Com variveis o cdigo mais rpido



VARI VEI S DO TI PO OBJECTO
Uma varivel objecto representa uma referncia a um objecto. Uma varivel de extrema
importncia que facilita a codificao e melhora a performance da subrotina.


Declarao da Varivel Objecto

Dim <Var_Objecto>As Object



Atribuio de uma varivel Objecto

Set <Var_Objecto>=<Objecto>



Onde:

Set palavra chave que indica a assignao de uma varivel objecto
<Var_Objecto> - Varivel Objecto
= - Operador de assignao
<Objecto> - Objecto a ser atribudo varivel










Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Utilizao Genrica da Varivel Objecto


A utilizao genrica do tipo Objecto serve para suportar qualquer tipo de objecto Excel
(WorkBook,WorkSheet,Range,)

Exemplo:

Dim Range_1 as Object
Range_1 =Worksheet(1).Range(A1)
Range_1.Value =10



Utilizao Especifica da Varivel Objecto

Utiliza-se o tipo exacto do objecto que se pretende atribuir varivel. Esse tipo
especifico de objectos coincide com o nome dos objectos em EXCEL.

Dim Range_1 As Range
Dim WB_1 As Workbook
Dim WS_1 As WorkSheet
Dim XL As Aplicativo


Exemplo:

Dim Range_1 as Range
Range_1 =Worksheet(1).Range(A1)
Range_1.Value =10














Contudo estas declaraes tambm podem ser feitas da seguinte forma genrica:

Dim Range_1 As Object
Dim WB_1 As Object
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Dim WS_1 As Object
Dim XL As Object



Ento qual o interesse de definir as variveis de forma especifica se o
podemos fazer de forma genrica?

Por uma questo de performance, se utilizar um objecto genrico, o VBA antes de
executar qualquer funo com o objecto tem que primeiramente o identificar (perdendo
tempo) em subrotinas simples essa diferena no substancial mas quando se trata de
grandes subrotinas j se denotam diferenas significativas.



VARI VEI S DECLARAO OPCI ONAL E O
TI PO VARI ANT
A declarao de variveis opcional, se as variveis no forem declaradas o VBA faz a
sua declarao por defeito. Assim sempre que a instruo do Dim omitida para uma
varivel, essa assume o tipo Variant.


Os Prs e Contras da Utilizao do tipo Variants

PRS
Diminui o nmero de linhas de cdigo

No necessrio estar preocupado se a varivel est ou no declarada porque o
VBA automaticamente o faz

CONTRAS
Aumenta o tempo de execuo o VBA primeiro precisa de reconhecer o tipo de
dados com os quais est a trabalhar.

Este tipo de dados consome mais memria (uma vez que tem que alocar espao para
qualquer tipo de dados que lhe seja atribudo) 16 bytes mais um byte por caractere
se for String =>problemas de performance para subrotinas grandes.

No possvel saber o tipo de dados que uma determinada varivel contm
dificultando a deteco de erros.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Variveis Declarao Forada


Para que o VBA detecte um erro sempre que uma varivel no seja declarada dever
fazer:

Tools/Options
Editor Tab
Activar Require Variable Declaration

Ou ento, escrever no incio de cada mdulo Option Explicit

Neste caso sempre que seja detectada uma varivel que ainda no foi declarada d uma
mensagem de erro - Variable Not Defined



VARI VEI S TIPOS DEFINI DOS PELO
UTI LI ZADOR - ESTRUTURAS

Definio do Tipo

A primeira fase constituda pela definio do tipo:


Type Dados_Pessoais

Nome As String
Idade As Integer
DataNascimento As Date
BI As Long
End Type

Criou-se um tipo de dados que representa uma estrutura com dados de diferentes tipos.
Esta definio dever ocorrer no incio do mdulo VBA.


Onde:

Type Palavra-Chave que indica a definio de um tipo de
dados criado pelo utilizador.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Dados_Pessoais Nome atribudo ao tipo de dados.

Nome As String Primeiro elemento da estrutura de dados definida.

Idade As Integer Segundo elemento da estrutura de dados definida.

DataNascimento As Date Terceiro elemento da estrutura de dados definida.

BI As Long Quarto elemento da estrutura de dados definida.

End Type Palavra-Chave que indica o fim da definio da
estrutura de dados.




Utilizao das Estruturas de Dados

Como utilizar as estruturas de dados:

Sub Tipos_definidos_Utilizador()

Dim Pessoa As Dados_Pessoais

Pessoa.Nome = Francisco
Pessoa.DataNascimento =#8/7/73#
Pessoa.Idade =WorksheetFunction.Year(Date)_
WorksheetFunction.Year(Pessoa.DataNascimento)
Pessoa.BI =103582915

MsgBox
5
Pessoa.Nome & Chr(13) & , Idade & Pessoa.Idade & Chr(13) & _
, Data de Nascimento & Pessoa.DataNascimento & Chr(13) & _
, com o BI nmero _ & Pessoa.BI

End Sub











5
Ver captulo InputBox e MsgBox
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
VARI VEI S ARRAYS


O que um Array ?

Um Array uma varivel que representa um conjunto de variveis do mesmo tipo.

Os Arrays podem ser multi-dimensionais, onde todas as dimenses so indexadas
numericamente.



ARRAY UNI-DI MENSI ONAL
0
1
2
3
4
5


Um array uni-dimensional constitudo por uma nica lista de elementos indexveis.
Esta lista tem um elemento inicial e um outro final sendo que a cada elemento da lista
corresponde um nico ndice, traduo do lugar que ocupa na lista, que o identifica
univocamente.


ARRAY BI -DIMENSI ONAL


0 1 2
0
1
2
3




Um array bi-dimensional um pouco mais complexo e constitudo por um conjunto de
listas do mesmo comprimento, este formato normalmente conhecido como array ou
matriz. portanto constituda por linhas e colunas e cada elemento identificado por
um ndice composto pela intercepo dos nmeros da linha e da coluna.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Declarao de um array


ARRAYS UNI -DIMENSI ONAI S
Dim ArrayNumerico(10) As Integer

Array_Numerico o nome da varivel array, o nmero entre parntesis indica o nmero
de elementos que o array pode armazenar, isto

Array_Numerico
0
1
2
3
4
5
6
7
8
9

Em que cada elemento do tipo Integer.


ARRAYS BI -DIMENSI ONAI S
Dim Tabela_Textual (5, 4 ) As String

Tabela_textual o nome da varivel, os nmero entre parntesis indicam que a tabela
ir ter 5 linhas e 4 colunas, podendo assim armazenar 20 elementos do tipo String.

Tabela_Textual
0 1 2
0
1
2
3





Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Utilizao de um Array

PARA ACEDER AO ELEMENTO
<Nome_do_Array>(<Indice1_do_Elemento>[,<Indice2_do_Elemento>, ])


ATRIBUI O DE VALORES
<Nome_do_Array>(<Indice1_do_Elemento>[,<Indice2_do_Elemento>, ]) = <Valor>



Exemplo 1:

Sub Pases()

Dim Pases(3) As String

Pases (0) ="Portugal"
Pases(1) ="Brasil"
Pases(2) ="Moambique"

MsgBox "Pases Armazenados:" & Chr(13) & Pases(0) & Chr(13) & Pases(1) &_
Chr(13) & Pases(2)

End Sub


Aps a atribuio de valores a cada elemento do array, este passa a ter o contedo
seguinte:
Pases

Portugal 0
Brasil 1
Moambique 2

Valor estes que sero exibidos atravs da MsgBox.

Exemplo 2:

Option Base 1
Sub Utilizacao_Array()

Dim Lotaria(3) As Integer

Lotaria(1)=int(10000*Rnd())
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Lotaria(2)=int(10000*Rnd())
Lotaria(3)=int(10000*Rnd())
MsgBox Nmeros da lotaria: & Lotaria(1) & , & Lotaria(2) & , &_
Lotaria(3)

End Sub


Option Base e Array Bounds


A indexao de um array por defeito tem inicio em 0, sendo que os respectivos ndices
vo de 0 a dimenso-1. Para alterar a base de indexao por forma a ter inicio em 1
basta colocar no inicio do mdulo Option Base 1

Contudo se pretender que um array comece noutro nmero que no seja 0 ou 1,
necessrio especificar os limites inferior e superior do ndice aquando da declarao do
array.



Exemplo:

Sub Utilizacao_Array()

Dim Lotaria(4 To 5) As Integer

Lotaria(4)=int(10000*Rnd())
Lotaria(5)=int(10000*Rnd())
MsgBox Nmeros da lotaria: & Lotaria(4) & , & Lotaria(5)
End Sub

















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




C
C
o
o
n
n
s
s
t
t
a
a
n
n
t
t
e
e
s
s


























Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


O QUE SO CONSTANTES ?
Constantes so valores que no alteram durante a execuo de uma rotina. So
declaradas da mesma forma que as variveis, a nica diferena reside no facto da
atribuio ser feita na mesma instruo da declarao, e s poder ser feita uma nica
vez.

Const <Nome_Constante>As <Tipo> = <Valor>
Const <Nome_Constante>As <Tipo>= <Expresso de clculo>





Figura 23 Manuseamento de Constantes



















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br



















I
I
n
n
p
p
u
u
t
t
B
B
o
o
x
x
e
e

M
M
s
s
g
g
B
B
o
o
x
x






















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
O QUE SO ?
Para haver interaco entre o utilizador e uma macro ou programa necessrio que
exista um interface de comunicao. Este poder ser mais ou menos complexo e
completo, contudo existem dois elementos bsicos para estabelecer esta ligao:
InputBox e MsgBox.

Neste contexto a InputBox uma funo que permite ao utilizador introduzir dados no
programa portanto um mecanismo de input. O MsgBox um mecanismo de Output
e permite ao utilizador visualizar os dados produzidos pelo programa.


INPUTBOX
O que faz

1. Exibe no cran uma janela com uma caixa text box para a insero de dados.

2. Espera que o utilizador introduza os dados e/ou accione um dos botes.

3. Como uma funo produz um valor final. Este consiste nos dados inseridos pelo
utilizador na forma textual - String.


Sintaxe

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Numa primeira avaliao da funo, pode-se dizer que a mesma possui diversos
parmetros, mas somente o primeiro obrigatrio, sendo que todos os outros quando
ignorados assumem valores atribudos por defeito.





Parmetros
Parmetro Comentrio

Prompt
(Obrigatrio )
Expresso textual exibida como mensagem na janela de input.
A dimenso mxima de 1024 caracteres.
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Se se pretender construir uma mensagem com mais do que uma
linha poder utilizar o caractere Enter - Chr(13). A juno dos
elementos que constituem a mensagem realizada atravs do
operador &.

Exemplo:
"A Soma de 3 com 5 :" & Chr(13) & " 8 "

Title
(Facultativo)
Titulo da janela de input. Se este for omitido, aparecer por
defeito o nome da aplicao.

Default
(Facultativo)
Expresso inserida por defeito na caixa de insero de dados e
constituir a resposta por defeito se o utilizador no introduzir
outra.
Se este parmetro for omitido aparecer uma text box vazia.

Xpos
(Facultativo)
Nmero que identifica a distncia horizontal entre o lado
esquerdo do cran e a janela de input. Se este valor for omitido a
janela aparecer centrada horizontalmente.

Ypos
(Facultativo)
Nmero que identifica a distncia vertical entre o lado superior
do cran e a janela de input. Se este valor for omitido a janela
ficar posicionada a 1/3 da parte inferior do cran

HelpFile
(Facultativo)
Nome do ficheiro de Help que ser utilizado para dar apoio ao
preenchimento desta janela. Se for indicado este parmetro o
seguinte obrigatrio.

Context
(Facultativo)
Nmero do ndice do tpico de Help constante no ficheiro
HelpFile, e que corresponde janela em questo.


Ateno: Se pretender enviar mais que um parmetro optativo respeite a ordem
atravs de , (virgulas)

Exemplo:
InputBox(Introduza o Nome da Aplicao:, , Excel)
Na janela de input ser exibida a mensagem Introduza o Nome da Aplicao:, o ttulo
da caixa ser o definido por defeito e o valor na caixa de insero ser Excel.


MSGBOX
O que faz

1. Exibe no cran uma janela com uma mensagem.
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

2. Espera que o utilizador accione um dos botes.

3. Como uma funo produz um valor final. Devolve um nmero inteiro indicando o
boto que foi clicado.


Sintaxe

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

semelhana da InputBox , pode-se dizer que a mesma possui diversos parmetros,
mas somente o primeiro obrigatrio, sendo que todos os outros quando ignorados
assumem valores atribudos por defeito.



Parmetros

Parmetro Comentrio

Prompt
(Obrigatrio )
Expresso textual exibida como mensagem na janela de input.
A dimenso mxima de 1024 caracteres.
Se se pretender construir uma mensagem com mais do que uma
linha poder utilizar o caractere Enter Chr(13)

Exemplo:
"A Soma de 3 com 5 :" & Chr(13) & " 8 "

Buttons
(Facultativo)
Nmero que identifica o tipo de botes que se pretende
visualizar na janela de output. Ver tabela seguinte.
Se for omitido assumir o valor 0 por defeito.

Title
(Facultativo)
Titulo da janela de input. Se este for omitido, aparecer por
defeito o nome da aplicao.

HelpFile
(Facultativo)
Nome do ficheiro de Help que ser utilizado para dar apoio ao
preenchimento desta janela. Se for indicado este parmetro o
seguinte obrigatrio.

Context
(Facultativo)
Nmero do ndice do tpico de Help constante no ficheiro
HelpFile, e que corresponde janela em questo.


Ateno: Se pretender enviar mais que um parmetro optativo respeite a ordem
atravs de , (virgulas)
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


Exemplo:
MsgBox(Erro de Sintaxe !!!, , Mensagem de Erro)
Na janela de output ser exibida a mensagem Erro de Sintaxe, o boto exibido ser o
de OK (por defeito) e o titulo da janela ser Mensagem de Erro.



Constante de VBA Valor Descrio

VbOKOnly 0 Exibe somente o boto de OK.
VbOKCancel 1 Exibe os botes OK e Cancel.
VbAbortRetryIgnore 2 Exibe os botes Abort, Retry, e Ignore.
VbYesNoCancel 3 Exibe os botes Yes, No, e Cancel .
VbYesNo 4 Exibe os botes Yes e No.
VbRetryCancel 5 Exibe os botes Retry e Cancel.
VbCritical 16 Exibe o cone de Critical Message.
VbQuestion 32 Exibe o cone de Warning Query.
VbExclamation 48 Exibe o cone de Warning Message.
VbInformation 64 Exibe o cone de Information Message.
VbDefaultButton1 0 O primeiro boto o seleccionado por defeito.
VbDefaultButton2 256 O segundo boto o seleccionado por defeito.
VbDefaultButton3 512 O terceiro boto o seleccionado por defeito.
VbDefaultButton4 768 O quarto boto o seleccionado por defeito.
VbApplicationModal 0 Application modal o utilizador s depois de responder
MsgBox que poder dar continuidade ao trabalho na
aplicao corrente.
VbSystemModal 4096 System modal - o utilizador s depois de responder
MsgBox que poder dar continuidade ao trabalho em
qualquer aplicao em curso no sistema.


Pela anlise desta tabela poder constatar que existem diferentes agrupamentos de
cdigos: para definir o tipo de botes (0-5), para definir o tipo de cones (16,32,48,64),
para definir o boto seleccionado por defeito (0,256,512,768) e para indicar o modo de
execuo (0 e 4096). Poder adicionar os cdigos e assim fazer combinaes entre
diversas opes destes 4 grupos, contudo nunca dever adicionar mais do que um
cdigo por agrupamento.










Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




Exemplos:


Para a instruo:

MsgBox "Erro de Sintaxe!!!", 2 +48 +512 +4096, "Mensagem de Erro"


exibida a seguinte janela:



Figura 24 MsgBox




Para a instruo:

MsgBox "Erro de Sintaxe!!!", 5 +64 +256 +4096, "Mensagem de Erro"

exibida a seguinte janela:



Figura 25 MsgBox







Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Valores Produzidos


Como j foi referido, a funo MsgBox produz um valor em funo do boto accionado,
assim produzir como output um dos valores constantes da tabela seguinte:


Constante de VBA Valor Boto Accionado

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

































Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br





















D
D
o
o
m
m

n
n
i
i
o
o
d
d
a
a
s
s

v
v
a
a
r
r
i
i

v
v
e
e
i
i
s
s
,
,

c
c
o
o
n
n
s
s
t
t
a
a
n
n
t
t
e
e
s
s
e
e

r
r
o
o
t
t
i
i
n
n
a
a
s
s













Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




O QUE O DOMINI O?
Scope ou domnio de um elemento refere-se rea na aplicao na qual esse mesmo
elemento pode ser acedvel e utilizado, ou seja onde que o elemento reconhecido.



DOM NI O DAS VARI VEIS
Refere-se rea onde a varivel permanece activa, mantendo o valor que lhe vai sendo
atribudo.

Existem 3 nveis de domnio para as variveis:

mbito do Procedimento ou Procedimental
mbito do Modulo ou Modular
mbito do Projecto


As declaraes de tipos User Defined que so escritas no Declarations do mdulo tm
domnio de Projecto.



mbito do Procedimento


Estas variveis so declaradas no corpo do procedimento com recurso palavra chave
Dim.

So variveis criadas aquando da execuo do procedimento e automaticamente
destrudas quando o procedimento termina, sendo que s so reconhecidas no seio do
procedimento que as declarou. Assim sendo, qualquer tentativa realizada por um
procedimento no sentido de trabalhar com variveis definidas no corpo de um outro
procedimento no ter xito.

Exemplo

Sub Ambito_Procedimento()
Dim Var_1 As Integer
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Var_1 =InputBox (Introduza um nmero Inteiro)
MsgBox Foi este o nmero que introduziu: & Var_1
Ambito_Procedimento_2
End Sub

Sub Ambito_Procedimento_2()
MsgBox Foi este o nmero que introduziu: & Var_1
End Sub



A execuo destas rotinas resultar no seguinte:

A primeira mensagem (MsgBox no Procedimento Ambito_Procedimento)exibir o
nmero introduzido pelo utilizador que fora armazenado na varivel Var_1.

A segunda mensagem, oriunda da instruo MsgBox do Procedimento
Ambito_Procedimento_2 no exibir o valor introduzido, porque a varivel Var_1 nele
referida considerada como uma varivel interna do processo, e portanto criada dentro
do procedimento Ambito_Procedimento_2. Como tal, embora possua o mesmo nome
que a varivel da rotina Ambito_Procedimento_1 no existe qualquer ligao entre elas,
so duas variveis distintas.

Neste caso se se pretendesse que o valor da primeira varivel fosse reconhecido no
procedimento chamado, ter-se-ia de o passar por parmetro.



mbito do Mdulo

Uma varivel como mbito do Mdulo pode ser acedida por todas as rotinas
existentes no mdulo onde a varivel declarada.

Para declarar uma varivel do nvel modular, dever declar-la com a palavra chave
Dim na seco Declarations do respectivo mdulo VBA. Neste caso qualquer varivel
a declarada ser considerada de nvel modular por defeito, para tornar esse facto mais
explicito poder-se- utilizar a palavra chave Private na declarao:

Ex:
Private Var_2 As String



Exemplo:


Dim Var_1 As Integer ou Private Var_1 As Integer

Sub Ambito_Modulo()
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Var_1 =InputBox (Introduza um nmero Inteiro)
Ambito_Modulo_2
End Sub

Sub Ambito_Modulo_2()
MsgBox Foi este o nmero que introduziu: & Var_1
End Sub


Neste caso como a varivel reconhecida no mdulo por qualquer rotina nele existente,
desde que seja referida sempre pelo mesmo nome, o procedimento Ambito_Modulo_2
ir exibir o valor introduzido pelo utilizador no procedimento Ambito_Modulo.


mbito do Projecto

As variveis assim definidas tm o mbito correspondente a todo o projecto, isto
podem ser acedidas e alteradas em todos e quaisquer mdulos. Para declarar
variveis deste tipo dever faz-lo na seco Declarations de qualquer mdulo, para
tal dever utilizar a palavra chave Public.



Exemplo:


No Module_1 tem-se:

Public Var_1 As Integer

Sub Ambito_Projecto()
Var_1 =InputBox (Introduza um nmero Inteiro)
Ambito_Projecto _2
End Sub


No Module_2 tem-se:

Sub Ambito_Projecto _2()
MsgBox Foi este o nmero que introduziu: & Var_1
End Sub


A execuo do procedimento Ambito_Projecto no Module_1 mandou executar o
procedimento Ambito_Projecto do Module_2, e o valor atribudo varivel Var_1 foi
acedido posteriormente noutro procedimento de outro mdulo, dado tratar-se de uma
varivel global.


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br





DOM NI O DAS CONSTANTES

semelhana das variveis tambm as constantes tm 3 nveis de domnio:

mbito do Procedimento ou Procedimental
mbito do Modulo ou Modular
mbito do Projecto


mbito do Procedimento

Estas constantes so declaradas no corpo do procedimento com recurso palavra
chave Const. S tm existncia dentro do procedimento onde so declaradas.


Exemplo:

Sub Ambito_Procedimento()

Const Taxa_Desc As Single =0.05
Dim Desconto As Double

Desconto =InputBox (Introduza o montante das Compras) * Taxa_Desc
MsgBox O desconto de : & Desconto

End Sub



mbito do Mdulo

Uma constante com mbito do Mdulo pode ser utilizada por todas as rotinas
existentes no mdulo onde definida.

Para declarar uma constante a nvel modular, dever declar-la com a palavra chave
Const na seco Declarations do respectivo mdulo VBA. Neste caso qualquer
constante a declarada ser considerada de nvel modular por defeito, para tornar esse
facto mais explicito poder-se- utilizar a palavra chave Private na declarao:

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Ex:
Private Const Const_1 As String



mbito do Projecto

As constantes assim definidas tm o mbito correspondente a todo o projecto, isto
podem ser utilizadas em todos e qualquer mdulo. Para definir constantes deste tipo
dever faz-lo na seco Declarations de qualquer mdulo, para tal dever utilizar a
palavra chave Public.

Ex:
Public Const Const_1 As String


DOM NI O DE SUBROTI NAS E FUNES
Estas s tm dois nveis de Scope: o nvel do projecto e o nvel do mdulo.

Por defeito as rotinas so de mbito do projecto sem qualquer indicao adicional.
Contudo poder tornar este facto mais explicito pela introduo da Palavra-Chave
Public, que em termos operacionais no adicionar qualquer funcionalidade, mas em
termos de leitura dar uma maior percepo.


Exemplo:

Public Sub Ambito_Procedimento()
Const Taxa_Desc As Single =0.05
Dim Desconto As Double

Desconto =InputBox (Introduza o montante das Compras) * Taxa_Desc
MsgBox O desconto de : & Desconto
End Sub


Para que uma rotina tenha o mbito do mdulo onde est definida, dever ser antecedida
pela palavra chave Private.








Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br






















E
E
s
s
t
t
r
r
u
u
t
t
u
u
r
r
a
a
s
s
d
d
e
e

C
C
o
o
n
n
t
t
r
r
o
o
l
l
o
o




















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br






O QUE SO ESTRUTURAS DE CONTROLO?

O VBA disponibiliza algumas estruturas que pode utilizar para controlar o decurso da
execuo da rotina. Estas estruturas do ao programador um poder enorme para
construir rotinas bastante complexas e flexveis.



QUAI S AS ESTRUTURAS

VBA Control


If -Then - Else Testa uma condio e executa um determinado conjunto de
instrues consoante o resultado dessa avaliao

For Next Executa uma determinada tarefa um determinado nmero de
vezes.

While-Wend Executa uma determinada tarefa enquanto que uma
determinada condio permanea verdadeira, i.e., com o
valor True.

Do Loop Executa uma determinada tarefa enquanto que a avaliao de
uma condio permanea True ou ento at que seja True.

Select - Case Selecciona um dos segmentos de cdigo a processar
mediante a avaliao consecutiva de condies.

For Each Next Realiza uma determinada tarefa repetitiva em cada objecto
de uma coleco ou em cada item de um array.








Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

IF-THEN-ELSE

Funo IF do Excel

Recorrendo funo IF do Excel, recorde:

=IF( <condio>, <se condio verdadeira>, <se condio falsa>)

A funo IF tinha o seguinte comportamento:

1. Avalia a condio, que dever ser uma expresso booleana colocada como primeiro
parmetro;

2. Se a condio for verdadeira, ento (then) realiza as operaes colocadas no
segundo parmetro;

3. Caso contrrio (else), realiza as operaes que formam o terceiro parmetro

A estrutura IF do VBA tem o mesmo tipo de funcionamento, o que difere a sintaxe.


Sintaxe da Estrutura If-Then-Else


If <Condio>Then
<se condio verdadeira>
[ Else
<se condio falsa>]
End If

A palavra Else opcional num If-Then-Else Statement, sendo que no caso de ser
omitida, a avaliao negativa da condio implica uma sada automtica da Instruo If.








Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Aplicao Prtica




Figura 26 Aplicao Prtica comumIF



A rotina Aposta recebe uma aposta do utilizador e mediante o Sorteio a realizar pela
respectiva funo, verifica se o jogador ganhou ou no a aposta, comunicando-lhe esse
facto.

Para uma maior clarificao do funcionamento do IF, atenda ao quadro seguinte:



If Palavra chave que indica o inicio de uma instruo If-Then-Else

Nsorteio = NAposta A condio a testar. Serve para determinar a sequncia a dar execuo
da rotina. Da avaliao desta condio pode-se obter um de dois valores
True ou False, sendo que depende deste resultado o caminho a prosseguir.
Se for True executar as instrues que seguirem a palavra-chave Then
at encontrar a palavra chave Else, no executando mais nada dentro do
IF, caso contrrio executar o cdigo que se seguir palavra chave Else
at ao End If.

Then Palavra chave que determina o fim da condio teste. Todas as instrues
que tm inicio nesta palavra-chave at palavra-chave Else sero
executadas se a condio for verdadeira.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
MsgBox Parabns!!
Acertou em cheio! O
nmero sorteado foi o
&NSorteio

Instrues a executar se a condio for verdadeira.
Else Palavra-chave que determina o terminus de execuo das instrues
quando o resultado da avaliao for True, e que determina o inicio das
instrues a executar se o resultado da condio for False.

MsgBox Continue a
Tentar!! O nmero
sorteado foi o
&NSorteio

Instrues a executar se a condio for falsa.
End If Palavra-chave que indica o fim do controlo de If-Then-Else e como tal
onde se deve retomar as instrues para prosseguir a execuo do
procedimento.







A instruo adicional ElseIf

Esta instruo prope uma condio alternativa se o teste da condio anterior tiver tido
um resultado negativo.

APLI CAO PRTI CA
Pretende-se criar uma macro que classifique etariamente um indivduo em funo da sua
idade. A classificao pretendida a seguinte:


Idade Classe Etria
Menos de 3 anos Beb
Dos 3 aos 12 Criana
Dos 13 aos 17 Adolescente
Dos 18 aos 25 Jovem
Dos 26 aos 65 Adulto
Mais de 65 Idoso
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br



Figura 27 Aplicao Prtica comElseIf



FOR NEXT
Permite a execuo de uma tarefa durante um determinado nmero de vezes.

Sintaxe

For <Inicializao do Contador>To <Valor >[ Step <Valor a Incrementar>]
<Instrues a realizar em cada iterao>
Next

Aplicao Prtica

Pretende-se criar uma rotina que recebendo a base e a potncia calcule o valor
respectivo.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Figura 28 Procedimento que calcula a potncia de umnmero




A instruo For-Next tem como funo calcular a potncia. O mesmo efeito poderia ser
obtido recorrendo expresso Resultado = Base ^Potncia, contudo para fins de
demonstrao de funcionamento este exemplo bastante simples.







A FUNO DAS VARIVEI S:
Varivel

Funo
Base Elemento a elevar.
Potncia Nmero de vezes a multiplicar a base.
Contador Conta o nmero de vezes que a base j foi multiplicada, uma
varivel que ser automaticamente incrementada em cada looping do
ciclo.
Resultado Varivel que armazena o resultado sucessivo por cada vez que se
multiplica.


CONSTRUO DO CI CLO:
For Palavra-chave que indica o inicio do ciclo For-Next

Contador = 1 To Potncia Expresso que contm a inicializao do contador, indicando
o valor de inicio e de fim. Assim, o nmero de vezes que o
ciclo executado ser: Valor_Fim Valor_Inicio +1.

A palavra To utilizada para separar o valor do contador no
momento inicial do valor no momento final. (Traduo: O
contador iniciar-se- a um e atingir o valor mximo
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
traduzido pela varivel Potncia)

Step 1 Palavra chave utilizada para especificar o valor a incrementar
ou decrementar ao contador do ciclo por cada vez que o loop
concretizado. Normalmente o valor a incrementar um,
contudo qualquer outro valor pode ser utilizado, desde
nmeros decimais, a nmeros negativos (Provocando assim a
decrementao). A palavra-chave Step opcional, sempre
que for omitida assumido 1 como o valor a incrementar por
defeito.

Resultado = Resultado *
Base
Instruo a realizar de cada vez que o ciclo for executado.
Neste caso a instruo nica, contudo poder-se-o adicionar
outras instrues.

Next Palavra Chave que indica o fim de um ciclo For-Next .
Sempre que a execuo do ciclo chega instruo Next
incrementa a varivel contador e volta ao inicio do ciclo.




TRADUO I NTEGRAL

For Contador = 1 To Potncia Step 1
Resultado = Resultado * Base
Next

Para o nmero de vezes, a iniciar em 1 at que atinja, o valor Potncia, pela
incrementao de 1 na execuo de cada ciclo, dever multiplicar sucessivamente o
resultado acumulado, pela base.


Funcionamento do Ciclo:


A primeira execuo do ciclo distingue-se das restantes por a ela estar associada a
inicializao do contador, sendo o restante procedimento semelhante a qualquer outra
execuo.

No inicio de cada execuo do ciclo, a varivel contador comparada com o valor
final de execuo. Se o Step for um valor positivo (incrementar) e o valor do contador
for superior ao valor final significa que o ciclo j foi realizado o nmero de vezes
pretendido, e ento o cdigo acabar a execuo da instruo For-Next e seguir na
linha de cdigo que esteja situada imediatamente a seguir, caso contrrio executa uma
vez mais o ciclo e incrementa a varivel contador. Por outro lado, se o Step contiver
valor negativo (decrementar) e o valor do contador for inferior ao valor final significa
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
que o ciclo j foi realizado o nmero de vezes pretendido, e ento o cdigo acabar a
execuo da instruo For-Next e seguir na linha de cdigo que esteja situada
imediatamente a seguir, caso contrrio executa uma vez mais o ciclo e decrementa a
varivel contador.


Perigos associados utilizao do ciclo For-Next:

No definir o limite de execuo (no atribuir valor varivel que o define)
Definir erroneamente o Step, por forma a que nunca seja obtido o valor que
determina o fim da execuo
estas condies implicaro que o ciclo no tenha fim Ciclos Infinitos





Outra Aplicao

Pretende-se criar uma rotina para calcular um factorial.


Figura 29 Procedimento que calcula o factorial



WHI LE-WEND
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

A estrutura While-Wend tem um funcionamento similar ao For-Next. Realiza um
looping um determinado nmero de vezes, at que uma determinada condio seja
verdadeira.


Sintaxe

While <Condio>
<Instrues a realizar em cada iterao>
Wend


Aplicao Prtica

Figura 30 Procedimento Lotaria Viciada



A instruo While-Wend tem como funo gerar nmeros aleatrios entre 1 e 10 por
forma a encontrar o nmero da aposta, e saber qual o nmero de lanamentos
necessrios para que aquele valor fosse obtido.



A FUNO DAS VARIVEI S:
Varivel

Funo
Num_Lotaria Nmero sorteado. Este ser inicializado a 0 por forma a que no
corresponda a nenhum valor introduzido pelo utilizador e assim possa
realizar o primeiro sorteio.

Aposta Nmero em que o utilizador pretende apostar.
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Num_Lanc Nmero de lanamentos realizados at obter o resultado da aposta.
Este valor tem de ser incrementado cada vez que realizado um
sorteio.



CONSTRUO DO CI CLO:
While Palavra-chave que indica o inicio do ciclo While-
Wend

Num_Lotaria <> Aposta Condio teste utilizada para determinar o
terminus da realizao do ciclo. Se esta condio
for Verdadeira executa as instrues que esto
dentro do While-Wend, se for Falsa a execuo
do ciclo terminada tendo o programa sequncia
nas instrues que seguem a palavra chave Wend.

Num_Lotaria = Int ( 9 * Rnd() + 1 ) Instruo a realizar de cada vez que o ciclo
executado. Tem como funo gerar nmeros
aleatrios entre 1 e 10.

Num_Lanc = Num_Lanc +1 Instruo a realizar de cada vez que o ciclo
executado. Tem como funo fazer a contagem
de quantos lanamentos foram realizados at se
obter o valor da aposta.

Beep Instruo a realizar de cada vez que o ciclo
executado. Tem como funo apitar em cada
sorteio.

Wend

Palavra Chave que indica o fim de um ciclo
While-Wend.




TRADUO I NTEGRAL
While Num_Lotaria <> Aposta
Num_Lotaria = Int ( 9 * Rnd() + 1 )
Num_Lanc = Num_Lanc +1
Beep
Wend

Enquanto o nmero sorteado no for igual ao valor da aposta, o sorteio continua, o que
implica sortear um nmero contabilizar o nmero de sorteios realizados e apitar para
que o utilizador tenha a percepo do que est a ser realizado.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


Funcionamento do Ciclo

Existe uma fase de inicializao das variveis envolvidas na condio Teste para
garantir o correcto funcionamento do ciclo.

Avalia a condio teste e se for verdadeira executa todas as instrues at palavra-
chave Wend voltando de novo avaliao da condio, se for falsa prossegue a
execuo da rotina nas instrues que se localizam depois da palavra-chave Wend.




Perigos associados utilizao do ciclo While-Wend

M ou inexistncia de inicializao das variveis envolvidas na condio-teste.
Garantir que as variveis envolvidas na condio teste podero ter valores diferentes
por cada vez que o ciclo seja executado.
Garantir que em algum momento a condio teste falsa e o ciclo termina a sua
execuo.

A no verificao destas condies implicar que o ciclo no tenha fim Ciclos
Infinitos





Outra Aplicao

Pretende-se realizar um jogo de geografia. Tente compreender o seu funcionamento.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Figura 31 Corpo do jogo


Figura 32 Funo Auxiliar



DO LOOP
Esta estrutura similar estrutura do While-Wend. Contudo fornece duas
possibilidades que esto limitadas quela estrutura:

Do Loop permite posicionar a condio teste no inicio ou fim do loop, a condio
no fim do Loop evita uma inicializao prvia do valor das variveis envolvidas na
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
condio teste, dado que essa inicializao pode ser feita no decurso do ciclo com
valores reais.

Do Loop permite ainda especificar se o loop se vai realizar enquanto (while) uma
expresso for verdadeira ou at que (until) a condio seja verdadeira (facilidade
conseguida atravs do operador Not)



Sintaxe

Poder ser:

Do [{While | Until} <condio>]

<Instrues a realizar em cada iterao>

Loop


Ou ento:

Do
<Instrues a realizar em cada iterao>

Loop[{While | Until} <condio>]



Aplicaes Prticas

Utilizando a condio teste no inicio do Loop e com a palavra While


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Figura 33 Condio teste no inicio comWhile



Utilizando a condio teste no inicio do Loop e com a palavra Until


Figura 34 Condio teste no inicio comUntil






Utilizando a condio teste no fim do Loop e com a palavra Until

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


Figura 35 Condio teste no fim comUntil





Utilizando a condio teste no fim do Loop e com a palavra While


Figura 36 Condio teste no fim comWhile



SELECT CASE
Permite a escolha de um percurso mediante a avaliao de n condies. de extrema
utilidade para evitar os Ifs encadeados, dando um maior grau de legibilidade e
simplicidade ao cdigo construdo.



Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Sintaxe

Select Case <Expresso a ser avaliada>

[Case <Valor da Expresso>
[Instrues a realizar]]
...
[Case Else
[Instrues a realizar na situao residual]]

End Select


Aplicao Prtica


Recordem o processo resolvido com recurso a If Then Else ElseIf (figura 23)
Mais facilmente seria resolvido com recurso estrutura Select Case



Figura 37 Aplicao da estrutura Select Case rotina Classe_Etaria




CONSTRUO DA ESTRUTURA
Select Case Palavras-Chave que indicam o inicio de um controlo
Select Case

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Idade Expresso sujeita a teste, i.e., varivel cujo contedo
est a ser avaliado. Esta varivel vai ser comparada
sucessivamente pelos valores alternativos
apresentados nas instrues Case <Valor>, se
encontrar o valor nalguma dessas opes Case
executar as linhas de cdigo que a tero inicio at
opo de Case seguinte. Caso o valor da varivel a
ser comparada no corresponda a nenhum valor
apresentado nas opes Case, existe uma opo Case
especial - Case Select - para os restantes valores,
neste caso sero executadas todas as instrues que
se localizem entre o Case Else e o Case Select.

Case Is<3 ou
Case Is<=12 ou
Case Is<=17 ou
Case Is<=25 ou
Case Is<=65 ou



Expresses Case. Se o valor da varivel for igual a
qualquer um dos valores apresentados em cada uma
destas expresses, o fluxo de execuo ter
continuidade na linha abaixo da expresso case que
faz o matching, at que uma nova expresso case
seja encontrada. Sendo que nessa altura termina o
controlo Select Case dando continuidade ao
programa nas instrues que se seguirem ao End
Select.

Case Else Ser a instruo Case residual, seleccionada somente
se nenhuma das outras o tiver sido. Neste caso sero
realizadas todas as instrues de cdigo que se lhe
seguirem at expresso End Select. Findo o qual
seguir todas as instrues aps o controlo Select
case.

End Select Palavra-Chave que indica o fim do controlo Select
Case.


FOR EACH NEXT
A estrutura For-each-next de longe a mais potente do VBA. De facto permite executar
uma determinada instruo em todos os elementos de uma coleco de objectos, ou em
todos os elementos de um array.

Esta estrutura quando aplicada em arrays no funciona para a actualizao dos valores
do array, mas somente para a extraco do seu contedo. Contudo quando aplicada a
coleces de objectos pode s-lo para alterao das suas propriedades ou extraco de
valores.


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Sintaxe


For Each <Varivel do tipo dos elementos do grupo>In <Grupo>

<Instrues a realizar para cada elemento do grupo>

Next








Aplicaes Prticas

UTI LIZANDO ARRAYS
Pretende-se inicializar um array com um conjunto de 5 pases e posteriormente
visualizar os elementos introduzidos.

Figura 38 Exemplo no-funcional

Repare que o exemplo, poder estar conceptualmente correcto, mas no funciona devido
restrio do For-Each-Next para a alterao de valores de arrays tarefa impossvel de
realizar. A alternativa poderia ser, a exibida na figura 39:
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Figura 39 Alterao da sub-rotina Inicializa_Array




Construo do Ciclo

For Each Palavras-Chave que indicam o inicio de um controlo
For-Each

Pais Varivel qual vo ser atribudos sucessivamente
todos os elementos do grupo de objectos. Este grupo
pode ser constitudo por uma array ou uma coleco
de objectos. Sendo que se se tratar de um array
esta varivel dever ser do tipo Variant. Se se tratar
de uma coleco, esta varivel poder assumir o tipo
Variant, o tipo Object genrico ou o tipo Object
especifico que corresponde ao tipo de objectos a que
a coleco remete.

In Palavra-chave que separa a varivel do grupo.

Array_Pais Grupo de elementos a tratar. Poder ser um array ou
uma coleco de objectos. O ciclo ser executado
tantas vezes quantos os elementos constantes do
grupo. Na primeira iterao, a varivel assume o
valor do primeiro item do grupo, como tal em cada
loop este valor ser actualizado pelo item seguinte.

MsgBox Pais Instruo a realizar em cada volta do ciclo. Sendo
que em cada volta a varivel Pais ter um elemento
diferente.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Next Palavra-chave que indica o fim do loop. Neste
momento o programa ter continuao na instruo
For Each correspondente se a varivel no
corresponder ao ltimo item do grupo, caso contrrio
sair da instruo For Each-Next prosseguindo a
execuo da rotina na linha de cdigo abaixo do
Next.



UTI LIZANDO COLECES DE OBJ ECTOS


Figura 40 Rotina para atribuir nomes s WorkSheets do Excel




Figura 41 Rotina para demonstrar o manuseamento de ranges

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br



















C
C
o
o
l
l
e
e
c
c

e
e
s
s
d
d
e
e

O
O
b
b
j
j
e
e
c
c
t
t
o
o
s
s
e
e

O
O
b
b
j
j
e
e
c
c
t
t
o
o
s
s



















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

O QUE SO OBJECTOS ?
Objectos so elementos caracterizados por um conjunto de propriedades, e que tm
subjacente um determinado comportamento. Por exemplo, uma janela do windows um
objecto, caracterizada por um nome, um ttulo, uma dimenso, um posicionamento
dentro do cran,, e tem um comportamento inerente, pode ser aberta, fechada,
minimizada, maximizada, escondida, redimensionada,

Seguindo esta lgica podemos identificar alguns objectos do ambiente de trabalho
Windows: o boto, o grfico, o menu, o documento, a imagem, a textbox, a frmula, o
workbook, a worksheet, a clula, o conjunto de clulas de uma worksheet,


OBJ ECTOS: PROPRI EDADES, MTODOS E
EVENTOS
Propriedades

As propriedades dos objectos constituem o conjunto de caracteristicas que o definem.
Por exemplo: nome, cor, dimenso, designao, valor contido,

Mtodos

Os mtodos traduzem o comportamento de um objecto. Estes mtodos representam
procedimentos que executam uma determinada tarefa, que pode ser complementada
atravs da passagem de argumentos ou parmetros.



Eventos

Eventos ou acontecimentos, representam todas as actividades que envolvam o objecto e
que normalmente directa ou indirectamente so despoletadas pelo utilizador. Por
exemplo: abrir ou fechar um workbook, clicar sobre um boto ou worksheet, alterar o
contedo de um elemento,

Estes eventos servem para que possamos activar uma determinada tarefa aquando da sua
ocorrncia.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br

Exemplo:

Suponha que pretende executar uma macro quando abre o seu workbook.

1 Crie a macro que pretende executar.

2 No Editor de Visual Basic, na janela de Projecto Project Window seleccione o
objecto ThisWorkBook. Na janela de edio repare nas duas caixinhas que se
encontram na parte superior. A do lado esquerdo indica general clique nela e seleccione
o elemento workbook, na caixinha da direita seleccione o evento Open.

3 Automaticamente aparecer um procedimento na janela de edio cujo nome ser
Workbook_Open, tudo o que escrever no seu contedo ser executado quando o
documento for aberto, neste caso indique o nome da macro que criou anteriormente.

OBJ ECTOS MAI S UTILI ZADOS NO EXCEL


Os Objectos mais utilizados no Excel so: Application, WorkBook, WorkSheet e Range


Application

Application o objecto de topo hierrquico, representa o prprio Excel.


PROPRIEDADES
Propriedades

Caption Meno exibida na barra de ttulos do Excel

DisplayAlerts TRUE as mensagens de alerta so exibidas durante a
execuo da subrotina. False caso contrrio.

Path Nome da directoria onde o Excel est instalado.

ScreenUpdating True altera o cran consoante a subrotina que executa.
Caso contrrio, o cran no alterado durante a execuo da
subrotina.

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
WindoWorkSheetState O estado da janela da aplicao:
XlNormal janela tamanho normal
XlMaximized janela tamanho maximizado
XlMinimized janela com tamanho minimizado

DisplayStatusBar Mostra ou esconde a StatusBar.
True exibe

DisplayFormulaBar Mostra ou esconde a Barra de Formulas
True exibe




MTODOS

Mtodos

Calculate Implica o clculo de todas as frmulas de todas as WorkSheet e
WorkBookS abertos.

Argumentos : no tem


Help Exibe um tpico do Help de um determinado ficheiro de Help.

Argumentos :
Helpfile: nome do ficheiro, incluindo a path se necessrio
Helpcontextid: nmero que faz referncia ao ndice de help


Quit Fecha aplicao Excel. (se a propriedade Display alerts estiver com o
valor False, o Excel no propor a gravao de alteraes nos
ficheiros)

Argumentos : no tem


Run Utilizado para correr uma subrotina de VB ou uma Macro do XL
Argumentos :
Macro: nome da macro ou subrotina a executar

Argumentos que a subrotina necessita para ser executada
arg1:=<valor 1>, arg2:=<valor>,





Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br








WorkBook

O Objecto WorkBook, na hierarquia de objectos segue de imediato o objecto
application e representa um ficheiro de Excel.



PROPRIEDADES
Propriedades

Name Nome do ficheiro. No permite a alterao do nome, para isso
necessrio proceder ao Save/As


Path Directoria onde o ficheiro se encontra

Saved True se no houve nenhuma alterao no ficheiro desde a
ltima gravao
False caso contrrio
Exemplo:
If not(activeWorkbook.Saved) Then
ActiveWorkbook.Save
End If




















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br





MTODOS

Mtodos

Activate Activa um documento aberto. Equivalente a ir ao Window e seleccionar
um documento aberto, trazendo-o para a janela principal do Excel.
Argumentos: no tem

Close Fecha um documento.
Argumentos:
SaveChanges se True, o documento gravado antes de ser
fechado; False caso contrrio
FileName se o argumento SaveChanges estiver a TRUE, o
WorkBook gravado com o nome aqui indicado
RoutWorkBook se TRUE e o WorkBook tiver endereos
para envio atribudos, envia o ficheiro por e-mail antes de fechar,
caso contrrio no.

Protect Protege um documento contra qualquer tipo de alterao
Argumentos:
Password: Password a utilizar na proteco
Structure: True protege tambm a estrutura
WindoWorkSheet: True a estrutura do WorkBook na janela
protegida

Save Grava o WorkBook.
Argumentos: No Tem

SaveCopyAs Cria uma cpia do documento em questo
Argumentos:
FileName: nome da cpia pretendida para o ficheiro













Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




WorkSheet

Na hierarquia situa-se abaixo do objecto WorkBook, uma vez que um WorkBook
constitudo por um conjunto de WorkSheets.



PROPRIEDADES

Propriedades

Index ndice de uma WorkSheet num WorkBook

Name Nome da WorkSheet.

UsedRange Traduz o range na WorkSheet que contm dados.

Visible True est visvel
False est escondida, mas o utilizador pode vizualiz-la
recorrendo ao Menu Format
XlVeryHidden est escondida e ningum a pode visualizar, a
menos que volte a aplicar uma subrotina que a coloque visvel.



MTODOS
Mtodos

Activate Activa uma determinada WorkSheet. Equivalente a estarmos a
trabalhar num WorkBook e clicarmos nela para visualizarmos
o seu contedo.
Argumentos: No Tem

Calculate Provoca o clculo de todas as frmulas constantes da
WorkSheet
Argumentos: No Tem

Delete Apaga uma WorkSheet do WorkBook.
Argumentos: No Tem

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Protect Protege uma WorkSheet contra qualquer tipo de alterao
Argumentos:
Password: Password a utilizar na proteco
DrawingObjects: True- protege os objectos grficos
Contents True- protege as clulas e contedos
Scenarios True protege os cenrios afectos WorkSheet
UserInterfaceOnly True protege os interfaces contra
alteraes apesar de poder alterar as subrotinas

Cell Referncia uma clula, atravs dos seus ndices numricos.
Argumentos:
Nmero da Linha
Nmero da Coluna
Ex: Clula C5 ser representado por Cells( 5, 3)





Range

Objecto utilizado para representar uma ou mais clulas de uma WorkSheet.


PROPRIEDADES
Propriedades

Count Nmero de Clulas num Range. Read-Only
Dependents Retorna um range, que contm todos os dependentes (valores
indexados pelas frmulas)do range em questo. Read-Only
Name Nome de um range. Read/Write
Value Valor constante de um range (clula ou conjunto de clulas).
Read/Write
Formula Traduz a frmula contida num range como uma string.
Read/Write
Text Busca o contedo de uma clula mas em formato de texto.















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br



MTODOS
Mtodos
Calculate Provoca o clculo da frmula constantes do range
Argumentos: No Tem
ClearContents Apaga o contedo (frmulas e valores) de uma clula,
deixando os formatos.
Argumentos: No Tem
Copy Copia o contedo de um range para um outro de igual
dimenso ou ento para o clipboard.
Argumentos:
Destination range para o qual os valores vo ser copiados (na
ausncia deste parmetro a cpia feita para o clipboard)
OffSet Provoca um deslocamento de um determinado nmero de
linhas e de colunas, tendo como base o range ao qual este
mtodo est a ser aplicado.
Argumentos:
RowOffset nmero de linhas que se desloca
ColumnOffset nmero de colunas que se desloca
EntireRow Faz referncia (s) linha(s) indicadas por um determinado
range.
Argumentos: No Tem
Select Selecciona o range em questo.
Argumentos:
Replace- (Opcional)
Cell Referncia uma clula, atravs dos seus ndices numricos.
Argumentos:
Nmero da Linha
Nmero da Coluna
Ex: Clula C5 ser representado por Cells( 5, 3)













Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


OBJ ECTOS SI NGULARES VS
COLECES DE OBJ ECTOS

Objecto Singular refere um nico objecto que pode ser referenciado pelo nome.

Coleces de Objectos constituem conjuntos de objectos singulares que so
referenciados pelo ndice que os identifica na coleco.


As coleces de objectos tambm podem ser considerados como
objectos.
Exemplo:

WorkBooks(Book1.XLS) um conjunto de objectos do tipo WorkSheet, mas tambm
um objecto do tipo WorkBook.


























Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


INDEXAO DE COLECES POR NMERO
OU NOME


Perante uma coleco de objectos necessrio identificar cada um dos diferentes itens
que a compem para que a eles seja possvel aceder.

Por analogia poder-se- mencionar o exemplo do array, este uma varivel plural, dado
que composto por um conjunto de variveis. Quando se pretende aceder a uma
posio do array utiliza-se o nome do array e o ndice da posio requerida.

Assim, a indexao de coleces pode ser realizada com base:
em nmeros ou
em nomes.


Indexao com Base em Nmeros

Os nmeros prendem-se com a ordem pela qual o objecto est inserido na coleco
(comea em 1).

Exemplo:

WorkSheets(3).Name=Terceiro

















Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Indexao com Base no Nome

Selecciona-se um objecto numa coleco pelo nome que est associado ao objecto.

Exemplo:

WorkSheets(Sheet3).Name=Terceiro


VANTAGEM
No necessrio saber a ordem pela qual foi inserido na coleco


DESVANTAGEM
Alterao do nome da sheet provoca erros

Exemplo:

WorkSheets(Sheet3).Name=Terceiro
WorkSheets(Sheet3).Visible=False o objecto no reconhecido



O Objecto Range uma excepo

O objecto range referido da mesma forma para ser utilizado como um objecto singular
ou coleco de objectos.


TRATAMENTO COMO OBJ ECTO:
Range(A1).Value=1

Equivalente a colocar na primeira clula da Sheet o valor 1.



TRATAMENTO COMO COLECO DE OBJ ECTOS:
Range (A1:F20).Value=1
Equivalente a colocar em todas as clulas do range A1 a F20 o valor 1.


Ou ento:

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Range (A1:F20).Name=Conjunto
Range (Conjunto).Value=1

Onde, na primeira instruo se atribui ao range A1:F20 o nome Conjunto, e na
ltima instruo se utiliza essa designao para referenciar o respectivo conjunto de
clulas e atribuir-lhe o valor 1.


REFERNCI A IMPLCITA

Quando se faz referncia a uma clula da worksheet, pode-se faz-lo de diversas formas
equivalentes. No quadro seguinte exibida a equivalncia entre a expresso mais
completa e a mais reduzida, sendo que ambas tm a mesma funo (colocar na clula
A1 o valor 1):





A diferena entre ambas as formas de acesso est no facto da segunda forma
(Range(A1).Value =1) admitir que se est a trabalhar no workbook e na worksheet
que nesse momento esto activas no Excel, enquanto que na primeira forma so
indicadas as referncias identificadoras do workbook e da worksheet onde se pretende
trabalhar.

Assim, pode-se afirmar que a segunda forma faz uma aluso implcita aplicao, ao
workbook e worksheet onde se trabalha.

Declarao implcita da aplicao:

Para fazer a aluso implicita da aplicao, basta no a indicar, e por defeito o Excel
assume que se est a trabalhar no seu contexto:







Aplication.Workbooks(1).Worksheets(1).Range(A1).Value=1
Range(A1).Value=1

Workbooks(1).Worksheets(1).Range(A1).Value=1

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br




Declarao implcita do WorkBook:


Omitir a referncia ao workbook, semelhante a assumir o workbook activo como
ambiente de trabalho. Neste contexto, as expresses abaixo indicadas assumem por
defeito que se est a trabalhar no Excel, e no workbook que nesse momento estiver
activo.





Declarao implcita da WorkSheet:


O mesmo se aplica relativamente s worksheets.


















ActiveWorkbook.Worksheets(1).Range(A1).Value=1
Worksheets(1).Range(A1).Value=1


ActiveSheet.Range(A1).Value=1
Range(A1).Value=1

Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Nvel de referncia a privilegiar

Temos aqui representados 7 nveis de codificao:
Ento, se existem tantas formas de referenciar uma clula, qual a forma a previligiar?




O ideal seria escrever na forma completa, mas existem algumas desvantagens:

cdigo muito denso dificuldades em escrever e ler

maior probabilidade de ocorrncia de erros quando no se sabe precisamente o
contexto em que a aplicao vai ser executada perigoso descrever uma path
certinha

















Aplication.Workbooks(1).Worksheets(1).Range(A1).Value=1

Workbooks(1).Worksheets(1).Range(A1).Value=1

ActiveWorkbook.Worksheets(1).Range(A1).Value=1

Worksheets(1).Range(A1).Value=1

Activesheet.Range(A1).Value=1

Range(A1).Value=1

Range(A1)=1


Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br





















M
M
i
i
s
s
c
c
e
e
l
l
l
l
a
a
n
n
e
e
o
o
u
u
s
s

























Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br


A I NSTRUO WI TH

A instruo With permite abreviar referncias a objectos. No faz sentido utiliz-lo
quando se pretende utilizar s uma propriedade ou mtodo, mas quando pretendemos
utilizar bastantes.


Aplicao Prtica



Figura 38 Rotina para demonstrar o manuseamento de objectos sema instruo With


Ou Ento:

Figura 39 Rotina para demonstrar o manuseamento de objectos coma instruo With

OUTRAS FUNES TEI S DO VBA
Abs Valor absoluto de um nmero.
CurDir Directoria MS-DOS corrente.
Date Data do sistema.
Exit Do Interrompe a execuo de uma ciclo Do Loop
Excel Macros e Visual Basic for Applications
(verso Draft)
_____________________________________________________________________________________
_Geovane Zomer
geovanezomerlivros@hotmail.com.br
Exit For Interrompe a execuo de um ciclo For Next ou For
Each Next
Exit Function Provoca a interrupo da execuo de uma funo.
Exit Sub Provoca a interrupo da execuo de uma sub-rotina.
Fix Arredonda um nmero decimal positivo para baixo, e um
negativo para cima. Ex 3,9 ->3 e 3,9 ->-3
Int Arredonda para cima um nmero decimal positivo ou
negativo. Ex 3,9 ->4 e 3,9 ->-4
Is Array True se a expresso um array. False caso contrrio.
IsDate True se a expresso do tipo Date. False caso contrrio.
IsEmpty True se nenhum valor foi atribudo varivel.
IsError True se a expresso contiver um erro.
IsNull True se a expresso representar o valor NULL.
IsNumeric True se a expresso for numrica.
IsObject True se se tratar de um objecto.
Len Retorna a dimenso de uma String.
Now Retorna o valor da data e da hora actual.
Shell Corre um programa executvel.
Sqr Retorna a raiz quadrada de um nmero.
Str Retorna a representao String de um nmero.
StrComp Realiza a comparao de strings, produzindo True ou
False conforme sejam ou no iguais.
Time Produz a hora actual.
TypeName Retorna o tipo de dados de uma varivel.
Cint Converte uma expresso de forma numrica ou textual
para um valor de tipo inteiro.
Cbool Converte uma expresso de forma numrica ou textual
para um valor de tipo booleano.
Cdate Converte uma expresso de forma numrica ou textual
para um valor de tipo data.
CLng Converte uma expresso de forma numrica ou textual
para um valor de tipo Long.
CStr Converte uma expresso de forma numrica ou textual
para um valor de tipo String.

Você também pode gostar