Professional Documents
Culture Documents
(verso Draft)
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
Declarao de um array.........................................................................................................................62
Arrays Uni-dimensionais..........................................................................................................................................62
Arrays Bi-dimensionais............................................................................................................................................62
Utilizao de um Array...........................................................................................................................63
Para acessar ao elemento..........................................................................................................................................63
Atribuio de valores ...............................................................................................................................................63
FOR NEXT..................................................................................................................................................90
Sintaxe....................................................................................................................................................90
Aplicao Prtica...................................................................................................................................90
A Funo das Variveis:...........................................................................................................................................91
Construo do Ciclo:................................................................................................................................................91
Traduo Integral......................................................................................................................................................92
Funcionamento do Ciclo:........................................................................................................................92
Perigos associados utilizao do ciclo For-Next:................................................................................93
Outra Aplicao .....................................................................................................................................93
WHILE-WEND................................................................................................................................................94
Sintaxe....................................................................................................................................................94
Aplicao Prtica...................................................................................................................................95
A Funo das Variveis:...........................................................................................................................................95
Construo do Ciclo:................................................................................................................................................95
Traduo Integral......................................................................................................................................................96
Funcionamento do Ciclo.........................................................................................................................96
Perigos associados utilizao do ciclo While-Wend............................................................................97
Outra Aplicao......................................................................................................................................97
DO LOOP..................................................................................................................................................101
Sintaxe...................................................................................................................................................101
Aplicaes Prticas...............................................................................................................................102
SELECT CASE...............................................................................................................................................104
Sintaxe...................................................................................................................................................104
Aplicao Prtica.................................................................................................................................105
Construo da Estrutura.........................................................................................................................................106
______________________________________________________________________________________
ISCTE / DCTI
3 / 132
Luisa.Domingues@iscte.pt
OBJETOS SINGULARES VS
COLEES DE OBJETOS..............................................................................123
INDEXAO DE COLEES POR NMERO OU NOME...............................................................................................124
Indexao com Base em Nmeros.........................................................................................................124
Indexao com Base no Nome...............................................................................................................125
Vantagem ...............................................................................................................................................................125
REFERNCIA IMPLCITA..................................................................................................................................127
Declarao implcita da aplicao:......................................................................................................127
Declarao implcita do WorkBook:.....................................................................................................128
Declarao implcita da WorkSheet:....................................................................................................128
Nvel de referncia a privilegiar...........................................................................................................129
MISCELLANEOUS..........................................................................................................................................130
A INSTRUO WITH......................................................................................................................................131
Aplicao Prtica.................................................................................................................................131
OUTRAS FUNES TEIS DO VBA.................................................................................................................131
______________________________________________________________________________________
ISCTE / DCTI
4 / 132
Luisa.Domingues@iscte.pt
Macros
______________________________________________________________________________________
ISCTE / DCTI
5 / 132
Luisa.Domingues@iscte.pt
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
Tools / Macro / Record New Macro. O Excel exibir a caixa de dilogo da fig.1.
______________________________________________________________________________________
ISCTE / DCTI
6 / 132
Luisa.Domingues@iscte.pt
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 arquivo no correndo o risco de ficar armazenada nas Macros
do Excel. (na rede do ISCTE impossvel gravar a macro no Personal WorkBook.)
Clique em OK para iniciar a gravao da macro neste momento ser exibida uma
toolbar semelhante da figura 2, e o cone do mouse ser transformado numa cassete,
indicando o estado de gravao.
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
seleciona o modo de gravao da macro se feito com base em referncias relativas
(boto selecionado) 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 (selecione a toolbar). Caso a toolbar no
aparea listada a gravao de macros no est ativa.
Nota: Fique atento aos passos que d quando est gravando pois tudo ser registrado, o que
significa que quando for executar a macro, esses procedimentos sero efetuados.
______________________________________________________________________________________
ISCTE / DCTI
7 / 132
Luisa.Domingues@iscte.pt
EXERCCIO
Objetivo: Gravar uma macro testando a diferena entre a execuo de macros com
referncias absolutas e relativas.
1 Fase: Macro com referncias Absolutas
1. Acione a gravao da macro. Atribua-lhe o Short Key Ctrl+P
2. Certifique-se que o boto Relative Reference est desativado.
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. Aperte simultaneamente nas teclas Ctrl e P
12. O que aconteceu ?
2 Fase: Macro com referncias Relativas
1. Selecione a clula D5.
2. Acione a gravao da macro. Atribua-lhe o Short Key Ctrl+R
3. Selecione o boto Relative Reference.
4. Escreva ISCTE na clula que havia sido selecionada.
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 ?
______________________________________________________________________________________
ISCTE / DCTI
8 / 132
Luisa.Domingues@iscte.pt
PROCEDIMENTO BACKGROUND
DO
EXCEL
O Excel quando grava uma macro cria um objeto designado por module no workbook onde
registra todas as operaes gravadas em linguagem Visual Basic for Applications - VBA.
Este modulo 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.
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.
______________________________________________________________________________________
ISCTE / DCTI
9 / 132
Luisa.Domingues@iscte.pt
Para acessar 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 sub-rotinas)
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
selecionado na janela de projeto e do lado direito tem-se uma rea de edio onde
podero escrever as macros a executar)
______________________________________________________________________________________
ISCTE / DCTI
10 / 132
Luisa.Domingues@iscte.pt
Sempre que precisar 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.
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.
______________________________________________________________________________________
ISCTE / DCTI
11 / 132
Luisa.Domingues@iscte.pt
EXECUTAR
UMA
MACRO
______________________________________________________________________________________
ISCTE / DCTI
12 / 132
Luisa.Domingues@iscte.pt
Boto na Toolbar
ASSOCIAR
UMA
MACRO
A UM
BOTO
3.
______________________________________________________________________________________
ISCTE / DCTI
13 / 132
Luisa.Domingues@iscte.pt
4.
Na rea respeitante aos Commands sero exibidos dois itens: Custom Menu Item e
Custom Button. Selecione este segundo e arraste-o com o mouse at a Barra de
Ferramentas onde pretende inseri-lo. Ateno s poder inserir o boto quando o
ponteiro do mouse ficar com a forma I. Nesse momento libertar o boto do mouse
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 selecionado
faz.
b) Modify Selection semelhante ao clique sobre o boto criado, exibe uma
srie de tarefas possveis para configurao do boto ( ver operaes seguintes).
______________________________________________________________________________________
ISCTE / DCTI
14 / 132
Luisa.Domingues@iscte.pt
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)
c)
Na opo Name indique o nome que pretende ver associado ao boto, por padro
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, selecione o logotipo pretendido, se
nenhum o satisfizer e pretender criar o seu selecione 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
______________________________________________________________________________________
ISCTE / DCTI
15 / 132
Luisa.Domingues@iscte.pt
Run
1. Tools / Macro / Macros
2.
______________________________________________________________________________________
ISCTE / DCTI
16 / 132
Luisa.Domingues@iscte.pt
Comando no Menu
ASSOCIAO
MENU
DE UMA
MACRO
A UM
COMANDO
DO
4.
Na area relacionada aos Commands ser exibido um item de Custom Menu Item,
selecione-o e arraste-o com o mouse 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..
______________________________________________________________________________________
ISCTE / DCTI
17 / 132
Luisa.Domingues@iscte.pt
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:
Description que exibe um texto explicando o que o comando selecionado
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)
c)
______________________________________________________________________________________
ISCTE / DCTI
18 / 132
Luisa.Domingues@iscte.pt
DISSOCIAO
1. Tools / Customize
2. Arraste o Menu ou Comando do Menu at ao documento e solte-o
______________________________________________________________________________________
ISCTE / DCTI
19 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
20 / 132
Luisa.Domingues@iscte.pt
REMOVER MACROS
A remoo das macros poder ser feita:
no ambiente Excel, ou
no Editor de VBA
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)
______________________________________________________________________________________
ISCTE / DCTI
21 / 132
Luisa.Domingues@iscte.pt
Editor de Visual
Basic for
Applications
______________________________________________________________________________________
ISCTE / DCTI
22 / 132
Luisa.Domingues@iscte.pt
Para acessar o editor de Visual Basic for Applications: Tools / Macro / Visual Basic Editor
______________________________________________________________________________________
ISCTE / DCTI
23 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
24 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
25 / 132
Luisa.Domingues@iscte.pt
Encontrar a tela dividida em trs grandes reas: Project Explorer, Properties Window e do
lado direito janela de edio de texto.
PROJECT EXPLORER
______________________________________________________________________________________
ISCTE / DCTI
26 / 132
Luisa.Domingues@iscte.pt
Assim se fizer o desdobramento do seu VBAProject, encontrar uma pasta cuja designao
Microsoft Excel Objects, e uma outra designada Modules (se esta no aparecer significa
que o seu projeto ainda no possui qualquer macro implementada. Para criar esta pasta
dever fazer: Insert / Module).
______________________________________________________________________________________
ISCTE / DCTI
27 / 132
Luisa.Domingues@iscte.pt
PROPERTIES WINDOW
______________________________________________________________________________________
ISCTE / DCTI
28 / 132
Luisa.Domingues@iscte.pt
Nesta janela poder visualizar e alterar as propriedades que definem cada objeto: o nome neste caso.
JANELA
DE
EDIO
______________________________________________________________________________________
ISCTE / DCTI
29 / 132
Luisa.Domingues@iscte.pt
OBJECT BROWSER
No Editor de Visual Basic for Applications poder encontrar ajuda para o desenvolvimento
do seu procedimento. Assim:
______________________________________________________________________________________
ISCTE / DCTI
30 / 132
Luisa.Domingues@iscte.pt
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 usurio um sistema de ajuda
constante. Assim, quando se constroem 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
______________________________________________________________________________________
ISCTE / DCTI
31 / 132
Luisa.Domingues@iscte.pt
Cor
Significado
Azul
Vermelho
Preto
Verde
Amarelo
______________________________________________________________________________________
ISCTE / DCTI
32 / 132
Luisa.Domingues@iscte.pt
Funes e Sub
Rotinas
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
______________________________________________________________________________________
ISCTE / DCTI
33 / 132
Luisa.Domingues@iscte.pt
SUB ROTINAS
1
Entenda-se instruo como uma tarefa a executar que corresponde a uma linha de cdigo.
______________________________________________________________________________________
ISCTE / DCTI
34 / 132
Luisa.Domingues@iscte.pt
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.
______________________________________________________________________________________
ISCTE / DCTI
35 / 132
Luisa.Domingues@iscte.pt
Assim dever indicar o tipo de rotina a criar Sub e o nome que pretende dar
macro (ou rotina ou procedimento ou Sub Rotina) 4. Automaticamente ele criar a
estrutura da rotina, neste caso ficaria:
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 objetivo 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.
______________________________________________________________________________________
ISCTE / DCTI
37 / 132
Luisa.Domingues@iscte.pt
End Function
Nota: Se os tipos no forem definidos ser assumido por padro como sendo do tipo
Variant
______________________________________________________________________________________
ISCTE / DCTI
38 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
39 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
40 / 132
Luisa.Domingues@iscte.pt
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
______________________________________________________________________________________
ISCTE / DCTI
41 / 132
Luisa.Domingues@iscte.pt
EXECUO
DENTRO DE UMA
CLULA
______________________________________________________________________________________
ISCTE / DCTI
42 / 132
Luisa.Domingues@iscte.pt
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>)
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.
______________________________________________________________________________________
ISCTE / DCTI
44 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
45 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
46 / 132
Luisa.Domingues@iscte.pt
DIFERENAS
ENTRE
FUNES
ROTINAS
REGRAS
Regra 1: Como uma funo retorna um valor, esta dever ser utilizada numa expresso.
Quando uma funo utilizada do lado direito de uma associao, ou como argumento de
uma outra rotina, se devero passar os parmetros dentro de parntesis
Regra 2: Pode-se chamar uma funo ou sub rotina com a palavra-chave Call, neste caso
se devero 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.
______________________________________________________________________________________
ISCTE / DCTI
47 / 132
Luisa.Domingues@iscte.pt
Variveis
MANUSEAMENTO
COM
VARIVEIS
______________________________________________________________________________________
ISCTE / DCTI
48 / 132
Luisa.Domingues@iscte.pt
O que so variveis?
As variveis constituem repositrios temporrios de dados, podendo ser utilizadas para
diversos fins.
TIPOS
DE VARIVEIS
______________________________________________________________________________________
ISCTE / DCTI
50 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
51 / 132
Luisa.Domingues@iscte.pt
DECLARAO
DE
VARIVEIS
VARIVEIS VANTAGENS
DA UTILIZAO
______________________________________________________________________________________
ISCTE / DCTI
52 / 132
Luisa.Domingues@iscte.pt
VARIVEIS
DO
TIPO OBJETO
Uma varivel objeto representa uma referncia a um objeto. Uma varivel de extrema
importncia que facilita a codificao e melhora a performance da sub rotina.
Onde:
Set palavra chave que indica a associao de uma varivel objeto
<Var_Objeto> - Varivel Objeto
= - Operador de associao
<Objeto> - Objeto a ser atribudo varivel
______________________________________________________________________________________
ISCTE / DCTI
53 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
54 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
55 / 132
Luisa.Domingues@iscte.pt
E O
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 sub rotinas grandes.
______________________________________________________________________________________
ISCTE / DCTI
56 / 132
Luisa.Domingues@iscte.pt
Tools/Options
Editor Tab
Activar Require Variable Declaration
______________________________________________________________________________________
ISCTE / DCTI
57 / 132
Luisa.Domingues@iscte.pt
PELO
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
Dados_Pessoais
Nome As String
Idade As Integer
DataNascimento As Date
BI As Long
End Type
______________________________________________________________________________________
ISCTE / DCTI
58 / 132
Luisa.Domingues@iscte.pt
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.
______________________________________________________________________________________
ISCTE / DCTI
60 / 132
Luisa.Domingues@iscte.pt
ARRAY BI-DIMENSIONAL
0
2
0
1
2
3
______________________________________________________________________________________
ISCTE / DCTI
61 / 132
Luisa.Domingues@iscte.pt
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
______________________________________________________________________________________
ISCTE / DCTI
62 / 132
Luisa.Domingues@iscte.pt
Utilizao de um Array
PARA
ACESSAR 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
______________________________________________________________________________________
ISCTE / DCTI
63 / 132
Luisa.Domingues@iscte.pt
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
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
______________________________________________________________________________________
ISCTE / DCTI
64 / 132
Luisa.Domingues@iscte.pt
Constantes
______________________________________________________________________________________
ISCTE / DCTI
65 / 132
Luisa.Domingues@iscte.pt
QUE SO CONSTANTES
______________________________________________________________________________________
ISCTE / DCTI
66 / 132
Luisa.Domingues@iscte.pt
InputBox e
MsgBox
______________________________________________________________________________________
ISCTE / DCTI
67 / 132
Luisa.Domingues@iscte.pt
QUE SO
Para haver interao entre o usurio 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 usurio introduzir dados no
programa portanto um mecanismo de input. O MsgBox um mecanismo de Output e
permite ao usurio visualizar os dados produzidos pelo programa.
INPUTBOX
O que faz
1.
Exibe na tela uma janela com uma caixa text box para a insero de dados.
2.
3.
Como uma funo produz um valor final. Este consiste nos dados inseridos pelo
usurio na forma textual - String.
Sintaxe
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Numa primeira avaliao da funo, pode-se dizer que a mesma possui diversos
parmetros, mas somente o primeiro obrigatrio, sendo que todos os outros quando
ignorados assumem valores atribudos por padro.
Parmetros
Parmetro
Comentrio
______________________________________________________________________________________
ISCTE / DCTI
68 / 132
Luisa.Domingues@iscte.pt
Title
(Facultativo)
Default
(Facultativo)
Xpos
(Facultativo)
Ypos
(Facultativo)
HelpFile
(Facultativo)
Context
(Facultativo)
MSGBOX
______________________________________________________________________________________
ISCTE / DCTI
69 / 132
Luisa.Domingues@iscte.pt
O que faz
1.
2.
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 padro.
Parmetros
Parmetro
Comentrio
______________________________________________________________________________________
ISCTE / DCTI
70 / 132
Luisa.Domingues@iscte.pt
Buttons
(Facultativo)
Title
(Facultativo)
HelpFile
(Facultativo)
Context
(Facultativo)
Constante de VBA
VbOKOnly
Valor
0
Descrio
Exibe somente o boto de OK.
______________________________________________________________________________________
ISCTE / DCTI
71 / 132
Luisa.Domingues@iscte.pt
1
2
3
4
5
16
32
48
64
0
256
512
768
0
VbSystemModal
4096
Pela anlise desta tabela pode-se constatar que existem diferentes agrupamentos de
cdigos: para definir o tipo de botes (0-5), para definir o tipo de cones (16,32,48,64), para
definir o boto selecionado por padro (0,256,512,768) e para indicar o modo de execuo
(0 e 4096). Pode-se adicionar os cdigos e assim fazer combinaes entre diversas opes
destes 4 grupos, contudo nunca se deve adicionar mais do que um cdigo por agrupamento.
Exemplos:
Para a instruo:
______________________________________________________________________________________
ISCTE / DCTI
72 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
73 / 132
Luisa.Domingues@iscte.pt
Figura 24 MsgBox
Para a instruo:
MsgBox "Erro de Sintaxe!!!", 5 + 64 + 256 + 4096, "Mensagem de Erro"
exibida a seguinte janela:
Figura 25 MsgBox
Valores Produzidos
Como j foi referido, a funo MsgBox produz um valor em funo do boto acionado,
assim produzir como output um dos valores constantes da tabela seguinte:
Constante de VBA
vbOK
vbCancel
Valor
Boto Accionado
1
2
OK
Cancel
______________________________________________________________________________________
ISCTE / DCTI
74 / 132
Luisa.Domingues@iscte.pt
3
4
5
6
7
Abort
Retry
Ignore
Yes
No
______________________________________________________________________________________
ISCTE / DCTI
75 / 132
Luisa.Domingues@iscte.pt
Domnio das
variveis,
constantes e
rotinas
QUE O DOMINIO?
______________________________________________________________________________________
ISCTE / DCTI
76 / 132
Luisa.Domingues@iscte.pt
DOMNIO
DAS
VARIVEIS
Refere-se rea onde a varivel permanece ativa, mantendo o valor que lhe vai sendo
atribudo.
Existem 3 nveis de domnio para as variveis:
mbito do Procedimento
Estas variveis so declaradas no corpo do procedimento com recurso palavra chave
Dim.
So variveis criadas quando da execuo do procedimento e automaticamente destrudas
quando o procedimento termina, sendo que s so reconhecidas durante o 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.
______________________________________________________________________________________
ISCTE / DCTI
77 / 132
Luisa.Domingues@iscte.pt
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 acessada 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 seo Declarations do respectivo mdulo VBA. Neste caso qualquer varivel a
declarada ser considerada de nvel modular por padro, para tornar esse fato mais
explicito poder-se utilizar a palavra chave Private na declarao:
Ex:
Private Var_2 As String
______________________________________________________________________________________
ISCTE / DCTI
78 / 132
Luisa.Domingues@iscte.pt
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 usurio no procedimento Ambito_Modulo.
mbito do Projeto
As variveis assim definidas tm o mbito correspondente a todo o projeto, isto podem
ser acessadas e alteradas em todos e quaisquer mdulos. Para declarar variveis deste
tipo deve-se faz-lo na seo Declarations de qualquer mdulo, para tal dever utilizar a
palavra chave Public.
Exemplo:
______________________________________________________________________________________
ISCTE / DCTI
79 / 132
Luisa.Domingues@iscte.pt
DOMNIO
DAS
CONSTANTES
______________________________________________________________________________________
ISCTE / DCTI
80 / 132
Luisa.Domingues@iscte.pt
mbito do Procedimento
Estas constantes so declaradas no corpo do procedimento com recurso palavra chave
Const. S tm existncia dentro do procedimento onde so declaradas.
Exemplo:
Sub Ambito_Procedimento()
Const Taxa_Desc As Single = 0.05
Dim Desconto As Double
Desconto = InputBox (Introduza o montante das Compras) * Taxa_Desc
MsgBox O desconto de : & Desconto
End Sub
mbito do Mdulo
Uma constante com mbito do Mdulo pode ser utilizada por todas as rotinas existentes
no mdulo onde definida.
Para declarar uma constante a nvel modular, dever declar-la com a palavra chave Const
na seco Declarations do respectivo mdulo VBA. Neste caso qualquer constante a
declarada ser considerada de nvel modular por padro, para tornar esse fato mais
explicito poder-se utilizar a palavra chave Private na declarao:
Ex:
______________________________________________________________________________________
ISCTE / DCTI
81 / 132
Luisa.Domingues@iscte.pt
mbito do Projeto
As constantes assim definidas tm o mbito correspondente a todo o projeto, isto
podem ser utilizadas em todo e qualquer mdulo. Para definir constantes deste tipo dever
faz-lo na seo Declarations de qualquer mdulo, para tal dever utilizar a palavra
chave Public.
Ex:
Public Const Const_1 As String
DOMNIO
DE
SUB ROTINAS
FUNES
Exemplo:
______________________________________________________________________________________
ISCTE / DCTI
82 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
83 / 132
Luisa.Domingues@iscte.pt
Estruturas de
Controle
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.
______________________________________________________________________________________
ISCTE / DCTI
84 / 132
Luisa.Domingues@iscte.pt
QUAIS
AS ESTRUTURAS
VBA Control
If -Then - Else
For Next
While-Wend
Do Loop
Select - Case
IF-THEN-ELSE
Funo IF do Excel
Recorrendo funo IF do Excel, recorde:
=IF( <condio>, <se condio verdadeira>, <se condio falsa> )
______________________________________________________________________________________
ISCTE / DCTI
85 / 132
Luisa.Domingues@iscte.pt
3.
Aplicao Prtica
______________________________________________________________________________________
ISCTE / DCTI
86 / 132
Luisa.Domingues@iscte.pt
A rotina Aposta recebe uma aposta do usurio e mediante o Sorteio a realizar pela
respectiva funo, verifica se o jogador ganhou ou no a aposta, comunicando-lhe esse
fato.
______________________________________________________________________________________
ISCTE / DCTI
87 / 132
Luisa.Domingues@iscte.pt
Nsorteio = NAposta
Then
MsgBox Parabns!!
Acertou em cheio! O
nmero sorteado foi o
&NSorteio
Else
______________________________________________________________________________________
ISCTE / DCTI
88 / 132
Luisa.Domingues@iscte.pt
APLICAO PRTICA
Pretende-se criar uma macro que classifique um indivduo por faixa etria em funo da
sua idade. A classificao pretendida a seguinte:
Idade
Menos de 3 anos
Dos 3 aos 12
Dos 13 aos 17
Dos 18 aos 25
Dos 26 aos 65
Mais de 65
Classe Etria
Beb
Criana
Adolescente
Jovem
Adulto
Idoso
______________________________________________________________________________________
ISCTE / DCTI
89 / 132
Luisa.Domingues@iscte.pt
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.
______________________________________________________________________________________
ISCTE / DCTI
90 / 132
Luisa.Domingues@iscte.pt
A instruo For-Next tem como funo calcular a potncia. O mesmo efeito poderia ser
obtido recorrendo expresso Resultado = Base ^ Potncia, contudo para fins de
demonstrao de funcionamento este exemplo bastante simples.
A FUNO
DAS
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:
Palavra-chave que indica o inicio do ciclo For-Next
Resultado = Resultado *
Base
Next
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, pelo incremento 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.
______________________________________________________________________________________
ISCTE / DCTI
92 / 132
Luisa.Domingues@iscte.pt
Outra Aplicao
Pretende-se criar uma rotina para calcular um fatorial.
______________________________________________________________________________________
ISCTE / DCTI
93 / 132
Luisa.Domingues@iscte.pt
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
______________________________________________________________________________________
ISCTE / DCTI
94 / 132
Luisa.Domingues@iscte.pt
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.
A FUNO
DAS
VARIVEIS:
Varivel
Funo
Num_Lotaria
Aposta
Num_Lanc
CONSTRUO
While
DO
CICLO:
Palavra-chave que indica o inicio do ciclo WhileWend
______________________________________________________________________________________
ISCTE / DCTI
95 / 132
Luisa.Domingues@iscte.pt
Num_Lanc = Num_Lanc +1
Beep
Wend
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
usurio tenha a percepo do que est a ser realizado.
Funcionamento do Ciclo
______________________________________________________________________________________
ISCTE / DCTI
96 / 132
Luisa.Domingues@iscte.pt
Outra Aplicao
Pretende-se realizar um jogo de geografia. Tente compreender o seu funcionamento.
______________________________________________________________________________________
ISCTE / DCTI
97 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
98 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
99 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
100 / 132
Luisa.Domingues@iscte.pt
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>]
______________________________________________________________________________________
ISCTE / DCTI
101 / 132
Luisa.Domingues@iscte.pt
Aplicaes Prticas
______________________________________________________________________________________
ISCTE / DCTI
102 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
103 / 132
Luisa.Domingues@iscte.pt
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
______________________________________________________________________________________
ISCTE / DCTI
104 / 132
Luisa.Domingues@iscte.pt
Aplicao Prtica
Recordem o processo resolvido com recurso a If Then Else ElseIf (figura 23)
Mais facilmente seria resolvido com recurso estrutura Select Case
______________________________________________________________________________________
ISCTE / DCTI
105 / 132
Luisa.Domingues@iscte.pt
CONSTRUO
DA
ESTRUTURA
Select Case
Idade
______________________________________________________________________________________
ISCTE / DCTI
106 / 132
Luisa.Domingues@iscte.pt
Case Else
End Select
Sintaxe
For Each <Varivel do tipo dos elementos do grupo> In <Grupo>
<Instrues a realizar para cada elemento do grupo>
______________________________________________________________________________________
ISCTE / DCTI
107 / 132
Luisa.Domingues@iscte.pt
Aplicaes Prticas
UTILIZANDO ARRAYS
Pretende-se iniciar um array com um conjunto de 5 pases e posteriormente visualizar os
elementos introduzidos.
Construo do Ciclo
For Each
Pais
In
______________________________________________________________________________________
ISCTE / DCTI
109 / 132
Luisa.Domingues@iscte.pt
MsgBox Pais
Next
UTILIZANDO COLEES
DE
OBJETOS
______________________________________________________________________________________
ISCTE / DCTI
110 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
111 / 132
Luisa.Domingues@iscte.pt
Colees de
Objetos e Objetos
______________________________________________________________________________________
ISCTE / DCTI
112 / 132
Luisa.Domingues@iscte.pt
QUE SO
OBJETOS ?
Propriedades
As propriedades dos objetos constituem o conjunto de caractersticas que o definem. Por
exemplo: nome, cor, dimenso, designao, valor contido,
Mtodos
Os mtodos traduzem o comportamento de um objeto. Estes mtodos representam
procedimentos que executam uma determinada tarefa, que pode ser complementada atravs
da passagem de argumentos ou parmetros.
______________________________________________________________________________________
ISCTE / DCTI
113 / 132
Luisa.Domingues@iscte.pt
Eventos
Eventos ou acontecimentos, representam todas as atividades que envolvam o objeto e que
normalmente direta ou indiretamente so disparadas pelo usurio. 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 ativar uma determinada tarefa quando 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 Projeto Project Window selecione o objeto
ThisWorkBook. Na janela de edio repare nas duas caixinhas que se encontram na parte
superior. A do lado esquerdo indica general clique nela e selecione o elemento workbook,
na caixinha da direita selecione 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.
______________________________________________________________________________________
ISCTE / DCTI
114 / 132
Luisa.Domingues@iscte.pt
OBJETOS
MAIS
UTILIZADOS
NO
EXCEL
Application
Application o objeto de topo hierrquico, representa o prprio Excel.
PROPRIEDADES
Propriedades
Caption
DisplayAlerts
Path
ScreenUpdating
WindoWorkSheetState
DisplayStatusBar
DisplayFormulaBar
______________________________________________________________________________________
ISCTE / DCTI
115 / 132
Luisa.Domingues@iscte.pt
MTODOS
Mtodos
Calculate
Help
Quit
Run
______________________________________________________________________________________
ISCTE / DCTI
116 / 132
Luisa.Domingues@iscte.pt
WorkBook
O Objeto WorkBook, na hierarquia de objetos segue de imediato o objeto application e
representa um arquivo de Excel.
PROPRIEDADES
Propriedades
Name
Path
Saved
______________________________________________________________________________________
ISCTE / DCTI
117 / 132
Luisa.Domingues@iscte.pt
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 em TRUE, o
WorkBook gravado com o nome aqui indicado
RoutWorkBook se TRUE e o WorkBook tiver endereos
para envio atribudos, envia o arquivo por e-mail antes de fechar,
caso contrrio no.
Protect
Save
Grava o WorkBook.
Argumentos: No Tem
SaveCopyAs
______________________________________________________________________________________
ISCTE / DCTI
118 / 132
Luisa.Domingues@iscte.pt
WorkSheet
Na hierarquia situa-se abaixo do objeto WorkBook, uma vez que um WorkBook
constitudo por um conjunto de WorkSheets.
PROPRIEDADES
Propriedades
Index
Name
Nome da WorkSheet.
UsedRange
Visible
______________________________________________________________________________________
ISCTE / DCTI
119 / 132
Luisa.Domingues@iscte.pt
MTODOS
Mtodos
Activate
Calculate
Delete
Protect
Cell
______________________________________________________________________________________
ISCTE / DCTI
120 / 132
Luisa.Domingues@iscte.pt
Range
Objeto utilizado para representar uma ou mais clulas de uma WorkSheet.
PROPRIEDADES
Propriedades
Count
Dependents
Name
Value
Formula
Text
______________________________________________________________________________________
ISCTE / DCTI
121 / 132
Luisa.Domingues@iscte.pt
MTODOS
Mtodos
Calculate
ClearContents
Copy
OffSet
EntireRow
Select
Cell
______________________________________________________________________________________
ISCTE / DCTI
122 / 132
Luisa.Domingues@iscte.pt
OBJETOS SINGULARES VS
COLEES DE OBJETOS
Objeto Singular refere um nico objeto que pode ser referenciado pelo nome.
Colees de Objetos constituem conjuntos de objetos singulares que so referenciados
pelo ndice que os identifica na coleo.
______________________________________________________________________________________
ISCTE / DCTI
123 / 132
Luisa.Domingues@iscte.pt
INDEXAO
NOME
Perante uma coleo de objetos necessrio identificar cada um dos diferentes itens que a
compem para que a eles seja possvel acessar.
Por analogia poder-se mencionar o exemplo do array, este uma varivel plural, dado que
composto por um conjunto de variveis. Quando se pretende acessar a uma posio do
array utiliza-se o nome do array e o ndice da posio requerida.
Assim, a indexao de colees pode ser realizada com base:
em nmeros ou
em nomes.
Exemplo:
WorkSheets(3).Name=Terceiro
______________________________________________________________________________________
ISCTE / DCTI
124 / 132
Luisa.Domingues@iscte.pt
Exemplo:
WorkSheets(Sheet3).Name=Terceiro
VANTAGEM
No necessrio saber a ordem pela qual foi inserido na coleo
DESVANTAGEM
Alterao do nome da sheet provoca erros
Exemplo:
WorkSheets(Sheet3).Name=Terceiro
WorkSheets(Sheet3).Visible=False o objeto no reconhecido
______________________________________________________________________________________
ISCTE / DCTI
125 / 132
Luisa.Domingues@iscte.pt
TRATAMENTO
COMO OBJETO:
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.
______________________________________________________________________________________
ISCTE / DCTI
126 / 132
Luisa.Domingues@iscte.pt
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 fato da segunda forma
(Range(A1).Value = 1) admitir que se est a trabalhar no workbook e na worksheet que
nesse momento esto ativas 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
______________________________________________________________________________________
ISCTE / DCTI
127 / 132
Luisa.Domingues@iscte.pt
ActiveWorkbook.Worksheets(1).Range(A1).Value=1
Worksheets(1).Range(A1).Value=1
ActiveSheet.Range(A1).Value=1
Range(A1).Value=1
______________________________________________________________________________________
ISCTE / DCTI
128 / 132
Luisa.Domingues@iscte.pt
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
______________________________________________________________________________________
ISCTE / DCTI
129 / 132
Luisa.Domingues@iscte.pt
Miscellaneous
______________________________________________________________________________________
ISCTE / DCTI
130 / 132
Luisa.Domingues@iscte.pt
A INSTRUO WITH
A instruo With permite abreviar referncias a objetos. No faz sentido utiliz-lo quando
se pretende utilizar s uma propriedade ou mtodo, mas quando pretendemos utilizar
bastantes.
Aplicao Prtica
Ou Ento:
DO
VBA
______________________________________________________________________________________
ISCTE / DCTI
131 / 132
Luisa.Domingues@iscte.pt
______________________________________________________________________________________
ISCTE / DCTI
132 / 132
Luisa.Domingues@iscte.pt