Escolar Documentos
Profissional Documentos
Cultura Documentos
1089 PDF
1089 PDF
(verso Draft)
ndice
MACROS ......................................................................................................................................................................... 5
O QUE UMA MACRO ?................................................................................................................................................ 6
CRIAR M ACROS ............................................................................................................................................................ 6
Gravar uma Macro ................................................................................................................................................. 6
Exerccio................................................................................................................................................................ 8
Procedimento BackGround do Excel ..................................................................................................................... 9
Programao em Visual Basic for Applications.............................................................................................10
EXECUTAR UMA MACRO...........................................................................................................................................12
Tecla de Atalho Shortcut Key..........................................................................................................................12
Boto na Toolbar..................................................................................................................................................13
Associar uma Macro a um Boto.........................................................................................................................13
Dissociar uma Macro de um Boto .....................................................................................................................15
Run...........................................................................................................................................................................16
Comando no Menu................................................................................................................................................17
Associao de uma Macro a um Comando do Menu ..........................................................................................17
Dissociao ..........................................................................................................................................................19
Editor de Visual Basic for Applications............................................................................................................20
REMOVER MACROS....................................................................................................................................................21
Remoo de Macros em Ambiente Excel..........................................................................................................21
Remoo de Macros no Editor de VBA.............................................................................................................21
EDITOR DE VISUAL BAS IC FOR APPLICATIONS....................................................................................22
PROJECT EXPLORER...................................................................................................................................................24
PROPERTIES WINDOW ................................................................................................................................................26
JANELA DE EDIO....................................................................................................................................................27
OBJECT BROWSER......................................................................................................................................................28
HELP ON-LINE ............................................................................................................................................................28
AS CORES DO VBA....................................................................................................................................................29
FUNES E SUBROTINAS ...................................................................................................................................30
SUBROTINAS...............................................................................................................................................................32
Definio de SubRotinas .....................................................................................................................................32
Trabalhar no Editor de VBA Criar uma SubRotina....................................................................................33
Execuo de uma SubRotina...............................................................................................................................34
FUNES......................................................................................................................................................................34
Definio de Funes...........................................................................................................................................34
Definio do tipo de parmetros e do tipo da funo....................................................................................35
Trabalhar no Editor de VBA Criar uma Funo.........................................................................................36
Execuo de uma Funo....................................................................................................................................37
Execuo dentro de uma Clula ..........................................................................................................................38
Execuo dentro de uma Rotina ..........................................................................................................................40
DIFERENAS ENTRE FUNES E ROTINAS..............................................................................................................42
REGRAS PARA A PASSAGEM DE PARMETROS........................................................................................................42
______________________________________________________________________________________
ISCTE / DCTI 1 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
VARIVEIS ..................................................................................................................................................................43
MANUSEAMENTO COM VARIVEIS..........................................................................................................................44
O que so variveis? ............................................................................................................................................44
Assignao de valores a variveis:...................................................................................................................45
Utilizao de variveis como se fossem valores: ............................................................................................45
TIPOS DE VARIVEIS ..................................................................................................................................................46
DECLARAO DE VARIVEIS ...................................................................................................................................47
VARIVEIS VANTAGENS DA UTILIZAO............................................................................................................47
VARIVEIS DO TIPO OBJECTO..................................................................................................................................48
Declarao da Varivel Objecto........................................................................................................................48
Atribuio de uma varivel Objecto..................................................................................................................48
Utilizao Genrica da Varivel Objecto........................................................................................................49
Utilizao Especifica da Varivel Objecto ......................................................................................................49
VARIVEIS DECLARAO OPCIONAL E O TIPO VARIANT .................................................................................51
Os Prs e Contras da Utilizao do tipo Variants .........................................................................................51
Prs......................................................................................................................................................................51
Contras.................................................................................................................................................................51
Variveis Declarao Forada.......................................................................................................................52
VARIVEIS TIPOS DEFINIDOS PELO UTILIZADOR - ESTRUT URAS.......................................................................53
Definio do Tipo .................................................................................................................................................53
Utilizao das Estruturas de Dados..................................................................................................................54
VARIVEIS A RRAYS ...............................................................................................................................................55
O que um Array ? ..............................................................................................................................................55
Array Uni-Dimensional .......................................................................................................................................55
Array Bi-Dimensional .........................................................................................................................................56
Declarao de um array......................................................................................................................................57
Arrays Uni-dimensionais .....................................................................................................................................57
Arrays Bi-dimensionais .......................................................................................................................................57
Utilizao de um Array........................................................................................................................................58
Para aceder ao elemento......................................................................................................................................58
Atribuio de valores ...........................................................................................................................................58
Option Base e Array Bounds...............................................................................................................................59
CONSTANTES .............................................................................................................................................................60
O QUE SO CONSTANTES ? ........................................................................................................................................61
INPUTBOX E MSGBOX ..........................................................................................................................................62
O QUE SO ?................................................................................................................................................................63
INPUT BOX ...................................................................................................................................................................63
O que faz.............................................................................................................................................................63
Sintaxe.....................................................................................................................................................................63
Parmetros.............................................................................................................................................................64
MSGBOX ......................................................................................................................................................................65
O que faz.............................................................................................................................................................65
Sintaxe.....................................................................................................................................................................65
Parmetros.............................................................................................................................................................66
Valores Produzidos...........................................................................................................................................69
DOMNIO DAS VARIVEIS, CONSTANTES E ROTINAS........................................................................70
O QUE O DOMINIO?..................................................................................................................................................71
DOMNIO DAS VARIVEIS.........................................................................................................................................71
mbito do Procedimento .....................................................................................................................................72
mbito do Mdulo ................................................................................................................................................73
mbito do Projecto...............................................................................................................................................74
DOMNIO DAS CONSTANTES .....................................................................................................................................75
mbito do Procedimento .....................................................................................................................................75
______________________________________________________________________________________
ISCTE / DCTI 2 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
mbito do Mdulo ................................................................................................................................................76
mbito do Projecto...............................................................................................................................................76
DOMNIO DE SUBROTINAS E FUNES...................................................................................................................77
ESTRUTURAS DE CONTROLO ..........................................................................................................................78
O QUE SO ESTRUTURAS DE CONTROLO ? ...............................................................................................................79
QUAIS AS ESTRUTURAS.........................................................................................................................................79
IF-THEN-ELSE .............................................................................................................................................................80
Funo IF do Excel ..............................................................................................................................................80
Sintaxe da Estrutura If-Then-Else......................................................................................................................80
Aplicao Prtica .................................................................................................................................................81
A instruo adicional ElseIf...............................................................................................................................83
Aplicao Prtica .................................................................................................................................................83
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
FOR EACH NEXT...................................................................................................................................................98
Sintaxe.....................................................................................................................................................................98
Aplicaes Prticas..............................................................................................................................................99
Utilizando Arrays.................................................................................................................................................99
Construo do Ciclo...................................................................................................................................... 100
Utilizando Coleces de Objectos..................................................................................................................... 101
COLECES DE OBJECTOS E OBJECTOS ............................................................................................... 102
O QUE SO OBJECTOS ?...........................................................................................................................................103
OBJECTOS: PROPRIEDADES, M TODOS E EVENTOS............................................................................................103
Propriedades ...................................................................................................................................................... 103
Mtodos............................................................................................................................................................... 103
Eventos................................................................................................................................................................. 104
OBJECTOS MAIS UTILIZADOS NO EXCEL...............................................................................................................105
Propriedades ...................................................................................................................................................... 105
Mtodos............................................................................................................................................................. 106
Propriedades ...................................................................................................................................................... 107
Mtodos............................................................................................................................................................. 108
Propriedades ...................................................................................................................................................... 109
______________________________________________________________________________________
ISCTE / DCTI 3 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Mtodos............................................................................................................................................................. 110
Propriedades ...................................................................................................................................................... 111
Mtodos............................................................................................................................................................. 112
OBJECTOS SINGULARES VS COLECES DE OBJECTOS..........................................................................113
INDEXAO DE COLECE S POR NMERO OU NOME ..........................................................................................114
Indexao com Base em Nmeros.................................................................................................................. 114
Indexao com Base no Nome ......................................................................................................................... 115
Vantagem........................................................................................................................................................... 115
O Objecto Range uma excepo.................................................................................................................. 116
Tratamento como objecto: ................................................................................................................................. 116
Tratamento como coleco de objectos:............................................................................................................ 116
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
______________________________________________________________________________________
ISCTE / DCTI 4 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Macros
______________________________________________________________________________________
ISCTE / DCTI 5 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
______________________________________________________________________________________
ISCTE / DCTI 6 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
3. Shortcut Key composto por uma comb inao de teclas que podero ser utilizadas
para executar uma macro.
4. Opte por armazenar a macro numa das seguintes alternativas: This Workbook, New
Workbook ou Personal Workbook, sendo que cada uma corresponde a macros de
mbito diferente. Assim devero armazenar a macro na opo ThisWorkBook para
que ela esteja activa sempre que o documento estiver aberto, e para que ela esteja
armazenada no prprio ficheiro no correndo o risco de ficar armazenada nas Macros
do Excel. (na rede do ISCTE impossvel gravar a macro no Personal WorkBook.)
6. Clique em OK para iniciar a gravao da macro neste momento ser exibida uma
toolbar semelhante da figura 2, e o cone do rato ser transformado numa cassete,
indicando o estado de gravao.
7. Na toolbar Stop Record, existem dois botes: Stop Recording e Relative Reference
O boto de Stop Recording termina a gravao da macro, o boto de Relative
Reference selecciona o modo de gravao da macro se feito com base em
referncias relativas (boto seleccionado) ou referncias absolutas.
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.
______________________________________________________________________________________
ISCTE / DCTI 7 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
EXERCCIO
Objectivo: Gravar uma macro testando a diferena entre a execuo de macros com
referncias absolutas e relativas.
______________________________________________________________________________________
ISCTE / DCTI 8 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Para ser visualizado necessrio abrir o Editor de Visual Basic for Applications :
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.
5. Para regressar ao Excel basta File / Close and return to Microsoft Excel.
______________________________________________________________________________________
ISCTE / DCTI 9 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
1. Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual Basic
Editor (para se familiarizar mais com o editor consulte o capitulo Editor Visual Basic
for Applications e o capitulo Funes e SubRotinas)
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)
______________________________________________________________________________________
ISCTE / DCTI 10 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
5. Poder em cada macro fazer uma chamada a uma outra macro, bastando para tal
escrever o respectivo nome.
6.3. Na rea intitulada por Classes aparecem todos os objectos especficos para o
manuseamento da aplicao seleccionada. A classe especial designada por Globals
refere-se s funes que esto disponveis na aplicao independentemente dos
objectos seleccionados.
6.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 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 12 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Boto na Toolbar
______________________________________________________________________________________
ISCTE / DCTI 13 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
4. Na rea respeitante aos Commands sero exibidos dois itens: Custom Menu Item e
Custom Button. Seleccione este segundo e arraste-o com o rato at Toolbar onde o
pretende inserir . Ateno s poder inserir o boto quando o ponteiro do rato ficar
com a forma I. Nesse momento libertar o boto do rato utilizado para o arrastamento
e verificar que ser criado um novo boto.
5. Na janela de Customize poder ainda utilizar dois botes que se encontram na rea do
Selected Command:
a) Description que exibe um texto explicando o que o comando seleccionado
faz.
b) Modify Selection semelhante ao clique sobre o boto criado, exibe uma
srie de tarefas possveis para configurao do boto ( ve r operaes
seguintes).
______________________________________________________________________________________
ISCTE / DCTI 14 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
6. Clique sobre o boto Modify Selection- abrindo um menu de tarefas possveis para a
configurao do boto Ver Figura 5
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.
______________________________________________________________________________________
ISCTE / DCTI 15 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Run
1. Tools / Macro / Macros
______________________________________________________________________________________
ISCTE / DCTI 16 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Comando no Menu
4. Na area respeitante aos Commands ser exibido um item de Custom Menu Item,
seleccione -o e arraste-o com o rato at a uma posio do menu que lhe interesse por
exemplo pode introduzir numa das listas de opes do menu (File, View,) ou ento
criar como uma nova opo do Menu..
______________________________________________________________________________________
ISCTE / DCTI 17 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
______________________________________________________________________________________
ISCTE / DCTI 18 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
DISSOCIAO
1. Tools / Customize
______________________________________________________________________________________
ISCTE / DCTI 19 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 20 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Editor de Visual
Basic for
Applications
______________________________________________________________________________________
ISCTE / DCTI 22 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual Basic
Editor
Encontrar o cran dividido em trs grandes reas: Project Explorer, Properties Window
e do lado direito a janela de edio de texto.
______________________________________________________________________________________
ISCTE / DCTI 23 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
PROJECT E XPLORER
Se a janela no estiver visvel active-a atravs do View / Project Explorer ou utilizando o
boto ou combinaes de letras associadas a esta tarefa.
Nesta janela poder visualizar a hierarquia dos projectos de Visual Basic for Applications
activos nesse momento.
Entre eles dever encontrar um cujo nome corresponde ao nome do WorkBook do Excel
com que est a trabalhar. E.g. VBAProject (Book1). dentro deste projecto que dever
trabalhar para que todas as funcionalidades que implemente estejam nele activas sempre
que necessrio.
______________________________________________________________________________________
ISCTE / DCTI 24 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
No folder do Microsoft Excel Objects, encontrar todos os objectos que fazem parte do
seu documento: as WorkSheets e o WorkBo ok (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.
______________________________________________________________________________________
ISCTE / DCTI 25 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
PROPERTIES W INDOW
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.
Nesta janela poder visualizar e alterar as propriedades que definem cada objecto: o
nome - neste caso.
______________________________________________________________________________________
ISCTE / DCTI 26 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
JANELA DE E DIO
A janela de edio exibir a cada momento o cdigo em Visual Basic for Applications
associado ao elemento seleccionado na janela do Project Explorer.
______________________________________________________________________________________
ISCTE / DCTI 27 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
OBJECT BROWSER
Para cada membro da classe dispe de um help on-line que o esclarece sobre a
respectiva funo e funcionamento, dando um exemplo que poder testar. Para tal
basta clicar sobre o boto de Help da janela do Object Browser.
HELP ON-LINE
O Editor de Visual Basic for Applications, disponibiliza ao utilizador um sistema de
ajuda constante. Assim, quando se constroiem procedimentos, na janela de edio,
medida que a linguagem escrita o editor abre oportunamente listas de opes para
ajudar a escrever o cdigo.
______________________________________________________________________________________
ISCTE / DCTI 28 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
AS CORES DO VBA
Na Janela de Edio so programados, armazenados e exibidos os procedimentos VBA
criados.
Cor Significado
Azul Palavras-Chave da linguagem. Ex: Sub, End Sub, Function, If, Then,
Else, While, Loop,
Vermelho Sempre que escreve na janela uma linha em linguagem VBA, o editor
vai rectificar a sintaxe da linguagem por forma a indicar se existe ou
no algum erro de escrita. Se for detectado um erro a linha fica a
vermelho e exibida uma mensagem de erro, seno todas as palavras
so reconhecidas, coloridas da cor da respectiva categoria e alteradas
para letras maisculas ou minsculas, conforme esteja pr-definido.
______________________________________________________________________________________
ISCTE / DCTI 29 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Funes e
SubRotinas
______________________________________________________________________________________
ISCTE / DCTI 30 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Como foi referido anteriormente, quando se grava uma macro no Excel, este tem um
comportamento em background que realiza a respectiva codificao para Visual Basic for
Applications. Este resultado bem visvel quando procedemos edio de uma macro no
Editor de Visual Basic for Applications. Cada macro que se cria tem um comportamento
concreto e autnomo relativamente a outras macros implementadas, e tem como
objectivo executar um determinado nmero de instrues1 que respondam s exigncias
do utilizador.
Cada macro criada d origem a um procedimento ou rotina. Existem dois tipos de rotinas:
1
Entenda-se instruo como uma tarefa a executar que corresponde a uma linha de cdigo.
______________________________________________________________________________________
ISCTE / DCTI 31 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
SUBROTINAS
Definio de SubRotinas
Sub <nome_da_macro> ( )
<corpo_da_macro>
End Sub
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.
______________________________________________________________________________________
ISCTE / DCTI 32 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie a
estrutura (Figura 14)
Assim dever indicar o tipo de rotina a criar Sub e o nome que pretende dar
macro (ou rotina ou procedimento ou SubRotina) 4 . Automaticamente ele criar a
estrutura da rotina, neste caso ficaria:
Sub Macro1( )
End Sub
4
Nomes alternativos para fazer referncia a um conjunto de instrues.
______________________________________________________________________________________
ISCTE / DCTI 33 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
SubRotina e Macro so duas designaes para a mesma realidade, portanto tudo o que foi
referido relativamente a Macros vlido tambm para as SubRotinas. (Consultar captulo
das Macros)
Neste contexto a execuo de SubRotinas segue o mesmo mecanismo das macros. Porm
neste momento j se pode referir uma nova forma de executar as macros ou SubRotinas
dentro de outras rotinas, i.e., quando se escreve dentro de uma rotina o nome de outra a
execuo da rotina tem continuidade na execuo da rotina que est a ser invocada.
FUNES
Definio de Funes
Funes so rotinas cuja definio comea com a palavra-chave Function e termina com
as palavras End Function. Todas as funes que utiliza no Excel so deste tipo de rotina.
A sua definio tem a estrutura seguinte:
<Nome da Funo> = <Valor / Expresso>
End Function
A funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e tem
como objectivo executar um conjunto de instrues e produzir um valor final. Isto ,
sempre que se pretender executar uma funo sabido priori que ela produzir um
valor. Recorde-se como exemplo a funo SUM, esta recebe por parmetro um conjunto
de valores que se pretendem somar, sabe-se que o resultado da aplicao dessa funo ao
conjunto de valores ser o respectivo somatrio.
Para definir o valor produzido por uma funo basta no seu interior, atribuir ao nome da
funo um determinado valor ou expresso.
______________________________________________________________________________________
ISCTE / DCTI 34 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
<Nome da Funo> = <Valor / Expresso>
End Function
Nota: Se os tipos no forem definidos ser assumido por defeito como sendo do tipo
Variant
______________________________________________________________________________________
ISCTE / DCTI 35 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie a
estrutura (Figura 15)
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:
Functio n IVA( )
End Function
______________________________________________________________________________________
ISCTE / DCTI 36 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
dentro de uma clula numa WorkSheet, semelhana de qualquer uma outra funo
do Excel
Com base na seguinte funo, analisemos as formas de execuo com mais pormenor:
______________________________________________________________________________________
ISCTE / DCTI 37 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 38 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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
______________________________________________________________________________________
ISCTE / DCTI 39 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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.
______________________________________________________________________________________
ISCTE / DCTI 40 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 41 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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.
______________________________________________________________________________________
ISCTE / DCTI 42 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Variveis
______________________________________________________________________________________
ISCTE / DCTI 43 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
O que so variveis?
As variveis constituem repositrios temporrios de dados, podendo ser utilizadas para
diversos fins.
______________________________________________________________________________________
ISCTE / DCTI 44 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
<Nome_Varivel> = <Valor>
Pela observao do procedimento Adio - Figura 22- podemos verificar que as variveis
Parcela_1 e Parcela_2 armazenam os valores introduzidos pelo utilizador atravs das
InputBox (Ver captulo "InputBox e MsgBox"). Tambm varivel Total vai ser atribudo
o valor resultante da adio das duas parcelas - Total = Parcela_1 + Parcela_2.
______________________________________________________________________________________
ISCTE / DCTI 45 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
TIPOS DE VARIVEIS
O tipo de varivel est associado ao gnero de informao que esta tem hiptese de
armazenar
Long 4 bytes permite armazenar nmeros inteiros entre -2 147 483 648 e
2 147 483 648
______________________________________________________________________________________
ISCTE / DCTI 46 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
DECLARAO DE VARIVEIS
Onde:
Dim Palavra chave que indica uma declarao de variveis (abreviatura de dimenso)
I_Numero - nome da varivel a utilizar
As palavra chave utilizada para separar o nome da varivel do tipo de dados
Integer tipo de dados atribudo varivel
______________________________________________________________________________________
ISCTE / DCTI 47 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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
______________________________________________________________________________________
ISCTE / DCTI 48 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
A utilizao genrica do tipo Objecto serve para suportar qualquer tipo de objecto Excel
(WorkBook,WorkSheet,Range,)
Exemplo:
Exemplo:
______________________________________________________________________________________
ISCTE / DCTI 49 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Contudo estas declaraes tambm podem ser feitas da seguinte forma genrica:
______________________________________________________________________________________
ISCTE / DCTI 50 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
PRS
Diminui o nmero de linhas de cdigo
CONTRAS
Aumenta o tempo de execuo o VBA primeiro precisa de reconhecer o tipo de
dados com os quais est a trabalhar.
Este tipo de dados consome mais memria (uma vez que tem que alocar espao para
qualquer tipo de dados que lhe seja atribudo) 16 bytes mais um byte por caractere
se for String => problemas de performance para subrotinas grandes.
______________________________________________________________________________________
ISCTE / DCTI 51 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Para que o VBA detecte um erro sempre que uma varivel no seja declarada dever
fazer:
Tools/Options
Editor Tab
Activar Require Variable Declaration
Neste caso sempre que seja detectada uma varivel que ainda no foi declarada d uma
mensagem de erro - Variable Not Defined
______________________________________________________________________________________
ISCTE / DCTI 52 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
______________________________________________________________________________________
ISCTE / DCTI 53 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Sub Tipos_definidos_Utilizador()
Pessoa.Nome = Francisco
Pessoa.DataNascimento = #8/7/73#
Pessoa.Idade = WorksheetFunction.Year(Date)_
WorksheetFunction.Year(Pessoa.DataNascimento)
Pessoa.BI = 103582915
MsgBox 5 Pessoa.Nome & Chr(13) & , Idade & Pessoa.Idade & Chr(13) & _
, Data de Nascimento & Pessoa.DataNascimento & Chr(13) & _
, com o BI nmero _ & Pessoa.BI
End Sub
5
Ver captulo InputBox e MsgBox
______________________________________________________________________________________
ISCTE / DCTI 54 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
VARIVEIS ARRAYS
O que um Array ?
Um Array uma varivel que representa um conjunto de variveis do mesmo tipo.
______________________________________________________________________________________
ISCTE / DCTI 55 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
0 1 2
0
1
2
3
______________________________________________________________________________________
ISCTE / DCTI 56 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Declarao de um array
ARRAYS UNI-DIMENSIONAIS
Dim ArrayNumerico(10) As Integer
Array_Numerico
0
1
2
3
4
5
6
7
8
9
ARRAYS BI-DIMENSIONAIS
Dim Tabela_Textual (5, 4 ) As String
Tabela_Textual
0 1 2
0
1
2
3
______________________________________________________________________________________
ISCTE / DCTI 57 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Utilizao de um Array
ATRIBUIO DE VALORES
<Nome_do_Array>(<Indice1_do_Elemento>[,<Indice2_do_Elemento>, ]) = <Valor>
Exemplo 1:
Sub Pases()
MsgBox "Pases Armazenados:" & Chr(13) & Pases(0) & Chr(13) & Pases(1) &_
Chr(13) & Pases(2)
End Sub
Aps a atribuio de valores a cada elemento do array, este passa a ter o contedo
seguinte:
Pases
Portugal 0
Brasil 1
Moambique 2
______________________________________________________________________________________
ISCTE / DCTI 58 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Exemplo 2:
Option Base 1
Sub Utilizacao_Array()
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
A indexao de um array por defeito tem inicio em 0, sendo que os respectivos ndices
vo de 0 a dimenso-1. Para alterar a base de indexao por forma a ter inicio em 1 basta
colocar no inicio do mdulo Option Base 1
Exemplo:
Sub Utilizacao_Array()
Lotaria(4)=int(10000*Rnd())
Lotaria(5)=int(10000*Rnd())
MsgBox Nmeros da lotaria: & Lotaria(4) & , & Lotaria(5)
End Sub
______________________________________________________________________________________
ISCTE / DCTI 59 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Constantes
______________________________________________________________________________________
ISCTE / DCTI 60 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
O QUE SO CONSTANTES ?
Constantes so valores que no alteram durante a execuo de uma rotina. So declaradas
da mesma forma que as variveis, a nica diferena reside no facto da atribuio ser feita
na mesma instruo da declarao, e s poder ser feita uma nica vez.
______________________________________________________________________________________
ISCTE / DCTI 61 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
InputBox e
MsgBox
______________________________________________________________________________________
ISCTE / DCTI 62 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
O QUE SO ?
Para haver interaco entre o utilizador e uma macro ou programa necessrio que exista
um interface de comunicao. Este poder ser mais ou menos complexo e completo,
contudo existem dois elementos bsicos para estabelecer esta ligao: InputBox e
MsgBox.
Neste contexto a InputBox uma funo que permite ao utilizador introduzir dados no
programa portanto um mecanismo de input. O MsgBox um mecanismo de Output e
permite ao utilizador visualizar os dados produzidos pelo programa.
INPUTB OX
O que faz
1. Exibe no cran uma janela com uma caixa text box para a insero de dados.
3. Como uma funo produz um valor final. Este consiste nos dados inseridos pelo
utilizador na forma textual - String.
Sintaxe
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Numa primeira ava liao 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.
______________________________________________________________________________________
ISCTE / DCTI 63 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Parmetros
Parmetro Comentrio
Exemplo:
"A Soma de 3 com 5 :" & Chr(13) & " 8 "
HelpFile Nome do ficheiro de Help que ser utilizado para dar apoio ao
(Facultativo) preenchimento desta janela. Se for indicado este parmetro o
seguinte obrigatrio.
Exemplo:
InputBox(Introduza o Nome da Aplicao:, , Excel)
Na janela de input ser exibida a mensagem Introduza o Nome da Aplicao:, o ttulo
da caixa ser o definido por defeito e o valor na caixa de insero ser Excel.
______________________________________________________________________________________
ISCTE / DCTI 64 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
MSGBOX
O que faz
1. Exibe no cran uma janela com uma mensagem.
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.
______________________________________________________________________________________
ISCTE / DCTI 65 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Parmetros
Parmetro Comentrio
Exemplo:
"A Soma de 3 com 5 :" & Chr(13) & " 8 "
HelpFile Nome do ficheiro de Help que ser utilizado para dar apoio ao
(Facultativo) preenchimento desta janela. Se for indicado este parmetro o
seguinte obrigatrio.
Exemplo:
MsgBox(Erro de Sintaxe !!!, , Mensagem de Erro)
Na janela de output ser exibida a mensagem Erro de Sintaxe, o boto exibido ser o de
OK (por defeito) e o titulo da janela ser Mensagem de Erro.
______________________________________________________________________________________
ISCTE / DCTI 66 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Pela anlise desta tabela poder constatar que existem diferentes agrupamentos de
cdigos: para definir o tipo de botes (0-5), para definir o tipo de cones (16,32,48,64),
para definir o boto seleccionado por defeito (0,256,512,768) e para indicar o modo de
execuo (0 e 4096). Poder adicionar os cdigos e assim fazer combinaes entre
diversas opes destes 4 grupos, contudo nunca dever adicionar mais do que um cdigo
por agrupamento.
______________________________________________________________________________________
ISCTE / DCTI 67 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Exemplos:
Para a instruo:
Figura 24 MsgBox
Para a instruo:
Figura 25 MsgBox
______________________________________________________________________________________
ISCTE / DCTI 68 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
vbOK 1 OK
vbCancel 2 Cancel
vbAbort 3 Abort
vbRetry 4 Retry
vbIgnore 5 Ignore
vbYes 6 Yes
vbNo 7 No
______________________________________________________________________________________
ISCTE / DCTI 69 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Domnio das
variveis,
constantes e
rotinas
______________________________________________________________________________________
ISCTE / DCTI 70 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
O QUE O DOMINIO ?
Scope ou domnio de um elemento refere-se rea na aplicao na qual esse mesmo
elemento pode ser acedvel e utilizado, ou seja onde que o elemento reconhecido.
______________________________________________________________________________________
ISCTE / DCTI 71 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
mbito do Procedimento
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
______________________________________________________________________________________
ISCTE / DCTI 72 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
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.
______________________________________________________________________________________
ISCTE / DCTI 73 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
Sub Ambito_Projecto()
Var_1 = InputBox (Introduza um nmero Inteiro)
Ambito_Projecto _2
End Sub
No Module_2 tem-se:
______________________________________________________________________________________
ISCTE / DCTI 74 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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()
End Sub
______________________________________________________________________________________
ISCTE / DCTI 75 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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
______________________________________________________________________________________
ISCTE / DCTI 76 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Exemplo:
Public Sub Ambito_Procedimento()
Const Taxa_Desc As Single = 0.05
Dim Desconto As Double
Para que uma rotina tenha o mbito do mdulo onde est definida, dever ser antecedida
pela palavra chave Private.
______________________________________________________________________________________
ISCTE / DCTI 77 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Estruturas de
Controlo
______________________________________________________________________________________
ISCTE / DCTI 78 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
QUAIS AS ESTRUTURAS
VBA Control
For Each Next Realiza uma determinada tarefa repetitiva em cada objecto
de uma coleco ou em cada item de um array.
______________________________________________________________________________________
ISCTE / DCTI 79 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
I F-THEN -E LSE
Funo IF do Excel
Recorrendo funo IF do Excel, recorde:
1. Avalia a condio, que dever ser uma expresso booleana colocada como primeiro
parmetro;
If <Condio> The n
<se condio verdadeira>
[ Else
<se condio falsa> ]
End If
A palavra Else opcional num If- Then-Else Statement, sendo que no caso de ser omitida,
a avaliao negativa da condio implica uma sada automtica da Instruo If.
______________________________________________________________________________________
ISCTE / DCTI 80 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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.
______________________________________________________________________________________
ISCTE / DCTI 81 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Nsorteio = NAposta A condio a testar. Serve para determinar a sequncia a dar execuo
da rotina. Da avaliao desta condio pode-se obter um de dois valores
True ou False, sendo que depende deste resultado o caminho a prosseguir.
Se for True executar as instrues que seguirem a palavra-chave Then
at encontrar a palavra chave Else, no executando mais nada dentro do
IF, caso contrrio executar o cdigo que se seguir palavra chave Else
at ao End If.
Then Palavra chave que determina o fim da condio teste. Todas as instrues
que tm inicio nesta palavra-chave at palavra-chave Else sero
executadas se a condio for verdadeira.
End If Palavra-chave que indica o fim do controlo de If- Then-Else e como tal
onde se deve retomar as instrues para prosseguir a execuo do
procedimento.
______________________________________________________________________________________
ISCTE / DCTI 82 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
APLICAO PRTICA
Pretende-se criar uma macro que classifique etariamente um indivduo em funo da sua
idade. A classificao pretendida a seguinte:
______________________________________________________________________________________
ISCTE / DCTI 83 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
FOR NEXT
Permite a execuo de uma tarefa durante um determinado nmero de vezes.
Sintaxe
For <Inicializao do Contador> To <Va lor > [ 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.
______________________________________________________________________________________
ISCTE / DCTI 84 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
CONSTRUO DO CICLO:
For Palavra-chave que indica o inicio do ciclo For-Next
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.
______________________________________________________________________________________
ISCTE / DCTI 85 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
TRADUO INTEGRAL
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.
______________________________________________________________________________________
ISCTE / DCTI 86 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Outra Aplicao
Pretende-se criar uma rotina para calcular um factorial.
______________________________________________________________________________________
ISCTE / DCTI 87 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
WHILE-W END
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.
______________________________________________________________________________________
ISCTE / DCTI 88 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
CONSTRUO DO CICLO:
While Palavra-chave que indica o inicio do ciclo While-
Wend
______________________________________________________________________________________
ISCTE / DCTI 89 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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.
______________________________________________________________________________________
ISCTE / DCTI 90 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Outra Aplicao
Pretende-se realizar um jogo de geografia. Tente compreender o seu funcionamento.
______________________________________________________________________________________
ISCTE / DCTI 91 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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:
Loop
Ou ento:
Do
<Instrues a realizar em cada iterao>
______________________________________________________________________________________
ISCTE / DCTI 92 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Aplicaes Prticas
Utilizando a condio teste no inicio do Loop e com a palavra While
______________________________________________________________________________________
ISCTE / DCTI 93 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 94 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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>
End Select
______________________________________________________________________________________
ISCTE / DCTI 95 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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 96 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
CONSTRUO DA ESTRUTURA
Select Case Palavras-Chave que indicam o inicio de um controlo
Select Case
______________________________________________________________________________________
ISCTE / DCTI 97 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Esta estrutura quando aplicada em arrays no funciona para a actualizao dos valores
do array, mas somente para a extraco do seu contedo. Contudo quando aplicada a
coleces de objectos pode s- lo para alterao das suas propriedades ou extraco de
valores.
Sintaxe
Next
______________________________________________________________________________________
ISCTE / DCTI 98 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Aplicaes Prticas
UTILIZANDO A RRAYS
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:
______________________________________________________________________________________
ISCTE / DCTI 99 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Construo do Ciclo
For Each Palavras-Chave que indicam o inicio de um controlo
For-Each
______________________________________________________________________________________
ISCTE / DCTI 100 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 101 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Coleces de
Objectos e
Objectos
______________________________________________________________________________________
ISCTE / DCTI 102 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
O QUE SO OBJECTOS ?
Objectos so elementos caracterizados por um conjunto de propriedades, e que tm
subjacente um determinado comportamento. Por exemplo, uma janela do windows um
objecto, caracterizada por um nome, um ttulo, uma dimenso, um posicionamento dentro
do cran,, e tem um comportamento inerente, pode ser aberta, fechada, minimizada,
maximizada, escondida, redimensionada,
Proprieda des
As propriedades dos objectos constituem o conjunto de caracteristicas que o definem. Por
exemplo: nome, cor, dimenso, designao, valor contido,
Mtodos
Os mtodos traduzem o comportamento de um objecto. Estes mtodos representam
procedimentos que executam uma determinada tarefa, que pode ser complementada
atravs da passagem de argumentos ou parmetros.
______________________________________________________________________________________
ISCTE / DCTI 103 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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.
______________________________________________________________________________________
ISCTE / DCTI 104 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Application
Application o objecto de topo hierrquico, representa o prprio Excel.
PROPRIEDADES
Propriedades
______________________________________________________________________________________
ISCTE / DCTI 105 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
MTODOS
Mtodos
Argumentos : no tem
Argumentos :
Helpfile: nome do ficheiro, incluindo a path se necessrio
Helpcontextid: nmero que faz referncia ao ndice de help
Quit Fecha aplicao Excel. (se a propriedade Display alerts estiver com o
valor False, o Excel no propor a gravao de alteraes nos
ficheiros)
Argumentos : no tem
______________________________________________________________________________________
ISCTE / DCTI 106 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
WorkBook
O Objecto WorkBook, na hierarquia de objectos segue de imediato o objecto application
e representa um ficheiro de Excel.
PROPRIEDADES
Propriedades
______________________________________________________________________________________
ISCTE / DCTI 107 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
MTODOS
Mtodos
______________________________________________________________________________________
ISCTE / DCTI 108 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
WorkSheet
Na hierarquia situa-se abaixo do objecto WorkBook, uma vez que um WorkBook
constitudo por um conjunto de WorkSheets.
PROPRIEDADES
Propriedades
______________________________________________________________________________________
ISCTE / DCTI 109 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
MTODOS
Mtodos
______________________________________________________________________________________
ISCTE / DCTI 110 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Range
Objecto utilizado para representar uma ou mais clulas de uma WorkSheet.
PROPRIEDADES
Propriedades
______________________________________________________________________________________
ISCTE / DCTI 111 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
MTODOS
Mtodos
Calculate Provoca o clculo da frmula constantes do range
Argumentos: No Tem
ClearContents Apaga o contedo (frmulas e valores) de uma clula,
deixando os formatos.
Argumentos: No Tem
Copy Copia o contedo de um range para um outro de igual
dimenso ou ento para o clipboard.
Argumentos:
Destination range para o qual os valores vo ser copiados (na
ausncia deste parmetro a cpia feita para o clipboard)
OffSet Provoca um deslocamento de um determinado nmero de
linhas e de colunas, tendo como base o range ao qual este
mtodo est a ser aplicado.
Argumentos:
RowOffset nmero de linhas que se desloca
ColumnOffset nmero de colunas que se desloca
EntireRow Faz referncia (s) linha(s) indicadas por um determinado
range.
Argumentos: No Tem
Select Selecciona o range em questo.
Argumentos:
Replace- (Opcional)
Cell Referncia uma clula, atravs dos seus ndices numricos.
Argumentos:
Nmero da Linha
Nmero da Coluna
Ex: Clula C5 ser representado por Cells( 5, 3)
______________________________________________________________________________________
ISCTE / DCTI 112 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
OBJECTOS SINGULARES VS
COLECES DE OBJECTOS
Objecto Singular refere um nico objecto que pode ser referenciado pelo nome.
______________________________________________________________________________________
ISCTE / DCTI 113 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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.
Exemplo:
WorkSheets(3).Name=Terceiro
______________________________________________________________________________________
ISCTE / DCTI 114 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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
______________________________________________________________________________________
ISCTE / DCTI 115 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Ou ento:
______________________________________________________________________________________
ISCTE / DCTI 116 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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
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 117 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
ActiveWorkbook.Worksheets(1).Range(A1).Value=1
Worksheets(1).Range(A1).Value=1
ActiveSheet.Range(A1).Value=1
Range(A1).Value=1
______________________________________________________________________________________
ISCTE / DCTI 118 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
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 119 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
Miscellaneous
______________________________________________________________________________________
ISCTE / DCTI 120 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
A INSTRUO W ITH
Aplicao Prtica
Ou Ento:
______________________________________________________________________________________
ISCTE / DCTI 121 / 122
Luisa.Domingues@iscte.pt
Excel Macros e Visual Basic for Applications
(verso Draft)
______________________________________________________________________________________
ISCTE / DCTI 122 / 122
Luisa.Domingues@iscte.pt