Académique Documents
Professionnel Documents
Culture Documents
(verso Draft)
ndice
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
Editor de Visual Basic for Applications.................................................................................................20 REMOVER MACROS.........................................................................................................................................21 Remoo de Macros em Ambiente Excel...............................................................................................21 Remoo de Macros no Editor de VBA..................................................................................................21 EDITOR DE VISUAL BASIC FOR APPLICATIONS............................................................................22 PROJECT EXPLORER ........................................................................................................................................24 PROPERTIES WINDOW......................................................................................................................................26 JANELA DE EDIO.........................................................................................................................................27 OBJECT BROWSER...........................................................................................................................................28 HELP ON-LINE...............................................................................................................................................28 AS CORES DO VBA.......................................................................................................................................29 FUNES E SUBROTINAS.......................................................................................................................30 SUBROTINAS..................................................................................................................................................32 Definio de SubRotinas........................................................................................................................32 Trabalhar no Editor de VBA Criar uma SubRotina ...........................................................................33 Execuo de uma SubRotina..................................................................................................................34 FUNES........................................................................................................................................................34 Definio de Funes.............................................................................................................................34 Definio do tipo de parmetros e do tipo da funo............................................................................35 Trabalhar no Editor de VBA Criar uma Funo................................................................................36 Execuo de uma Funo......................................................................................................................37
Execuo dentro de uma Clula.........................................................................................................................38 Execuo dentro de uma Rotina........................................................................................................................44
1 / 132
Variveis Declarao Forada...........................................................................................................57 VARIVEIS TIPOS DEFINIDOS PELO UTILIZADOR - ESTRUTURAS..............................................................................58 Definio do Tipo...................................................................................................................................58 Utilizao das Estruturas de Dados.......................................................................................................59 VARIVEIS ARRAYS.....................................................................................................................................60 O que um Array ?................................................................................................................................60
Array Uni-Dimensional.....................................................................................................................................60 Array Bi-Dimensional.......................................................................................................................................61
Declarao de um array........................................................................................................................62
Arrays Uni-dimensionais...................................................................................................................................62 Arrays Bi-dimensionais.....................................................................................................................................62
Utilizao de um Array..........................................................................................................................63
Para aceder ao elemento....................................................................................................................................63 Atribuio de valores ........................................................................................................................................63
Option Base e Array Bounds..................................................................................................................64 CONSTANTES.............................................................................................................................................65 O QUE SO CONSTANTES ?................................................................................................................................66 INPUTBOX E MSGBOX.............................................................................................................................68 O QUE SO ?..................................................................................................................................................68 INPUTBOX......................................................................................................................................................69 O que faz.............................................................................................................................................69 Sintaxe....................................................................................................................................................69 Parmetros.............................................................................................................................................69 MSGBOX.......................................................................................................................................................70 O que faz.............................................................................................................................................70 Sintaxe....................................................................................................................................................71 Parmetros.............................................................................................................................................71 Valores Produzidos.............................................................................................................................74 DOMNIO DAS VARIVEIS, CONSTANTES E ROTINAS.................................................................76 O QUE O DOMINIO?.......................................................................................................................................76 DOMNIO DAS VARIVEIS.................................................................................................................................77 mbito do Procedimento........................................................................................................................77 mbito do Mdulo..................................................................................................................................78 mbito do Projecto.................................................................................................................................79 DOMNIO DAS CONSTANTES .............................................................................................................................80 mbito do Procedimento........................................................................................................................81
2 / 132
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
COLECES DE OBJECTOS E OBJECTOS......................................................................................112 O QUE SO OBJECTOS ?.................................................................................................................................113 OBJECTOS: PROPRIEDADES, MTODOS E EVENTOS.............................................................................................113 Propriedades........................................................................................................................................113 Mtodos ...............................................................................................................................................113 Eventos.................................................................................................................................................114 OBJECTOS MAIS UTILIZADOS NO EXCEL............................................................................................................115
Propriedades....................................................................................................................................................115 Mtodos...........................................................................................................................................................116 Propriedades....................................................................................................................................................117 Mtodos...........................................................................................................................................................118 Propriedades....................................................................................................................................................119
3 / 132
OBJECTOS SINGULARES VS COLECES DE OBJECTOS...........................................................................123 INDEXAO DE COLECES 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.................................................................................................................132
4 / 132
Macros
5 / 132
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.
6 / 132
1. Na toolbar Stop Record, existem dois botes: Stop Recording e Relative Reference O boto de Stop Recording termina a gravao da macro, o boto de Relative Reference selecciona o modo de gravao da macro se feito com base em referncias relativas (boto seleccionado) ou referncias absolutas. 2. No caso da toolbar Stop Record desaparecer, poder voltar a exibi-la fazendo no menu a sequncia: View / Toolbars / Stop Record (seleccione a toolbar). Caso a toolbar no aparea listada a gravao de macros no est activa. Nota: Tome ateno aos passos que d quando est a gravar pois tudo ser registado, o que significa que quando for executar a macro, esses procedimentos sero efectuados.
7 / 132
EXERCCIO
Objectivo: Gravar uma macro testando a diferena entre a execuo de macros com
referncias absolutas e relativas. 1 Fase: Macro com referncias Absolutas 1. Accione a gravao da macro. Atribua-lhe o Short Key Ctrl+P 2. Certifique-se que o boto Relative Reference est desactivado. 3. Clique na clula B3. 4. Escreva ISCTE 5. Formate a clula para Bold, Itlico, tamanho 18, Small Caps, (utilize o Format / Font) 6. Na clula B4 escreva: Av. Foras Armadas 7. Na clula B5 escreva: 1700 Lisboa 8. Pare a gravao da macro. A macro est criada. 9. Apague tudo o que escreveu nas clulas da coluna B. 10. Clique na clula L8. 11. Carregue simultaneamente nas teclas Ctrl e P 12. O que aconteceu ? 2 Fase: Macro com referncias Relativas 1. Seleccione a clula D5. 2. Accione a gravao da macro. Atribua-lhe o Short Key Ctrl+R 3. Seleccione o boto Relative Reference. 4. Escreva ISCTE na clula que havia sido seleccionada. 5. Formate a clula para Bold, Itlico, tamanho 18, Small Caps, (utilize o Format / Font) 6. Na clula D6 escreva: Av. Foras Armadas 7. Na clula D7 escreva: 1700 Lisboa 8. Pare a gravao da macro. A macro est criada. 9. Apague tudo o que escreveu nas clulas da coluna D. 10. Clique na clula L8. 11. Carregue simultaneamente nas teclas Ctrl e R 12. O que aconteceu ? Porqu ?
8 / 132
PROCEDIMENTO BACKGROUND
DO
EXCEL
O Excel quando se grava uma macro cria um objecto designado por module no workbook onde regista todas as operaes gravadas em linguagem Visual Basic for Applications VBA. Este module no aparece no Excel com as restantes Sheets. Para ser visualizado necessrio abrir o Editor de Visual Basic for Applications: 1. Tools / Macro / Macros 2. Selecciona-se a Macro e Clica-se no boto Edit 3. Poder visualizar na rea do lado direito o cdigo VBA que est subjacente s macros que entretanto gravou. A poder executar as mesmas tarefas que num editor de texto normal: escrever, apagar, copiar, mover, mas instrues de VBA. 4. Tente fazer a leitura do que est escrito e compreenda o procedimento da macro. 5. Para regressar ao Excel basta File / Close and return to Microsoft Excel.
9 / 132
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)
10 / 132
6.2. Na Caixa de Drop-Down onde aparece referido <All Libraries>, seleccione a aplicao para a qual pretende ajuda neste caso Excel. Convm referir que poder utilizar as funes de toda e qualquer aplicao. 6.3. Na rea intitulada por Classes aparecem todos os objectos especficos para o manuseamento da aplicao seleccionada. A classe especial designada por Globals refere-se s funes que esto disponveis na aplicao independentemente dos objectos seleccionados. 6.4. Seleccione um dos objectos e visualize do lado direito os Members of <Elemento seleccionado> 6.5. Para cada membro da classe dispe de um help on-line que o esclarece sobre a respectiva funo e funcionamento, dando exemplo que poder testar. Para tal basta clicar sobre o boto de Help da janela do Object Browser.
11 / 132
EXECUTAR
UMA
MACRO
A execuo de uma macro pode ser concretizada de diversas formas: Tecla de Atalho Shortcut Key Boto na Toolbar Run Comando no Menu Editor de Visual Basic for Applications
12 / 132
Boto na Toolbar
ASSOCIAR
UMA
MACRO
A UM
BOTO
1. View / Toolbars / Customize 2. Na janela do Customize seleccione o Commands Tab 3. Seleccione a categoria Macro (visualizar a caixa de dilogo exibida na Figura 4)
13 / 132
4.
Na rea respeitante aos Commands sero exibidos dois itens: Custom Menu Item e Custom Button. Seleccione este segundo e arraste-o com o rato at Toolbar onde o pretende inserir. Ateno s poder inserir o boto quando o ponteiro do rato ficar com a forma I. Nesse momento libertar o boto do rato utilizado para o arrastamento e verificar que ser criado um novo boto.
5. Na janela de Customize poder ainda utilizar dois botes que se encontram na rea do Selected Command: a) Description que exibe um texto explicando o que o comando seleccionado faz. b) Modify Selection semelhante ao clique sobre o boto criado, exibe uma srie de tarefas possveis para configurao do boto ( ver operaes seguintes).
14 / 132
6. Clique sobre o boto Modify Selection- abrindo um menu de tarefas possveis para a configurao do boto Ver Figura 5 a) No ltimo agrupamento de configuraes possveis existe uma opo designada por Assign Macro. Esta opo permite indicar qual a macro que dever ser executada sempre que se clica no boto. b) No terceiro agrupamento existem 4 estilos diferentes de exibir o boto: s com texto, com texto e imagem ou somente com imagem. Se seleccionar o estilo Texto e Imagem, ser exibido no boto para alm da imagem o nome associado ao boto. c) Na opo Name indique o nome que pretende ver associado ao boto, por defeito aparece o nome da macro. (repare que aparece um & atrs da letra que aparece a sublinhado) d) Para alterar a imagem associada ao boto poder: optar por uma imagem diferente, alterar a que est a visualizar ou a construir a sua. Para isso clique sobre a tarefa de Change Button Image, seleccione o logotipo pretendido, se nenhum o satisfizer e pretender criar o seu seleccione o logotipo que representa um quadrado vazio. Para o poder (re)desenhar a imagem, na lista de tarefas disponibilizada pelo boto Modify Selection opte por Edit Button Image e crie a sua imagem que poder reeditar.
DISSOCIAR
UMA
MACRO
DE UM
BOTO
15 / 132
Run
1. Tools / Macro / Macros 2. Na caixa de dilogo Macros selecciona-se a macro pretendida na lista da Macro Name (Figura 6) 3. Clique sobre o boto Run
16 / 132
Comando no Menu
ASSOCIAO MENU
DE UMA
MACRO
A UM
COMANDO
DO
1. View / Toolbars / Customize 2. Na janela do Customize encontra-se no Commands Tab 3. Seleccione a categoria Macro 4. Na area respeitante aos Commands ser exibido um item de Custom Menu Item, seleccione-o e arraste-o com o rato at a uma posio do menu que lhe interesse por exemplo pode introduzir numa das listas de opes do menu (File, View,) ou ento criar como uma nova opo do Menu..
17 / 132
5. Se pretender criar uma nova lista no menu dever : a) Seleccionar a categoria New Menu b) Na rea dos Commands ser exibida a opo New Menu, que dever arrastar at barra dos menus c) Poder alterar o seu nome clicando no boto de Modify Selection d) Esta nova lista ter o mesmo comportamento que a outras
Fig.8 Caixa de dilogo para criar um novo menu na barra dos menus
6.
Na janela de Customize poder ainda utilizar dois botes que se encontram na rea do Selected Command: c) Description que exibe um texto explicando o que o comando seleccionado faz. d) Modify Selection semelhante ao clique sobre o menu ou comando de menu criado, exibe uma srie de tarefas possveis para configurao (Ver o item 6 do captulo Associar uma Macro a um Boto)
18 / 132
DISSOCIAO
1. Tools / Customize 2. Arraste o Menu ou Comando do Menu at ao documento e solte-o
19 / 132
20 / 132
REMOVER MACROS
A remoo das macros poder ser feita: no ambiente Excel, ou no Editor de VBA
21 / 132
22 / 132
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.
23 / 132
PROJECT EXPLORER
Se a janela no estiver visvel active-a atravs do View / Project Explorer ou utilizando o boto ou combinaes de letras associadas a esta tarefa. Nesta janela poder visualizar a hierarquia dos projectos de Visual Basic for Applications activos nesse momento. Entre eles dever encontrar um cujo nome corresponde ao nome do WorkBook do Excel com que est a trabalhar. E.g. VBAProject (Book1). dentro deste projecto que dever trabalhar para que todas as funcionalidades que implemente estejam nele activas sempre que necessrio.
24 / 132
Assim se fizer o desdobramento do seu VBAProject, encontrar um folder cuja designao Microsoft Excel Objects, e um outro designado Modules (se este no aparecer significa que o seu projecto ainda no possui qualquer macro implementada. Para criar este folder dever fazer: Insert / Module). No folder do Microsoft Excel Objects, encontrar todos os objectos que fazem parte do seu documento: as WorkSheets e o WorkBook (que no fundo o conjunto de WorkSheets). Se clicar duplamente em cada um destes objectos, uma nova janela ser visualizada na rea da direita, em cada uma dessas reas poder definir a aco a ser executada em funo dos eventos de cada objecto. No Folder Modules, aparecer o conjunto de ficheiros (mdulos) onde poder programar as suas macros. Clicando duplamente em cada um dos mdulos indicados poder visualizar as macros, que o compem, na janela da direita.
25 / 132
PROPERTIES WINDOW
Se a janela das propriedades no estiver visvel active-a atravs do View / Properties Window ou utilizando o boto ou combinaes de letras associadas a esta tarefa.
Nesta janela poder visualizar e alterar as propriedades que definem cada objecto: o nome - neste caso.
26 / 132
JANELA
DE
EDIO
A janela de edio exibir a cada momento o cdigo em Visual Basic for Applications associado ao elemento seleccionado na janela do Project Explorer.
27 / 132
OBJECT BROWSER
No Editor de Visual Basic for Applications poder encontrar ajuda para o desenvolvimento do seu procedimento. Assim: Clique no cone do Object Browser ou View/Object Browser ou F2 Na Caixa de Drop-Down onde aparece referido <All Libraries>, seleccione a aplicao para a qual pretende ajuda neste caso Excel. Convm referir que poder utilizar as funes de toda e qualquer aplicao. Na rea intitulada por Classes aparecem todos os objectos especficos para o manuseamento da aplicao seleccionada. A classe especial designada por Globals refere-se s funes que esto disponveis na aplicao independentemente dos objectos seleccionados. Seleccione um dos objectos e visualize do lado direito os Members of <Elemento seleccionado> Para cada membro da classe dispe de um help on-line que o esclarece sobre a respectiva funo e funcionamento, dando um exemplo que poder testar. Para tal basta clicar sobre o boto de Help da janela do Object Browser.
HELP ON-LINE
O Editor de Visual Basic for Applications, disponibiliza ao utilizador um sistema de ajuda constante. Assim, quando se constroiem procedimentos, na janela de edio, medida que a linguagem escrita o editor abre oportunamente listas de opes para ajudar a escrever o cdigo.
28 / 132
AS CORES
DO
VBA
Na Janela de Edio so programados, armazenados e exibidos os procedimentos VBA criados. Porm, o texto envolvido em cada procedimento dotado de uma srie de cores diferentes, sendo que cada uma tem significado diferente.
Cor
Azul Vermelho
Significado
Palavras-Chave da linguagem. Ex: Sub, End Sub, Function, If, Then, Else, While, Loop, 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. Nome de variveis, procedimentos, valores, operadores, Comentrio introduzidos no seio dos procedimentos. Estes comentrios servem para o utilizador poder associar algumas explicaes aos procedimentos realizados. De referir que as palavras com esta cor so ignoradas no procedimento, i.e., no produzem qualquer efeito na sua execuo. Para introduzir comentrios bastar que o caractere anteceda o texto a introduzir. Um sombreado amarelo poder aparecer sobre a linha que identifica um procedimento. Esta cor simboliza a ocorrncia de um erro na execuo do respectivo procedimento e o estado de execuo do mesmo, i.e., o procedimento iniciou a execuo, durante a qual detectou um erro e agora est parado, mas ainda em execuo. Quando isto acontecer no dever voltar a dar ordem de execuo do procedimento, sem antes parar (Stop) a execuo mal sucedida.
Preto Verde
Amarelo
29 / 132
Funes e SubRotinas
30 / 132
Como foi referido anteriormente, quando se grava uma macro no Excel, este tem um comportamento em background que realiza a respectiva codificao para Visual Basic for Applications. Este resultado bem visvel quando procedemos edio de uma macro no Editor de Visual Basic for Applications. Cada macro que se cria tem um comportamento concreto e autnomo relativamente a outras macros implementadas, e tem como objectivo executar um determinado nmero de instrues1 que respondam s exigncias do utilizador. Cada macro criada d origem a um procedimento ou rotina. Existem dois tipos de rotinas: as subrotinas ou rotinas Sub, e as funes.
Entenda-se instruo como uma tarefa a executar que corresponde a uma linha de cdigo.
31 / 132
SUBROTINAS
Definio de SubRotinas
As SubRotinas so aquelas cuja definio delimitada pelas palavras-chave Sub e EndSub. Assim se reparar todas as macros que grava no Excel so deste tipo. Repare ainda como que so definidas: Sub <nome_da_macro> ( ) <corpo_da_macro> End Sub Estas SubRotinas so designadas pelo nome2 que lhe atribumos e no recebem parmetros3 do exterior, tm como funo desempenhar um conjunto de tarefas que compem o seu corpo. O corpo da macro, assim composto por um conjunto de instrues, sendo que cada instruo diferente necessita de estar numa linha diferente. Contudo, quando se trata de instrues demasiado grandes o editor faz a sua partio por diversas linhas, recorrendo ao operador _, por forma a facilitar a leitura.
O nome da rotina pode ser qualquer um desde que no contenha espaos, comece por caracteres alfa
Para ter a noo do que so parmetros recorde-se do funcionamento das funes do Excel, que para executarem determinada funo necessitavam de receber parmetros que colocamos entre parntesis separados por virgulas.
32 / 132
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
FUNES
Definio de Funes
Funes so rotinas cuja definio comea com a palavra-chave Function e termina com as palavras End Function. Todas as funes que utiliza no Excel so deste tipo de rotina. A sua definio tem a estrutura seguinte: Function <Nome da Funo> ( <parametro1>, <parametro2>,) <Nome da Funo> = <Valor / Expresso> End Function A funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e tem como objectivo executar um conjunto de instrues e produzir um valor final. Isto , sempre que se pretender executar uma funo sabido priori que ela produzir um valor. Recorde-se como exemplo a funo SUM, esta recebe por parmetro um conjunto de valores que se pretendem somar, sabe-se que o resultado da aplicao dessa funo ao conjunto de valores ser o respectivo somatrio.
34 / 132
35 / 132
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
36 / 132
37 / 132
EXECUO
DENTRO DE UMA
CLULA
38 / 132
39 / 132
40 / 132
41 / 132
42 / 132
4. Clique em OK e de imediato uma janela de ajuda vir auxiliar a utilizao da sua funo (Figura 18)
43 / 132
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.
44 / 132
45 / 132
46 / 132
DIFERENAS
ENTRE
FUNES
ROTINAS
As Funes Comeam com a palavra-chave Function e terminam com as palavras End Function
2. As Funes podem ser chamadas a partir de frmulas introduzidas numa WorkSheet 1. As funes retornam valores para as frmulas ou subrotinas que as chamarem
REGRAS
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.
47 / 132
Variveis
MANUSEAMENTO
COM
VARIVEIS
48 / 132
O que so variveis?
As variveis constituem repositrios temporrios de dados, podendo ser utilizadas para diversos fins.
49 / 132
TIPOS
DE VARIVEIS
50 / 132
51 / 132
DECLARAO
DE
VARIVEIS
VARIVEIS VANTAGENS
DA UTILIZAO
Simplificam a codificao, principalmente quando se necessita de utilizar um valor especifico inmeras vezes Com variveis o cdigo mais rpido
52 / 132
VARIVEIS
DO
TIPO OBJECTO
Uma varivel objecto representa uma referncia a um objecto. Uma varivel de extrema importncia que facilita a codificao e melhora a performance da subrotina.
Onde:
Set palavra chave que indica a assignao de uma varivel objecto <Var_Objecto> - Varivel Objecto = - Operador de assignao <Objecto> - Objecto a ser atribudo varivel
53 / 132
54 / 132
Ento qual o interesse de definir as variveis de forma especifica se o podemos fazer de forma genrica?
Por uma questo de performance, se utilizar um objecto genrico, o VBA antes de executar qualquer funo com o objecto tem que primeiramente o identificar (perdendo tempo) em subrotinas simples essa diferena no substancial mas quando se trata de grandes subrotinas j se denotam diferenas significativas.
55 / 132
E O
A declarao de variveis opcional, se as variveis no forem declaradas o VBA faz a sua declarao por defeito. Assim sempre que a instruo do Dim omitida para uma varivel, essa assume o tipo Variant.
PRS
Diminui o nmero de linhas de cdigo No necessrio estar preocupado se a varivel est ou no declarada porque o VBA automaticamente o faz
CONTRAS
Aumenta o tempo de execuo o VBA primeiro precisa de reconhecer o tipo de dados com os quais est a trabalhar. Este tipo de dados consome mais memria (uma vez que tem que alocar espao para qualquer tipo de dados que lhe seja atribudo) 16 bytes mais um byte por caractere se for String => problemas de performance para subrotinas grandes. No possvel saber o tipo de dados que uma determinada varivel contm dificultando a deteco de erros.
56 / 132
Ou ento, escrever no incio de cada mdulo Option Explicit Neste caso sempre que seja detectada uma varivel que ainda no foi declarada d uma mensagem de erro - Variable Not Defined
57 / 132
VARIVEIS
UTILIZADOR
ESTRUTURAS
Definio do Tipo
A primeira fase constituda pela definio do tipo: Type Dados_Pessoais Nome As String Idade As Integer DataNascimento As Date BI As Long End Type Criou-se um tipo de dados que representa uma estrutura com dados de diferentes tipos. Esta definio dever ocorrer no incio do mdulo VBA. Onde: Type Dados_Pessoais Nome As String Idade As Integer DataNascimento As Date BI As Long End Type Palavra-Chave que indica a definio de um tipo de dados criado pelo utilizador. Nome atribudo ao tipo de dados. Primeiro elemento da estrutura de dados definida. Segundo elemento da estrutura de dados definida. Terceiro elemento da estrutura de dados definida. Quarto elemento da estrutura de dados definida. Palavra-Chave que indica o fim da definio da estrutura de dados.
58 / 132
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.
60 / 132
ARRAY BI-DIMENSIONAL
0 1 2 0 1 2 3
Um array bi-dimensional um pouco mais complexo e constitudo por um conjunto de listas do mesmo comprimento, este formato normalmente conhecido como array ou matriz. portanto constituda por linhas e colunas e cada elemento identificado por um ndice composto pela intercepo dos nmeros da linha e da coluna.
61 / 132
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 1 2 0 1 2 3
62 / 132
Utilizao de um Array
PARA
ACEDER AO ELEMENTO
<Nome_do_Array>(<Indice1_do_Elemento>[,<Indice2_do_Elemento>, ])
ATRIBUIO
DE VALORES
<Nome_do_Array>(<Indice1_do_Elemento>[,<Indice2_do_Elemento>, ]) = <Valor>
Exemplo 1:
Sub Pases() Dim Pases(3) As String Pases (0) = "Portugal" Pases(1) = "Brasil" Pases(2) = "Moambique" MsgBox "Pases Armazenados:" & Chr(13) & Pases(0) & Chr(13) & Pases(1) &_ Chr(13) & Pases(2) End Sub Aps a atribuio de valores a cada elemento do array, este passa a ter o contedo seguinte: Pases Portugal Brasil Moambique 0 1 2
63 / 132
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
64 / 132
Constantes
65 / 132
QUE SO CONSTANTES
Constantes so valores que no alteram durante a execuo de uma rotina. So declaradas da mesma forma que as variveis, a nica diferena reside no facto da atribuio ser feita na mesma instruo da declarao, e s poder ser feita uma nica vez. Const <Nome_Constante> As <Tipo> = <Valor> Const <Nome_Constante> As <Tipo> = <Expresso de clculo>
66 / 132
67 / 132
InputBox e MsgBox
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.
68 / 132
INPUTBOX
O que faz
1. Exibe no cran uma janela com uma caixa text box para a insero de dados. 2. Espera que o utilizador introduza os dados e/ou accione um dos botes. 3. Como uma funo produz um valor final. Este consiste nos dados inseridos pelo utilizador na forma textual - String.
Sintaxe
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Numa primeira avaliao da funo, pode-se dizer que a mesma possui diversos parmetros, mas somente o primeiro obrigatrio, sendo que todos os outros quando ignorados assumem valores atribudos por defeito.
Parmetros
Parmetro
Prompt (Obrigatrio )
Comentrio
Expresso textual exibida como mensagem na janela de input. A dimenso mxima de 1024 caracteres. Se se pretender construir uma mensagem com mais do que uma linha poder utilizar o caractere Enter - Chr(13). A juno dos elementos que constituem a mensagem realizada atravs do operador &.
69 / 132
Ateno: Se pretender enviar mais que um parmetro optativo respeite a ordem atravs de , (virgulas) Exemplo:
MSGBOX
O que faz
1. Exibe no cran uma janela com uma mensagem.
70 / 132
Sintaxe
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
semelhana da InputBox , pode-se dizer que a mesma possui diversos parmetros, mas somente o primeiro obrigatrio, sendo que todos os outros quando ignorados assumem valores atribudos por defeito.
Parmetros
Parmetro
Prompt (Obrigatrio )
Comentrio
Expresso textual exibida como mensagem na janela de input. A dimenso mxima de 1024 caracteres. Se se pretender construir uma mensagem com mais do que uma linha poder utilizar o caractere Enter Chr(13)
71 / 132
Ateno: Se pretender enviar mais que um parmetro optativo respeite a ordem atravs de , (virgulas) Exemplo:
Constante de VBA
VbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel
Valor
0 1 2 3 4 5
Descrio
Exibe somente o boto de OK. Exibe os botes OK e Cancel. Exibe os botes Abort, Retry, e Ignore. Exibe os botes Yes, No, e Cancel . Exibe os botes Yes e No. Exibe os botes Retry e Cancel.
72 / 132
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.
Exemplos:
Para a instruo: MsgBox "Erro de Sintaxe!!!", 2 + 48 + 512 + 4096, "Mensagem de Erro" exibida a seguinte janela:
73 / 132
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 accionado, assim produzir como output um dos valores constantes da tabela seguinte:
Constante de VBA
Valor
Boto Accionado
74 / 132
75 / 132
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.
76 / 132
DOMNIO
DAS
VARIVEIS
Refere-se rea onde a varivel permanece activa, mantendo o valor que lhe vai sendo atribudo. Existem 3 nveis de domnio para as variveis: mbito do Procedimento ou Procedimental mbito do Modulo ou Modular mbito do Projecto
As declaraes de tipos User Defined que so escritas no Declarations do mdulo tm domnio de Projecto.
mbito do Procedimento
Estas variveis so declaradas no corpo do procedimento com recurso palavra chave Dim. So variveis criadas aquando da execuo do procedimento e automaticamente destrudas quando o procedimento termina, sendo que s so reconhecidas no seio do
77 / 132
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
A execuo destas rotinas resultar no seguinte: A primeira mensagem (MsgBox no Procedimento Ambito_Procedimento)exibir o nmero introduzido pelo utilizador que fora armazenado na varivel Var_1. A segunda mensagem, oriunda da instruo MsgBox do Procedimento Ambito_Procedimento_2 no exibir o valor introduzido, porque a varivel Var_1 nele referida considerada como uma varivel interna do processo, e portanto criada dentro do procedimento Ambito_Procedimento_2. Como tal, embora possua o mesmo nome que a varivel da rotina Ambito_Procedimento_1 no existe qualquer ligao entre elas, so duas variveis distintas. Neste caso se se pretendesse que o valor da primeira varivel fosse reconhecido no procedimento chamado, ter-se-ia de o passar por parmetro.
mbito do Mdulo
Uma varivel como mbito do Mdulo pode ser acedida por todas as rotinas existentes no mdulo onde a varivel declarada. Para declarar uma varivel do nvel modular, dever declar-la com a palavra chave Dim na seco Declarations do respectivo mdulo VBA. Neste caso qualquer varivel a declarada ser considerada de nvel modular por defeito, para tornar esse facto mais explicito poder-se- utilizar a palavra chave Private na declarao:
78 / 132
Exemplo:
Dim Var_1 As Integer ou Private Var_1 As Integer Sub Ambito_Modulo() Var_1 = InputBox (Introduza um nmero Inteiro) Ambito_Modulo_2 End Sub Sub Ambito_Modulo_2() MsgBox Foi este o nmero que introduziu: & Var_1 End Sub Neste caso como a varivel reconhecida no mdulo por qualquer rotina nele existente, desde que seja referida sempre pelo mesmo nome, o procedimento Ambito_Modulo_2 ir exibir o valor introduzido pelo utilizador no procedimento Ambito_Modulo.
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.
79 / 132
Exemplo:
No Module_1 tem-se: Public Var_1 As Integer Sub Ambito_Projecto() Var_1 = InputBox (Introduza um nmero Inteiro) Ambito_Projecto _2 End Sub No Module_2 tem-se: Sub Ambito_Projecto _2() MsgBox Foi este o nmero que introduziu: & Var_1 End Sub A execuo do procedimento Ambito_Projecto no Module_1 mandou executar o procedimento Ambito_Projecto do Module_2, e o valor atribudo varivel Var_1 foi acedido posteriormente noutro procedimento de outro mdulo, dado tratar-se de uma varivel global.
DOMNIO
DAS
CONSTANTES
semelhana das variveis tambm as constantes tm 3 nveis de domnio: mbito do Procedimento ou Procedimental mbito do Modulo ou Modular mbito do Projecto
80 / 132
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
81 / 132
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
DOMNIO
DE
SUBROTINAS
FUNES
Estas s tm dois nveis de Scope: o nvel do projecto e o nvel do mdulo. Por defeito as rotinas so de mbito do projecto sem qualquer indicao adicional. Contudo poder tornar este facto mais explicito pela introduo da Palavra-Chave Public, que em termos operacionais no adicionar qualquer funcionalidade, mas em termos de leitura dar uma maior percepo.
82 / 132
Exemplo:
Public Sub Ambito_Procedimento() Const Taxa_Desc As Single = 0.05 Dim Desconto As Double Desconto = InputBox (Introduza o montante das Compras) * Taxa_Desc MsgBox O desconto de : & Desconto End Sub Para que uma rotina tenha o mbito do mdulo onde est definida, dever ser antecedida pela palavra chave Private.
83 / 132
Estruturas de Controlo
O VBA disponibiliza algumas estruturas que pode utilizar para controlar o decurso da execuo da rotina. Estas estruturas do ao programador um poder enorme para construir rotinas bastante complexas e flexveis.
84 / 132
QUAIS
AS ESTRUTURAS
VBA Control
If -Then - Else For Next While-Wend Testa uma condio e executa um determinado conjunto de instrues consoante o resultado dessa avaliao Executa uma determinada tarefa um determinado nmero de vezes. Executa uma determinada tarefa enquanto que uma determinada condio permanea verdadeira, i.e., com o valor True. Executa uma determinada tarefa enquanto que a avaliao de uma condio permanea True ou ento at que seja True. Selecciona um dos segmentos de cdigo a processar mediante a avaliao consecutiva de condies. Realiza uma determinada tarefa repetitiva em cada objecto de uma coleco ou em cada item de um array.
IF-THEN-ELSE
Funo IF do Excel
Recorrendo funo IF do Excel, recorde:
85 / 132
Se a condio for verdadeira, ento (then) realiza as operaes colocadas no segundo parmetro; Caso contrrio (else), realiza as operaes que formam o terceiro parmetro
3.
Aplicao Prtica
86 / 132
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.
87 / 132
Then
MsgBox Parabns!! Instrues a executar se a condio for verdadeira. Acertou em cheio! O nmero sorteado foi o &NSorteio
88 / 132
MsgBox Continue a Instrues a executar se a condio for falsa. Tentar!! O nmero sorteado foi o &NSorteio 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.
APLICAO PRTICA
Pretende-se criar uma macro que classifique etariamente um indivduo 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
89 / 132
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.
90 / 132
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
Varivel
Base Potncia Contador Resultado
DAS
VARIVEIS:
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:
Contador = 1 To Potncia Expresso que contm a inicializao do contador, indicando o valor de inicio e de fim. Assim, o nmero de vezes que o ciclo executado ser: Valor_Fim Valor_Inicio +1.
91 / 132
TRADUO INTEGRAL
For Contador = 1 To Potncia Step 1 Resultado = Resultado * Base Next Para o nmero de vezes, a iniciar em 1 at que atinja, o valor Potncia, pela incrementao de 1 na execuo de cada ciclo, dever multiplicar sucessivamente o resultado acumulado, pela base.
Funcionamento do Ciclo:
A primeira execuo do ciclo distingue-se das restantes por a ela estar associada a inicializao do contador, sendo o restante procedimento semelhante a qualquer outra execuo.
92 / 132
Outra Aplicao
Pretende-se criar uma rotina para calcular um factorial.
93 / 132
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
94 / 132
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
Varivel
Num_Lotaria
DAS
VARIVEIS:
Funo
Nmero sorteado. Este ser inicializado a 0 por forma a que no corresponda a nenhum valor introduzido pelo utilizador e assim possa realizar o primeiro sorteio. Nmero em que o utilizador pretende apostar. Nmero de lanamentos realizados at obter o resultado da aposta. Este valor tem de ser incrementado cada vez que realizado um sorteio.
Aposta Num_Lanc
CONSTRUO
While
DO
CICLO:
Palavra-chave que indica o inicio do ciclo WhileWend
95 / 132
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 utilizador tenha a percepo do que est a ser realizado.
Funcionamento do Ciclo
96 / 132
M ou inexistncia de inicializao das variveis envolvidas na condio-teste. Garantir que as variveis envolvidas na condio teste podero ter valores diferentes por cada vez que o ciclo seja executado. Garantir que em algum momento a condio teste falsa e o ciclo termina a sua execuo. A no verificao destas condies implicar que o ciclo no tenha fim Ciclos Infinitos
Outra Aplicao
Pretende-se realizar um jogo de geografia. Tente compreender o seu funcionamento.
97 / 132
98 / 132
99 / 132
100 / 132
DO LOOP
Esta estrutura similar estrutura do While-Wend. Contudo fornece duas possibilidades que esto limitadas quela estrutura:
Do Loop permite posicionar a condio teste no inicio ou fim do loop, a condio no fim do Loop evita uma inicializao prvia do valor das variveis envolvidas na condio teste, dado que essa inicializao pode ser feita no decurso do ciclo com valores reais. Do Loop permite ainda especificar se o loop se vai realizar enquanto (while) uma expresso for verdadeira ou at que (until) a condio seja verdadeira (facilidade conseguida atravs do operador Not)
Sintaxe
Poder ser: Do [{While | Until} <condio>]
101 / 132
Aplicaes Prticas
102 / 132
103 / 132
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
104 / 132
Aplicao Prtica
Recordem o processo resolvido com recurso a If Then Else ElseIf (figura 23) Mais facilmente seria resolvido com recurso estrutura Select Case
105 / 132
CONSTRUO
Select Case Idade
DA
ESTRUTURA
Palavras-Chave que indicam o inicio de um controlo Select Case Expresso sujeita a teste, i.e., varivel cujo contedo est a ser avaliado. Esta varivel vai ser comparada sucessivamente pelos valores alternativos apresentados nas instrues Case <Valor>, se encontrar o valor nalguma dessas opes Case executar as linhas de cdigo que a tero inicio at opo de Case seguinte. Caso o valor da varivel a ser comparada no corresponda a nenhum valor apresentado nas opes Case, existe uma opo Case especial - Case Select - para os restantes valores, neste caso sero executadas todas as instrues que se localizem entre o Case Else e o Case Select.
106 / 132
Case Else
End Select
Sintaxe
For Each <Varivel do tipo dos elementos do grupo> In <Grupo>
107 / 132
Aplicaes Prticas
UTILIZANDO ARRAYS
Pretende-se inicializar um array com um conjunto de 5 pases e posteriormente visualizar os elementos introduzidos.
108 / 132
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:
Construo do Ciclo
For Each Palavras-Chave que indicam o inicio de um controlo For-Each
109 / 132
In Array_Pais
MsgBox Pais
Next
UTILIZANDO COLECES
DE
OBJECTOS
110 / 132
111 / 132
112 / 132
QUE SO
OBJECTOS ?
Objectos so elementos caracterizados por um conjunto de propriedades, e que tm subjacente um determinado comportamento. Por exemplo, uma janela do windows um objecto, caracterizada por um nome, um ttulo, uma dimenso, um posicionamento dentro do cran,, e tem um comportamento inerente, pode ser aberta, fechada, minimizada, maximizada, escondida, redimensionada, Seguindo esta lgica podemos identificar alguns objectos do ambiente de trabalho Windows: o boto, o grfico, o menu, o documento, a imagem, a textbox, a frmula, o workbook, a worksheet, a clula, o conjunto de clulas de uma worksheet,
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.
113 / 132
Eventos
Eventos ou acontecimentos, representam todas as actividades que envolvam o objecto e que normalmente directa ou indirectamente so despoletadas pelo utilizador. Por exemplo: abrir ou fechar um workbook, clicar sobre um boto ou worksheet, alterar o contedo de um elemento, Estes eventos servem para que possamos activar uma determinada tarefa aquando da sua ocorrncia.
Exemplo:
Suponha que pretende executar uma macro quando abre o seu workbook. 1 Crie a macro que pretende executar. 2 No Editor de Visual Basic, na janela de Projecto Project Window seleccione o objecto ThisWorkBook. Na janela de edio repare nas duas caixinhas que se encontram na parte superior. A do lado esquerdo indica general clique nela e seleccione o elemento workbook, na caixinha da direita seleccione o evento Open. 3 Automaticamente aparecer um procedimento na janela de edio cujo nome ser Workbook_Open, tudo o que escrever no seu contedo ser executado quando o documento for aberto, neste caso indique o nome da macro que criou anteriormente.
114 / 132
OBJECTOS
MAIS
UTILIZADOS
NO
EXCEL
Application
Application o objecto de topo hierrquico, representa o prprio Excel.
PROPRIEDADES
Propriedades
Caption DisplayAlerts Path ScreenUpdating Meno exibida na barra de ttulos do Excel TRUE as mensagens de alerta so exibidas durante a execuo da subrotina. False caso contrrio. Nome da directoria onde o Excel est instalado. True altera o cran consoante a subrotina que executa. Caso contrrio, o cran no alterado durante a execuo da subrotina. O estado da janela da aplicao: XlNormal janela tamanho normal XlMaximized janela tamanho maximizado XlMinimized janela com tamanho minimizado Mostra ou esconde a StatusBar. True exibe Mostra ou esconde a Barra de Formulas True exibe
WindoWorkSheetState
DisplayStatusBar DisplayFormulaBar
115 / 132
MTODOS
Mtodos
Calculate Implica o clculo de todas as frmulas de todas as WorkSheet e WorkBookS abertos. Argumentos : no tem Help Exibe um tpico do Help de um determinado ficheiro de Help. Argumentos : Helpfile: nome do ficheiro, incluindo a path se necessrio Helpcontextid: nmero que faz referncia ao ndice de help Quit Fecha aplicao Excel. (se a propriedade Display alerts estiver com o valor False, o Excel no propor a gravao de alteraes nos ficheiros) Argumentos : no tem Run Utilizado para correr uma subrotina de VB ou uma Macro do XL Argumentos : Macro: nome da macro ou subrotina a executar Argumentos que a subrotina necessita para ser executada arg1:=<valor 1>, arg2:=<valor>,
116 / 132
WorkBook
O Objecto WorkBook, na hierarquia de objectos segue de imediato o objecto application e representa um ficheiro de Excel.
PROPRIEDADES
Propriedades
Name Nome do ficheiro. No permite a alterao do nome, para isso necessrio proceder ao Save/As Directoria onde o ficheiro se encontra True se no houve nenhuma alterao no ficheiro desde a ltima gravao False caso contrrio Exemplo: If not(activeWorkbook.Saved) Then ActiveWorkbook.Save End If
Path Saved
117 / 132
MTODOS
Mtodos
Activate Activa um documento aberto. Equivalente a ir ao Window e seleccionar um documento aberto, trazendo-o para a janela principal do Excel. Argumentos: no tem Fecha um documento. Argumentos: SaveChanges se True, o documento gravado antes de ser fechado; False caso contrrio FileName se o argumento SaveChanges estiver a TRUE, o WorkBook gravado com o nome aqui indicado RoutWorkBook se TRUE e o WorkBook tiver endereos para envio atribudos, envia o ficheiro por e-mail antes de fechar, caso contrrio no. Protege um documento contra qualquer tipo de alterao Argumentos: Password: Password a utilizar na proteco Structure: True protege tambm a estrutura WindoWorkSheet: True a estrutura do WorkBook na janela protegida Grava o WorkBook. Argumentos: No Tem Cria uma cpia do documento em questo Argumentos: FileName: nome da cpia pretendida para o ficheiro
Close
Protect
Save SaveCopyAs
118 / 132
WorkSheet
Na hierarquia situa-se abaixo do objecto WorkBook, uma vez que um WorkBook constitudo por um conjunto de WorkSheets.
PROPRIEDADES
Propriedades
Index Name UsedRange Visible ndice de uma WorkSheet num WorkBook Nome da WorkSheet. Traduz o range na WorkSheet que contm dados. True est visvel False est escondida, mas o utilizador pode vizualiz-la recorrendo ao Menu Format XlVeryHidden est escondida e ningum a pode visualizar, a menos que volte a aplicar uma subrotina que a coloque visvel.
119 / 132
MTODOS
Mtodos
Activate Activa uma determinada WorkSheet. Equivalente a estarmos a trabalhar num WorkBook e clicarmos nela para visualizarmos o seu contedo. Argumentos: No Tem Provoca o clculo de todas as frmulas constantes da WorkSheet Argumentos: No Tem Apaga uma WorkSheet do WorkBook. Argumentos: No Tem Protege uma WorkSheet contra qualquer tipo de alterao Argumentos: Password: Password a utilizar na proteco DrawingObjects: True- protege os objectos grficos Contents True- protege as clulas e contedos Scenarios True protege os cenrios afectos WorkSheet UserInterfaceOnly True protege os interfaces contra alteraes apesar de poder alterar as subrotinas Referncia uma clula, atravs dos seus ndices numricos. Argumentos: Nmero da Linha Nmero da Coluna Ex: Clula C5 ser representado por Cells( 5, 3)
Calculate
Delete Protect
Cell
120 / 132
Range
Objecto utilizado para representar uma ou mais clulas de uma WorkSheet.
PROPRIEDADES
Propriedades
Count Dependents Name Value Formula Text Nmero de Clulas num Range. Read-Only Retorna um range, que contm todos os dependentes (valores indexados pelas frmulas)do range em questo. Read-Only Nome de um range. Read/Write Valor constante de um range (clula ou conjunto de clulas). Read/Write Traduz a frmula contida num range como uma string. Read/Write Busca o contedo de uma clula mas em formato de texto.
121 / 132
MTODOS
Mtodos
Calculate ClearContents Copy Provoca o clculo da frmula constantes do range Argumentos: No Tem Apaga o contedo (frmulas e valores) de uma clula, deixando os formatos. Argumentos: No Tem 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) 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 Faz referncia (s) linha(s) indicadas por um determinado range. Argumentos: No Tem Selecciona o range em questo. Argumentos: Replace- (Opcional) Referncia uma clula, atravs dos seus ndices numricos. Argumentos: Nmero da Linha Nmero da Coluna Ex: Clula C5 ser representado por Cells( 5, 3)
OffSet
122 / 132
123 / 132
INDEXAO
NOME
Perante uma coleco de objectos necessrio identificar cada um dos diferentes itens que a compem para que a eles seja possvel aceder. Por analogia poder-se- mencionar o exemplo do array, este uma varivel plural, dado que composto por um conjunto de variveis. Quando se pretende aceder a uma posio do array utiliza-se o nome do array e o ndice da posio requerida. Assim, a indexao de coleces pode ser realizada com base: em nmeros ou em nomes.
Exemplo:
WorkSheets(3).Name=Terceiro
124 / 132
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
125 / 132
TRATAMENTO
COMO OBJECTO:
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.
126 / 132
REFERNCIA IMPLCITA
Quando se faz referncia a uma clula da worksheet, pode-se faz-lo de diversas formas equivalentes. No quadro seguinte exibida a equivalncia entre a expresso mais completa e a mais reduzida, sendo que ambas tm a mesma funo (colocar na clula A1 o valor 1):
Aplication.Workbooks(1).Worksheets(1).Range(A1).Value=1 Range(A1).Value=1
A diferena entre ambas as formas de acesso est no facto da segunda forma (Range(A1).Value = 1) admitir que se est a trabalhar no workbook e na worksheet que nesse momento esto activas no Excel, enquanto que na primeira forma so indicadas as referncias identificadoras do workbook e da worksheet onde se pretende trabalhar. Assim, pode-se afirmar que a segunda forma faz uma aluso implcita aplicao, ao workbook e worksheet onde se trabalha.
Workbooks(1).Worksheets(1).Range(A1).Value=1
127 / 132
ActiveWorkbook.Worksheets(1).Range(A1).Value=1 Worksheets(1).Range(A1).Value=1
ActiveSheet.Range(A1).Value=1 Range(A1).Value=1
128 / 132
cdigo muito denso dificuldades em escrever e ler maior probabilidade de ocorrncia de erros quando no se sabe precisamente o contexto em que a aplicao vai ser executada perigoso descrever uma path certinha
129 / 132
Miscellaneous
130 / 132
A INSTRUO WITH
A instruo With permite abreviar referncias a objectos. No faz sentido utiliz-lo quando se pretende utilizar s uma propriedade ou mtodo, mas quando pretendemos utilizar bastantes.
Aplicao Prtica
Ou Ento:
131 / 132
DO
VBA
Valor absoluto de um nmero. Directoria MS-DOS corrente. Data do sistema. Interrompe a execuo de uma ciclo Do Loop Interrompe a execuo de um ciclo For Next ou For Each Next Provoca a interrupo da execuo de uma funo. Provoca a interrupo da execuo de uma sub-rotina. Arredonda um nmero decimal positivo para baixo, e um negativo para cima. Ex 3,9 ->3 e 3,9 -> -3 Arredonda para cima um nmero decimal positivo ou negativo. Ex 3,9 ->4 e 3,9 -> -4 True se a expresso um array. False caso contrrio. True se a expresso do tipo Date. False caso contrrio. True se nenhum valor foi atribudo varivel. True se a expresso contiver um erro. True se a expresso representar o valor NULL. True se a expresso for numrica. True se se tratar de um objecto. Retorna a dimenso de uma String. Retorna o valor da data e da hora actual. Corre um programa executvel. Retorna a raiz quadrada de um nmero. Retorna a representao String de um nmero. Realiza a comparao de strings, produzindo True ou False conforme sejam ou no iguais. Produz a hora actual. Retorna o tipo de dados de uma varivel. Converte uma expresso de forma numrica ou textual para um valor de tipo inteiro. Converte uma expresso de forma numrica ou textual para um valor de tipo booleano. Converte uma expresso de forma numrica ou textual para um valor de tipo data. Converte uma expresso de forma numrica ou textual para um valor de tipo Long. Converte uma expresso de forma numrica ou textual para um valor de tipo String.
132 / 132