Você está na página 1de 60

Excel Macros e Visual Basic for Applications

ndice

MACROS .......................................................................................................................................................5
O QUE UMA MACRO? .................................................................................................................................6
CRIAR MACROS ............................................................................................................................................6
Gravar uma Macro ..................................................................................................................................6
Exerccio .......................................................................................................................................................................8
Procedimento BackGround do Excel ..........................................................................................................................9

Programao em Visual Basic for Applications....................................................................................10


EXECUTAR UMA MACRO ............................................................................................................................12
Tecla de Atalho Shortcut Key .............................................................................................................12
Boto na Toolbar...................................................................................................................................13
Associar uma Macro a um Boto ..............................................................................................................................13
Dissociar uma Macro de um Boto ...........................................................................................................................15

Run ........................................................................................................................................................16
Comando no Menu ................................................................................................................................17
Associao de uma Macro a um Comando do Menu ...............................................................................................17
Dissociao .................................................................................................................................................................19

Editor de Visual Basic for Applications ................................................................................................20


REMOVER MACROS ....................................................................................................................................21
Remoo de Macros em Ambiente Excel ...............................................................................................21
Remoo de Macros no Editor de VBA .................................................................................................21
EDITOR DE VISUAL BASIC FOR APPLICATIONS ...........................................................................22
PROJECT EXPLORER ...................................................................................................................................24
PROPERTIES WINDOW ................................................................................................................................26
JANELA DE EDIO ....................................................................................................................................27
OBJECT BROWSER ......................................................................................................................................28
HELP ON-LINE ...........................................................................................................................................28
AS CORES DO VBA ....................................................................................................................................29
FUNES E SUBROTINAS .....................................................................................................................30
SUBROTINAS ..............................................................................................................................................32
Definio de SubRotinas .......................................................................................................................32
Trabalhar no Editor de VBA Criar uma SubRotina ...........................................................................33
Execuo de uma SubRotina .................................................................................................................34
FUNES ....................................................................................................................................................34
Definio de Funes ............................................................................................................................34
Definio do tipo de parmetros e do tipo da funo ...........................................................................35
Trabalhar no Editor de VBA Criar uma Funo ................................................................................36
Execuo de uma Funo ......................................................................................................................37
Execuo dentro de uma Clula ................................................................................................................................38
Execuo dentro de uma Rotina ................................................................................................................................40

DIFERENAS ENTRE FUNES E ROTINAS ..................................................................................................42


REGRAS PARA A PASSAGEM DE PARMETROS.............................................................................................42
VARIVEIS ................................................................................................................................................43
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
1 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


MANUSEAMENTO COM VARIVEIS .............................................................................................................43
O que so variveis? .............................................................................................................................44
Assignao de valores a variveis: .......................................................................................................44
Utilizao de variveis como se fossem valores: ..................................................................................45
TIPOS DE VARIVEIS...................................................................................................................................45
DECLARAO DE VARIVEIS .....................................................................................................................47
VARIVEIS VANTAGENS DA UTILIZAO ................................................................................................47
VARIVEIS DO TIPO OBJECTO ....................................................................................................................48
Declarao da Varivel Objecto ...........................................................................................................48
Atribuio de uma varivel Objecto ......................................................................................................48
Utilizao Genrica da Varivel Objecto .............................................................................................49
Utilizao Especifica da Varivel Objecto............................................................................................49
VARIVEIS DECLARAO OPCIONAL E O TIPO VARIANT ........................................................................51
Os Prs e Contras da Utilizao do tipo Variants ................................................................................51
Prs ..............................................................................................................................................................................51
Contras ........................................................................................................................................................................51

Variveis Declarao Forada ..........................................................................................................52


VARIVEIS TIPOS DEFINIDOS PELO UTILIZADOR - ESTRUTURAS ...............................................................53
Definio do Tipo ..................................................................................................................................53
Utilizao das Estruturas de Dados ......................................................................................................54
VARIVEIS ARRAYS ................................................................................................................................55
O que um Array ? ...............................................................................................................................55
Array Uni-Dimensional..............................................................................................................................................55
Array Bi-Dimensional ................................................................................................................................................56

Declarao de um array........................................................................................................................57
Arrays Uni-dimensionais ...........................................................................................................................................57
Arrays Bi-dimensionais..............................................................................................................................................57

Utilizao de um Array .........................................................................................................................58


Para aceder ao elemento .............................................................................................................................................58
Atribuio de valores .................................................................................................................................................58

Option Base e Array Bounds .................................................................................................................59


CONSTANTES .............................................................................. ERRO! INDICADOR NO DEFINIDO.
O QUE SO CONSTANTES ? .................................................................... ERRO! INDICADOR NO DEFINIDO.
INPUTBOX E MSGBOX.............................................................. ERRO! INDICADOR NO DEFINIDO.
O QUE SO ? .......................................................................................... ERRO! INDICADOR NO DEFINIDO.
INPUTBOX ............................................................................................. ERRO! INDICADOR NO DEFINIDO.
O que faz ...............................................................................................Erro! Indicador no definido.
Sintaxe ......................................................................................................Erro! Indicador no definido.
Parmetros ...............................................................................................Erro! Indicador no definido.
MSGBOX ............................................................................................... ERRO! INDICADOR NO DEFINIDO.
O que faz ...............................................................................................Erro! Indicador no definido.
Sintaxe ......................................................................................................Erro! Indicador no definido.
Parmetros ...............................................................................................Erro! Indicador no definido.
Valores Produzidos ...............................................................................Erro! Indicador no definido.
DOMNIO DAS VARIVEIS, CONSTANTES E ROTINAS .. ERRO! INDICADOR NO DEFINIDO.
O QUE O DOMINIO? ............................................................................. ERRO! INDICADOR NO DEFINIDO.
DOMNIO DAS VARIVEIS...................................................................... ERRO! INDICADOR NO DEFINIDO.
mbito do Procedimento ..........................................................................Erro! Indicador no definido.
mbito do Mdulo ....................................................................................Erro! Indicador no definido.
mbito do Projecto ...................................................................................Erro! Indicador no definido.
DOMNIO DAS CONSTANTES .................................................................. ERRO! INDICADOR NO DEFINIDO.
mbito do Procedimento ..........................................................................Erro! Indicador no definido.
mbito do Mdulo ....................................................................................Erro! Indicador no definido.
mbito do Projecto ...................................................................................Erro! Indicador no definido.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
2 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


DOMNIO DE SUBROTINAS E FUNES .................................................. ERRO! INDICADOR NO DEFINIDO.
ESTRUTURAS DE CONTROLO ............................................... ERRO! INDICADOR NO DEFINIDO.
O QUE SO ESTRUTURAS DE CONTROLO? .............................................. ERRO! INDICADOR NO DEFINIDO.
QUAIS AS ESTRUTURAS ..................................................................... ERRO! INDICADOR NO DEFINIDO.
IF-THEN-ELSE ....................................................................................... ERRO! INDICADOR NO DEFINIDO.
Funo IF do Excel ..................................................................................Erro! Indicador no definido.
Sintaxe da Estrutura If-Then-Else ............................................................Erro! Indicador no definido.
Aplicao Prtica .....................................................................................Erro! Indicador no definido.
A instruo adicional ElseIf ....................................................................Erro! Indicador no definido.
Aplicao Prtica ....................................................................................................... Erro! Indicador no definido.

FOR NEXT........................................................................................... ERRO! INDICADOR NO DEFINIDO.


Sintaxe ......................................................................................................Erro! Indicador no definido.
Aplicao Prtica .....................................................................................Erro! Indicador no definido.
A Funo das Variveis: ........................................................................................... Erro! Indicador no definido.
Construo do Ciclo: ................................................................................................. Erro! Indicador no definido.
Traduo Integral....................................................................................................... Erro! Indicador no definido.

Funcionamento do Ciclo: .........................................................................Erro! Indicador no definido.


Perigos associados utilizao do ciclo For-Next: .................................Erro! Indicador no definido.
Outra Aplicao .......................................................................................Erro! Indicador no definido.
WHILE-WEND ....................................................................................... ERRO! INDICADOR NO DEFINIDO.
Sintaxe ......................................................................................................Erro! Indicador no definido.
Aplicao Prtica .....................................................................................Erro! Indicador no definido.
A Funo das Variveis: ........................................................................................... Erro! Indicador no definido.
Construo do Ciclo: ................................................................................................. Erro! Indicador no definido.
Traduo Integral....................................................................................................... Erro! Indicador no definido.

Funcionamento do Ciclo ..........................................................................Erro! Indicador no definido.


Perigos associados utilizao do ciclo While-Wend .............................Erro! Indicador no definido.
Outra Aplicao .......................................................................................Erro! Indicador no definido.
DO LOOP ............................................................................................ ERRO! INDICADOR NO DEFINIDO.
Sintaxe ......................................................................................................Erro! Indicador no definido.
Aplicaes Prticas ..................................................................................Erro! Indicador no definido.
SELECT CASE ........................................................................................ ERRO! INDICADOR NO DEFINIDO.
Sintaxe ......................................................................................................Erro! Indicador no definido.
Aplicao Prtica .....................................................................................Erro! Indicador no definido.
Construo da Estrutura ............................................................................................ Erro! Indicador no definido.

FOR EACH NEXT .............................................................................. ERRO! INDICADOR NO DEFINIDO.


Sintaxe ......................................................................................................Erro! Indicador no definido.
Aplicaes Prticas ..................................................................................Erro! Indicador no definido.
Utilizando Arrays ...................................................................................................... Erro! Indicador no definido.
Construo do Ciclo ............................................................................................. Erro! Indicador no definido.
Utilizando Coleces de Objectos ............................................................................ Erro! Indicador no definido.

COLECES DE OBJECTOS E OBJECTOS ......................... ERRO! INDICADOR NO DEFINIDO.


O QUE SO OBJECTOS ? ......................................................................... ERRO! INDICADOR NO DEFINIDO.
OBJECTOS: PROPRIEDADES, MTODOS E EVENTOS ............................... ERRO! INDICADOR NO DEFINIDO.
Propriedades ............................................................................................Erro! Indicador no definido.
Mtodos ....................................................................................................Erro! Indicador no definido.
Eventos .....................................................................................................Erro! Indicador no definido.
OBJECTOS MAIS UTILIZADOS NO EXCEL ................................................ ERRO! INDICADOR NO DEFINIDO.
Propriedades .............................................................................................................. Erro! Indicador no definido.
Mtodos ...................................................................................................................... Erro! Indicador no definido.
Propriedades .............................................................................................................. Erro! Indicador no definido.
Mtodos ...................................................................................................................... Erro! Indicador no definido.
Propriedades .............................................................................................................. Erro! Indicador no definido.
Mtodos ...................................................................................................................... Erro! Indicador no definido.
Propriedades .............................................................................................................. Erro! Indicador no definido.
Mtodos ...................................................................................................................... Erro! Indicador no definido.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
3 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


COLECES DE OBJECTOS ............... ERRO! INDICADOR NO DEFINIDO.
OBJECTOS SINGULARES VS
INDEXAO DE COLECES POR NMERO OU NOME ............................. ERRO! INDICADOR NO DEFINIDO.
Indexao com Base em Nmeros ............................................................Erro! Indicador no definido.
Indexao com Base no Nome ..................................................................Erro! Indicador no definido.
Vantagem ................................................................................................................... Erro! Indicador no definido.

O Objecto Range uma excepo ............................................................Erro! Indicador no definido.


Tratamento como objecto: ........................................................................................ Erro! Indicador no definido.
Tratamento como coleco de objectos: .................................................................. Erro! Indicador no definido.

REFERNCIA IMPLCITA......................................................................... ERRO! INDICADOR NO DEFINIDO.


Declarao implcita da aplicao: .........................................................Erro! Indicador no definido.
Declarao implcita do WorkBook: ........................................................Erro! Indicador no definido.
Declarao implcita da WorkSheet:........................................................Erro! Indicador no definido.
Nvel de referncia a privilegiar ..............................................................Erro! Indicador no definido.
MISCELLANEOUS ...................................................................... ERRO! INDICADOR NO DEFINIDO.
A INSTRUO WITH .............................................................................. ERRO! INDICADOR NO DEFINIDO.
Aplicao Prtica .....................................................................................Erro! Indicador no definido.
OUTRAS FUNES TEIS DO VBA ........................................................ ERRO! INDICADOR NO DEFINIDO.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
4 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Macros

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
5 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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.

CRIAR 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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
6 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


2. O nome da Macro ser constitudo por um conjunto de caracteres que identificaro a
Macro e a sua funcionalidade.
3. Shortcut Key composto por uma combinao de teclas que podero ser utilizadas para
executar uma macro.
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.)
5. No campo Description, introduza um comentrio funo este poder ser importante
para que no seja esquecido o respectivo objectivo e funcionalidade.
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
7 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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 ?

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
8 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
9 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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:
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
10 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


a) Insert / Procedure insere um procedimento para o qual dever indicar o tipo de
procedimento.
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
11 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

Tecla de Atalho Shortcut Key


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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
12 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
13 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
14 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


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.
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.

DISSOCIAR UMA MACRO DE UM BOTO


1. Tools / Customize
2. Arraste o boto da toolbar at ao documento
3. Solte-o

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
15 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

Fig.6 Janela para seleco da macro a executar

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
16 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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 um comando do menu

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


______________________________________________________________________________________L
EANDRO ALVES FERREIRA
17 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


a) Seleccionar a categoria New Menu
b) Na rea dos Commands ser exibida a opo New Menu, que dever arrastar at
barra dos menus
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 um novo 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)

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
18 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

DISSOCIAO
1. Tools / Customize
2. Arraste o Menu ou Comando do Menu at ao documento e solte-o

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
19 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
20 / 60
WROMS@BOL.COM.BR

Excel Macros e 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


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)

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
21 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Editor de Visual
Basic for
Applications

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
22 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
23 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

PROJECT 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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
24 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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).
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
25 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

PROPERTIES WINDOW
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
26 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

JANELA DE EDIO
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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
27 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

OBJECT 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.
 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-LINE
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
28 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
29 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Funes e
SubRotinas

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
30 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


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 instrues1 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.

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
31 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

SUBROTINAS
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 nome2 que lhe atribumos e no recebem parmetros3
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.

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

Para ter a noo do que so parmetros recorde-se do funcionamento das funes do Excel, que para
executarem determinada funo necessitavam de receber parmetros que colocamos entre parntesis separados
por virgulas.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
32 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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)

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

Nomes alternativos para fazer referncia a um conjunto de instrues.


______________________________________________________________________________________L
EANDRO ALVES FERREIRA
33 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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.

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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
34 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
35 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
36 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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 com a funo IVA

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
37 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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)

Figura 17 Caixa de Dilogo para introduo da funo

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
38 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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>)

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
39 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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:


______________________________________________________________________________________L
EANDRO ALVES FERREIRA
40 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Figura 21 A Subrotina Ident_Maior ao ser executada d ordens de execuo funo Ver_Maior

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
41 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

DIFERENAS 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
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
42 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Variveis

MANUSEAMENTO COM VARIVEIS


______________________________________________________________________________________L
EANDRO ALVES FERREIRA
43 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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:


______________________________________________________________________________________L
EANDRO ALVES FERREIRA
44 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


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.

TIPOS DE VARIVEIS
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
45 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


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
-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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
46 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

DECLARAO DE VARIVEIS
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

VARIVEIS VANTAGENS DA UTILIZAO


Simplificam a codificao, principalmente quando se necessita de utilizar um valor
especifico inmeras vezes
Com variveis o cdigo mais rpido

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
47 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

VARIVEIS DO TIPO 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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
48 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
49 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications


Contudo estas declaraes tambm podem ser feitas da seguinte forma genrica:
Dim Range_1 As Object
Dim WB_1 As Object
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
50 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

VARIVEIS DECLARAO OPCIONAL E O


TIPO VARIANT
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
51 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
52 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

VARIVEIS TIPOS DEFINIDOS PELO


UTILIZADOR - 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.

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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
53 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

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 5Pessoa.Nome & Chr(13) & , Idade & Pessoa.Idade & Chr(13) & _
, Data de Nascimento & Pessoa.DataNascimento & Chr(13) & _
, com o BI nmero _ & Pessoa.BI
End Sub

Ver captulo InputBox e MsgBox


______________________________________________________________________________________L
EANDRO ALVES FERREIRA
54 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

VARIVEIS 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-DIMENSIONAL
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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
55 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

ARRAY BI-DIMENSIONAL
0

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.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
56 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Declarao de um array

ARRAYS UNI-DIMENSIONAIS
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-DIMENSIONAIS
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

2
0
1
2
3

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
57 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Utilizao de um Array

PARA ACEDER AO ELEMENTO


<Nome_do_Array>(<Indice1_do_Elemento>[,<Indice2_do_Elemento>, ])

ATRIBUIO 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
Brasil
Moambique

0
1
2

Valor estes que sero exibidos atravs da MsgBox.

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
58 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

Exemplo 2:
Option Base 1
Sub Utilizacao_Array()
Dim Lotaria(3) As Integer
Lotaria(1)=int(10000*Rnd())
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

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
59 / 60
WROMS@BOL.COM.BR

Excel Macros e Visual Basic for Applications

______________________________________________________________________________________L
EANDRO ALVES FERREIRA
60 / 60
WROMS@BOL.COM.BR