Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Excel VBA Completa PORTUGUES 1
Apostila Excel VBA Completa PORTUGUES 1
ndice
MACROS........................................................................................................................................................5
O QUE UMA MACRO?.................................................................................................................................6
CRIAR MACROS.............................................................................................................................................6
Gravar uma Macro...................................................................................................................................6
Exerccio............................................................................................................................................................. 8
Procedimento BackGround do Excel...................................................................................................................9
Run.........................................................................................................................................................16
Comando no Menu.................................................................................................................................17
Associao de uma Macro a um Comando do Menu.........................................................................................17
Dissociao....................................................................................................................................................... 19
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
1 / 120
WROMS@BOL.COM.BR
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
FOR NEXT................................................................................................................................................84
Sintaxe....................................................................................................................................................84
Aplicao Prtica...................................................................................................................................84
A Funo das Variveis:....................................................................................................................................85
Construo do Ciclo:.........................................................................................................................................85
Traduo Integral..............................................................................................................................................86
Funcionamento do Ciclo:.......................................................................................................................86
Perigos associados utilizao do ciclo For-Next:..............................................................................86
Outra Aplicao.....................................................................................................................................87
WHILE-WEND.............................................................................................................................................88
Sintaxe....................................................................................................................................................88
Aplicao Prtica...................................................................................................................................88
A Funo das Variveis:....................................................................................................................................89
Construo do Ciclo:.........................................................................................................................................89
Traduo Integral..............................................................................................................................................90
Funcionamento do Ciclo........................................................................................................................90
Perigos associados utilizao do ciclo While-Wend...........................................................................90
Outra Aplicao.....................................................................................................................................91
DO LOOP..................................................................................................................................................92
Sintaxe....................................................................................................................................................92
Aplicaes Prticas................................................................................................................................93
SELECT CASE..............................................................................................................................................95
Sintaxe....................................................................................................................................................95
Aplicao Prtica...................................................................................................................................96
Construo da Estrutura....................................................................................................................................97
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
3 / 120
WROMS@BOL.COM.BR
OBJECTOS SINGULARES VS
COLECES DE OBJECTOS...............................................................113
INDEXAO DE COLECES POR NMERO OU NOME................................................................................114
Indexao com Base em Nmeros........................................................................................................114
Indexao com Base no Nome..............................................................................................................115
Vantagem.........................................................................................................................................................115
REFERNCIA IMPLCITA.............................................................................................................................117
Declarao implcita da aplicao:.....................................................................................................117
Declarao implcita do WorkBook:....................................................................................................118
Declarao implcita da WorkSheet:....................................................................................................118
Nvel de referncia a privilegiar..........................................................................................................119
MISCELLANEOUS...................................................................................................................................120
A INSTRUO WITH..................................................................................................................................121
Aplicao Prtica.................................................................................................................................121
OUTRAS FUNES TEIS DO VBA...........................................................................................................122
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
4 / 120
WROMS@BOL.COM.BR
Macros
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
5 / 120
WROMS@BOL.COM.BR
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
2. O nome
ser
por um
caracteres
identificaro a Macro e a sua funcionalidade.
dilogo para a
macros.
da
Macro
constitudo
conjunto de
que
3. Shortcut Key composto por uma combinao de teclas que podero ser utilizadas
para executar uma macro.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
6 / 120
WROMS@BOL.COM.BR
de macros.
1. 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.
2. 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.
EXERCCIO
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
7 / 120
WROMS@BOL.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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
8 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
9 / 120
WROMS@BOL.COM.BR
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)
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
10 / 120
WROMS@BOL.COM.BR
EXECUTAR
UMA
MACRO
Boto na Toolbar
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
12 / 120
WROMS@BOL.COM.BR
ASSOCIAR
UMA
MACRO
A UM
BOTO
Fig.4 caixa
assignao
de dilogo para
de boto a macros
3. 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.
4. 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).
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
13 / 120
WROMS@BOL.COM.BR
do boto da toolbar
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
14 / 120
WROMS@BOL.COM.BR
Run
1. Tools / Macro / Macros
1. Na caixa de dilogo Macros selecciona-se a macro pretendida na lista da Macro Name
(Figura 6)
2. Clique sobre o boto Run
Fig.6
seleco da
Janela para
macro a executar
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
15 / 120
WROMS@BOL.COM.BR
Comando no Menu
ASSOCIAO
MENU
DE UMA
MACRO
A UM
COMANDO
DO
dilogo para
macro a um
menu
5. Se
uma nova
dever :
pretender criar
lista no menu
a)
Menu
b) Na
New
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
Seleccionar a
categoria New
rea
dos
Commands ser
exibida a opo
Menu,
que
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
16 / 120
WROMS@BOL.COM.BR
Fig.8 Caixa de
um novo menu
6.
janela
de
Customize
ainda
utilizar
botes que se
encontram na
Selected
Command:
Na
poder
dois
rea
do
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)
DISSOCIAO
1. Tools / Customize
2. Arraste o Menu ou Comando do Menu at ao documento e solte-o
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
17 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
18 / 120
WROMS@BOL.COM.BR
REMOVER MACROS
A remoo das macros poder ser feita:
no ambiente Excel, ou
no Editor de VBA
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
19 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
20 / 120
WROMS@BOL.COM.BR
Editor de Visual
Basic for
Applications
Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual Basic Editor
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
21 / 120
WROMS@BOL.COM.BR
Encontrar o cran dividido em trs grandes reas: Project Explorer, Properties Window e
do lado direito a janela de edio de texto.
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
22 / 120
WROMS@BOL.COM.BR
Explorer
Assim
se
fizer
o
VBAProject, encontrar um
Microsoft Excel Objects, e
(se este no aparecer
ainda no possui qualquer
criar este folder dever
desdobramento
do
seu
folder cuja designao
um outro designado Modules
significa que o seu projecto
macro implementada. Para
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
23 / 120
WROMS@BOL.COM.BR
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
propriedades que definem
caso.
visualizar
e
alterar
as
cada objecto: o nome - neste
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
24 / 120
WROMS@BOL.COM.BR
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.
OBJECT BROWSER
No Editor de Visual Basic for Applications poder encontrar ajuda para o desenvolvimento
do seu procedimento. Assim:
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
25 / 120
WROMS@BOL.COM.BR
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.
AS CORES
DO
VBA
Significado
Azul
Vermelho
Preto
Verde
Amarelo
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
27 / 120
WROMS@BOL.COM.BR
Funes e
SubRotinas
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.
1 Entenda-se instruo como uma tarefa a executar que corresponde a uma linha de cdigo.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
28 / 120
WROMS@BOL.COM.BR
SUBROTINAS
Definio de SubRotinas
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
29 / 120
WROMS@BOL.COM.BR
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.
2 O nome da rotina pode ser qualquer um desde 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
executarem determinada funo necessitavam de receber parmetros que colocamos entre parntesis
separados por virgulas.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
30 / 120
WROMS@BOL.COM.BR
Figura 14 Caixa de
uma nova rotina
Assim
de rotina a
que
(ou rotina
SubRotina)
ele criar a
neste caso
Sub
Macro1( )
End Sub
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>,)
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
32 / 120
WROMS@BOL.COM.BR
End Function
Nota: Se os tipos no forem definidos ser assumido por defeito como sendo do tipo
Variant
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
33 / 120
WROMS@BOL.COM.BR
Nesta
indicar
Visual
criar a
neste
End Function
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
34 / 120
WROMS@BOL.COM.BR
EXECUO
DENTRO DE UMA
CLULA
Seleccione a
categoria User
Defined repare
aparece listada a
funo que acabou
criar IVA (Figura
17 Caixa de Dilogo
introduo da funo
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
35 / 120
WROMS@BOL.COM.BR
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:
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
36 / 120
WROMS@BOL.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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
37 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
38 / 120
WROMS@BOL.COM.BR
DIFERENAS
ROTINAS
ENTRE
FUNES
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
39 / 120
WROMS@BOL.COM.BR
Variveis
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
40 / 120
WROMS@BOL.COM.BR
MANUSEAMENTO
COM
VARIVEIS
O que so variveis?
As variveis constituem repositrios temporrios de dados, podendo ser utilizadas para
diversos fins.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
41 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
42 / 120
WROMS@BOL.COM.BR
TIPOS
DE VARIVEIS
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
43 / 120
WROMS@BOL.COM.BR
DECLARAO
DE
VARIVEIS
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
44 / 120
WROMS@BOL.COM.BR
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.
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
45 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
46 / 120
WROMS@BOL.COM.BR
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
47 / 120
WROMS@BOL.COM.BR
PRS
CONTRAS
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
48 / 120
WROMS@BOL.COM.BR
Tools/Options
Editor Tab
Activar Require Variable Declaration
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
49 / 120
WROMS@BOL.COM.BR
VARIVEIS
Dados_Pessoais
Nome As String
Idade As Integer
DataNascimento As Date
BI As Long
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
50 / 120
WROMS@BOL.COM.BR
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
52 / 120
WROMS@BOL.COM.BR
ARRAY BI-DIMENSIONAL
0
2
0
1
2
3
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
53 / 120
WROMS@BOL.COM.BR
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
54 / 120
WROMS@BOL.COM.BR
Tabela_Textual
1
2
0
1
2
3
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)
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
55 / 120
WROMS@BOL.COM.BR
0
1
2
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
56 / 120
WROMS@BOL.COM.BR
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
Constantes
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
57 / 120
WROMS@BOL.COM.BR
QUE SO CONSTANTES
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
58 / 120
WROMS@BOL.COM.BR
InputBox e
MsgBox
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
59 / 120
WROMS@BOL.COM.BR
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
60 / 120
WROMS@BOL.COM.BR
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
Prompt
(Obrigatrio )
Comentrio
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). A juno dos
elementos que constituem a mensagem realizada atravs do
operador &.
Exemplo:
"A Soma de 3 com 5 :" & Chr(13) & " 8 "
Title
(Facultativo)
Default
(Facultativo)
Xpos
(Facultativo)
Ypos
(Facultativo)
HelpFile
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
61 / 120
WROMS@BOL.COM.BR
Context
(Facultativo)
MSGBOX
O que faz
1. Exibe no cran uma janela com uma mensagem.
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
62 / 120
WROMS@BOL.COM.BR
Parmetros
Parmetro
Prompt
(Obrigatrio )
Comentrio
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)
Title
(Facultativo)
HelpFile
(Facultativo)
Context
(Facultativo)
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
63 / 120
WROMS@BOL.COM.BR
Constante de VBA
Valor
VbOKOnly
VbOKCancel
VbAbortRetryIgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
VbCritical
VbQuestion
VbExclamation
VbInformation
VbDefaultButton1
VbDefaultButton2
VbDefaultButton3
VbDefaultButton4
VbApplicationModal
0
1
2
3
4
5
16
32
48
64
0
256
512
768
0
VbSystemModal
4096
Descrio
Exibe somente o boto de OK.
Exibe os botes OK e Cancel.
Exibe os botes Abort, Retry, e Ignore.
Exibe os botes Yes, No, e Cancel .
Exibe os botes Yes e No.
Exibe os botes Retry e Cancel.
Exibe o cone de Critical Message.
Exibe o cone de Warning Query.
Exibe o cone de Warning Message.
Exibe o cone de Information Message.
O primeiro boto o seleccionado por defeito.
O segundo boto o seleccionado por defeito.
O terceiro boto o seleccionado por defeito.
O quarto boto o seleccionado por defeito.
Application modal o utilizador s depois de responder
MsgBox que poder dar continuidade ao trabalho na
aplicao corrente.
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
64 / 120
WROMS@BOL.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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
65 / 120
WROMS@BOL.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
vbOK
vbCancel
vbAbort
vbRetry
vbIgnore
vbYes
vbNo
Valor
Boto Accionado
1
2
3
4
5
6
7
OK
Cancel
Abort
Retry
Ignore
Yes
No
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
66 / 120
WROMS@BOL.COM.BR
Domnio das
variveis,
constantes e
rotinas
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
67 / 120
WROMS@BOL.COM.BR
QUE O DOMINIO?
DOMNIO
DAS
VARIVEIS
Refere-se rea onde a varivel permanece activa, mantendo o valor que lhe vai sendo
atribudo.
Existem 3 nveis de domnio para as variveis:
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
68 / 120
WROMS@BOL.COM.BR
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
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
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()
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
70 / 120
WROMS@BOL.COM.BR
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
71 / 120
WROMS@BOL.COM.BR
DOMNIO
DAS
CONSTANTES
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
72 / 120
WROMS@BOL.COM.BR
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:
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
73 / 120
WROMS@BOL.COM.BR
DOMNIO
DE
SUBROTINAS
FUNES
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
74 / 120
WROMS@BOL.COM.BR
Estruturas de
Controlo
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
75 / 120
WROMS@BOL.COM.BR
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.
QUAIS
AS ESTRUTURAS
VBA Control
If -Then - Else
For Next
While-Wend
Do Loop
Select - Case
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
76 / 120
WROMS@BOL.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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
77 / 120
WROMS@BOL.COM.BR
Aplicao Prtica
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
78 / 120
WROMS@BOL.COM.BR
If
Nsorteio = NAposta
Then
MsgBox Parabns!!
Instrues a executar se a condio for verdadeira.
Acertou em cheio! O
nmero sorteado foi o
&NSorteio
Else
&NSorteio
End If
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
79 / 120
WROMS@BOL.COM.BR
APLICAO PRTICA
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
Dos 3 aos 12
Dos 13 aos 17
Dos 18 aos 25
Dos 26 aos 65
Mais de 65
Beb
Criana
Adolescente
Jovem
Adulto
Idoso
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
80 / 120
WROMS@BOL.COM.BR
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.
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
81 / 120
WROMS@BOL.COM.BR
A FUNO
DAS
VARIVEIS:
Varivel
Base
Potncia
Contador
Resultado
Funo
Elemento a elevar.
Nmero de vezes a multiplicar a base.
Conta o nmero de vezes que a base j foi multiplicada, uma varivel
que ser automaticamente incrementada em cada looping do ciclo.
Varivel que armazena o resultado sucessivo por cada vez que se
multiplica.
CONSTRUO
For
DO
CICLO:
Resultado = Resultado * Instruo a realizar de cada vez que o ciclo for executado.
Base
Neste caso a instruo nica, contudo poder-se-o adicionar
outras instrues.
Next
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
82 / 120
WROMS@BOL.COM.BR
TRADUO INTEGRAL
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 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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
83 / 120
WROMS@BOL.COM.BR
Outra Aplicao
Pretende-se criar uma rotina para calcular um factorial.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
84 / 120
WROMS@BOL.COM.BR
WHILE-WEND
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
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
85 / 120
WROMS@BOL.COM.BR
A FUNO
DAS
VARIVEIS:
Varivel
Funo
Num_Lotaria
Aposta
Num_Lanc
CONSTRUO
DO
CICLO:
While
Num_Lanc = Num_Lanc +1
Beep
Wend
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
86 / 120
WROMS@BOL.COM.BR
TRADUO INTEGRAL
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.
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
87 / 120
WROMS@BOL.COM.BR
Outra Aplicao
Pretende-se realizar um jogo de geografia. Tente compreender o seu funcionamento.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
88 / 120
WROMS@BOL.COM.BR
DO LOOP
Esta estrutura similar estrutura do While-Wend. Contudo fornece duas possibilidades
que esto limitadas quela estrutura:
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>]
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
89 / 120
WROMS@BOL.COM.BR
Aplicaes Prticas
Utilizando a condio teste no inicio do Loop e com a palavra While
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
90 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
91 / 120
WROMS@BOL.COM.BR
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.
Sintaxe
Select Case <Expresso a ser avaliada>
[Case <Valor da Expresso> [Instrues a realizar]]
...[Case Else [Instrues a realizar na situao residual]]
End Select
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
92 / 120
WROMS@BOL.COM.BR
Aplicao Prtica
Recordem o processo resolvido com recurso a If Then Else ElseIf (figura 23)
Mais facilmente seria resolvido com recurso estrutura Select Case
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
93 / 120
WROMS@BOL.COM.BR
CONSTRUO
DA
ESTRUTURA
Select Case
Idade
Case Is<3 ou
Case Is<=12 ou
Case Is<=17 ou
Case Is<=25 ou
Case Is<=65 ou
Case Else
End Select
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
94 / 120
WROMS@BOL.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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
95 / 120
WROMS@BOL.COM.BR
UTILIZANDO ARRAYS
Pretende-se inicializar um array com um conjunto de 5 pases e posteriormente visualizar
os elementos introduzidos.
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:
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
96 / 120
WROMS@BOL.COM.BR
Construo do Ciclo
For Each
Pais
In
Array_Pais
MsgBox Pais
Next
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
97 / 120
WROMS@BOL.COM.BR
UTILIZANDO COLECES
DE
OBJECTOS
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
98 / 120
WROMS@BOL.COM.BR
Coleces de
Objectos e
Objectos
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
99 / 120
WROMS@BOL.COM.BR
QUE SO
OBJECTOS ?
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
100 / 120
WROMS@BOL.COM.BR
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.
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
101 / 120
WROMS@BOL.COM.BR
OBJECTOS
MAIS
UTILIZADOS
NO
EXCEL
Application
Application o objecto de topo hierrquico, representa o prprio Excel.
PROPRIEDADES
Propriedades
Caption
DisplayAlerts
Path
ScreenUpdating
WindoWorkSheetState
DisplayStatusBar
DisplayFormulaBar
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
102 / 120
WROMS@BOL.COM.BR
MTODOS
Mtodos
Calculate
Help
Quit
Run
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
103 / 120
WROMS@BOL.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
Path
Saved
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
104 / 120
WROMS@BOL.COM.BR
MTODOS
Mtodos
Activate
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
Save
Grava o WorkBook.
Argumentos: No Tem
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
105 / 120
WROMS@BOL.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
Name
Nome da WorkSheet.
UsedRange
Visible
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
106 / 120
WROMS@BOL.COM.BR
MTODOS
Mtodos
Activate
Calculate
Delete
Protect
Cell
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
107 / 120
WROMS@BOL.COM.BR
Range
Objecto utilizado para representar uma ou mais clulas de uma WorkSheet.
PROPRIEDADES
Propriedades
Count
Dependents
Name
Value
Formula
Text
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
108 / 120
WROMS@BOL.COM.BR
MTODOS
Mtodos
Calculate
ClearContents
Copy
OffSet
EntireRow
Select
Cell
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
109 / 120
WROMS@BOL.COM.BR
OBJECTOS SINGULARES VS
COLECES DE OBJECTOS
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
110 / 120
WROMS@BOL.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.
Exemplo:
WorkSheets(3).Name=Terceiro
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
111 / 120
WROMS@BOL.COM.BR
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
112 / 120
WROMS@BOL.COM.BR
TRATAMENTO
COMO OBJECTO:
Range(A1).Value=1
Equivalente a colocar na primeira clula da Sheet o valor 1.
TRATAMENTO
Range (A1:F20).Value= 1
Equivalente a colocar em todas as clulas do range A1 a F20 o valor 1.
Ou ento:
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.
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
113 / 120
WROMS@BOL.COM.BR
REFERNCIA 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):
Aplication.Workbooks(1).Worksheets(1).Range(A1).Value=
1 Range(A1).Value=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.
Workbooks(1).Worksheets(1).Range(A1).Value=1
ActiveWorkbook.Worksheets(1).Range(A1).Value=1
Worksheets(1).Range(A1).Value=1
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
115 / 120
WROMS@BOL.COM.BR
ActiveSheet.Range(A1).Value=1
Range(A1).Value=1
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
O ideal seria escrever na forma completa, mas existem algumas desvantagens:
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
116 / 120
WROMS@BOL.COM.BR
Miscellaneous
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
117 / 120
WROMS@BOL.COM.BR
A INSTRUO WITH
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
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
118 / 120
WROMS@BOL.COM.BR
DO
VBA
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
119 / 120
WROMS@BOL.COM.BR
______________________________________________________________________________________L
EANDRO ALVES FERREIRA
120 / 120
WROMS@BOL.COM.BR