Você está na página 1de 122
Excel - Macros e Visual Basic for Applications (versao Draft) Indice MACROS. OQUEEUMA MACRO? nso ses ns 6 CRIAR MACROS. 6 Gravar uma Macro 6 Exerecio 8 Procedimento BackGround do Excel ° Programagiio em Visual Basic for Applications. 10 EXECUTAR UMA MACRO. 12 Tecla de Atatho~ Shortcut Key. 2 Botdio na Toolbar. 3 ‘Associar uma Macro a um Botio, 3 Dissociar uma Macro de um Botio 15 Run. 16 Comando no Menu 17 Associagdo de uma Macro a um Comando do Menu a Dissociagio 19 Editor de Visual Basic for Applications, 20 REMOVER MACROS. 7 21 Remocao de Macros em Ambiente Excel 20 Remocio de Macros no Editor de VBA. 21 EDITOR DE VISUAL BAS IC FOR APPLICATIONS. PROJECT EXPLORER. 24 PROPERTIES WINDOW. 26 JANELA DE EDICAO. 27 (ORIECT BROWSER. 28 HELP ON-LINE 28 ASCORES DO VBA. 7 29 FUNGOES E SUBROTINAS 7 - 32 Definigdo de SubRotinas. 32 Trabaihar no Editor de VBA ~ Criar uma SubRotina. - 33 Execugdo de uma SubRotina, 34 FUNGOES.. . 34 Definigado de Funcoes. 34 Definicao do tipo de pardmetros e do tipo da funcao 35 Trabalhar no Editor de VBA ~ Criar uma Funcéo, 36 Execugdo de uma Funeao. 37 Exeeugio dentro de uma Célula 38 Exeeugdo dentro de ume Rotina 40 [DAFERENCASENTRE FUNCOFSE ROTINAS. 2 [REGRAS PARA A PASSAGEM DE PARAMETROS, 42 iscTE/ DCT Tria Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) VARIAVEIS, -MANUSEAMENTO COM VARIAVEIS. 44 O que sao variaveis? “4 Assignagdo de valores a varvels 45 Uaitzago de variévets como se fossem valores 45 TRPOS DE VARIAVHIS 46 DECLARAGAO DE VARIAVEIS 47 \VaRIAVEIS~ VANTAGENS DA UTILIZAGAO. 47 \VaRiAVEIS Do T1Po OBIECTO, a8 Declaraga da Varidvel Objecto. 48 Atribuigio de uma varidvel Objecto 48 Utilizagdo Genériea da Variével Objecto Uailizagio Especifica da Variével Objecto wo VaRIAVEIS ~ DECLARAGAO OPCIONAL £0 TIPO VARIANT. 51 0 Pris e Contras dalizacdo do tipo Variants 31 Pads 1 Conta. si Variiveis~ Declaragao Forgada. 32 \VaRIAVEIS ~ TIPOS DEFINIDOS PELO UTILIZADOR -ESTRUT URAS 33 Definicao do Tipa 33 Usilzagdio das Estraturas de Dados. s4 \VARIAVEIS - ARRAYS 35 0 que é um Array ? $5 Array UnicDimessiona. 3 ‘Ary BrDimensonal. 56 Declaragio de wm array. 7 rays Unidimensionas 31 ‘Amays Bisimensionis 37 Usilizagaio de um Array 8 Para acederao clement. 38 Atrbuigdo de vases. 58 Option Base e Array Bounds. 0 CONSTANTES ‘OQUESKo CONSTANTES?. sl INPUTBOX E MSGBOX... Ogu sko?, 63 INPUT BOX . v8 0 que fas 63 Sintave, 63 Parimetros. a MscBox 65 0 que faz. 65 Sine. 63 Parimetros 66 Valores Produsidos. 0 DOMINIO DAS VARIAVEIS, CONSTANTES E ROTINAS. avr to vovmnio? nm Dostivlo DAs VARIAVEIS. 71 Aimbito do Procedimento 2 Amite do Modulo 73 “ambito do Projecto. 74 DowixloDas CONSTANTS : : 8 “imbito do Procedimento 75 sore DoT 1 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséo Draft) Ambito do Médulo 76 mbito do Projecto. 76 DoMiNlo DESUBROTINAS E FUNGOES. n ESTRUTURAS DE CONTROLO . OQUE SAO ESTRUTURAS DE CONTROLO ?. 9 QUAIS AS ESTRUTURAS, 9 I-THENELSE 80 Funcdo IF do Excel. 0 Sintaxe da Estrutura If Then-Else. 50 “Aplicagdo Pritica st Ainstrugho adicional Elelf. 3 ‘Apicagio Pts 83 For ~NEXT, 4 Simtave ‘4 ‘Aplicagdo Pritica ss ’APunglo das Varvels 45 Constr do Ciclo 85 Tradugdo integral 86 Funcionamento do Ciclo 96 Perigos associados d ilizagdo do ciclo For Next: $6 Outra Aplicasio. . : a7 \WHILE-WEND. 88 Sintase ss Arlicagao Pravin 88 ‘Pungo ds Varies 9 Constr do Ciclo 9 Tradusto integral 30 Funcianamenta do Ciclo, 90 Perigos assoviados & uilizagdo do ciclo While- Wend. 9 Outra Aplicagao. i. 91 Do - 1007, 2 Sintave 92 “Aplicagdes Pratcas. 93 SELECT CASE 95 Sintaxe 98 “Aplicagio Pritica 96 ‘Consrig da Estar. 37 For - EACH -NExr, 98 Simtare . 98 Aplicagses Pritcas, 9 Uslzando Aras 99 ‘Construgdo do Ciclo, i00 Uslzando ColegSes de Objects. vo ‘COLECCOES DE OBJECTOS E OBJECTOS.. 102 QUE Sko ORLECTOS ?. 103 OBIECTOS: PROPRIEDADES, METODOS E EVENTOS. -nsssnonnvonnn “Los Propriedades 103 Métodos 103 Eventos. 104 arrcTos Mals UTiLiZADos NO EXCH. 105, PropFiedAeS nn . “inns Métodos. : 10 Propiedad 107 Métodos. . 7 108 Propricdads 109 iscre/oTT 3 Luisa Domingues@iscte pt Excel - Macros e Visual Basic for Applications (versao Draft) Métodos - uo Propriedades ML Métodos. - un OBIECTOS SINGULARES VS COLECCOESDE OBJECTOS, 113, INDEXAGAO DE COLECCOES POR NUMERO OU NOME, 1a Indexagdo com Base em Niimeros. ~ i Indexaciio com Base no Nome 1S Vantagem. us 0 Objecto Range uma excep¢io. - 116 Tratamenta como object 6 Tratamento com coleesio de objects 6 REFERENCIA IMPLICITA, 7 Declaragao implicita da aplicagao: uu Declaracao implicita do WorkBook: 118 Declaracao implicita da WorkSheet: 18 [Nivel de referéncia a privilegiar. 19 MISCELLANEOUS. A INsTRUCAO WITH. 121 Aplicagao Pritica 12 (OuTRAS FUNGOES UTEIS DO VBA 122 iscTE/ DCT aad Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Macros iscTE/ DCT 3712 Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) O QUE E UMA MACRO? ‘Uma macro & um pequeno programa que contém uma lista de instrugdes a realizar no Excel. Como sendo um repositério de operagdes, uma macro pode executar um conjunto de tarefas através de um tnico procedimento o qual pode ser invocado rapidamente. As instrugdes que formam o corpo da macro so escritas num eddigo proprio para que 0 computador as possa entender, essa linguagem ¢ designada por VBA — Visual Basic for Applications. CRIAR MACROS Existem duas possibilidades de criagdo de macros: > Através do Gravador de Macros > Utilizando o editor ¢ programando em Visual Basic for Applications Gravar uma Macro 1. Tools / Macro / Record New Macro. O Excel exibird a caixa de didlogo da fig.1. Geetred [2] twacto nani! Paros OK i. Description; [acto recorded 12/21/98 by Administrator Fig.1~ caixa de didlogo para a gravago de macros, iscTE/ DCT oid Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) 2, © nome da Macro sera constituido por um conjunto de caracteres que identificario a Macro e a sua funcionalidade. 3. Shortcut Key — é composto por uma comb inagdo de teclas que poderdo 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 Ambito diferente, Assim deverdo armazenar a macro na opgao ThisWorkBook para que ela esteja activa sempre que o documento estiver aberto, e para que ela esteja armazenada no préprio ficheiro no correndo o risco de ficar armazenada nas Macros do Excel. (na rede do ISCTE & impossivel gravar a macro no Personal WorkBook.) 5. No campo Description, introduza um comentério & fungiio — este poderd ser importante para que nio seja esquecido o respectivo objective e funcionalidade. “lique em OK para iniciar a gravagdo da macro — neste momento sera cxibida uma toolbar semethante & da figura 2, ¢ 0 icone do rato sera transformado numa cassete, indicando o estado de gravagio. Fig.2 Toolbar exibida para a gravago de macros. 7. Na toolbar Stop Record, existem dois botdes: Stop Recording e Relative Reference — © botio de Stop Recording termina a gravago da macro, o botdo de Relative Reference selecciona 0 modo de gravagdo da macro — se € feito com base em referéncias relativas (botdo seleccionado) ou referéncias absolutas. 8. No caso da toolbar Stop Record desaparecer, poderd voltar a exibéla fazendo no menu a sequéncia: View / Toolbars / Stop Record (seleccione a toolbar). Caso a toolbar nao aparega listada a gravagdo de macros nao esti activa, Nota: Tome atengo aos pasos que dé quando esté a gravar pois tudo serd registado, 0 que significa que quando for executar a macro, esses procedimentos serdo efectuados. isctE/ DCT 77a Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) EXERCIcIO Objectivo: Gravar uma macro testando a diferenga entre a execugdo de macros com referéncias absolutas e relativas. 1* Fase: Macro com referéncias Absolutas 1. Accione a gravagdo da macro. Atribua-Ihe o Short Key Ctrl+P 2. Certifique-se que 0 botdo Relative Reference esté desactivado. 3. Clique na cétula B3. 4. Escreva SCTE 5, Formate a célula para Bold, Itélico, tamanho 18, Small Caps,... (utilize o Format / Font) 6, Nu sella BA excrva: Forgas Armadas 7. Naccélula BS escreva: 1700 Lisboa 8, Pare a gravagdo da macro. — A macro esta criada, 9. Apague tudo 0 que esereveu nas células da coluna B. 10. Clique na célula LS. 11. Carregue simultaneamente nas teclas Ctrl e P 12. 0 que aconteceu ? 2" Fase: Macro com referéncias Relativas Seleccione a célula DS. Accione a gravacao da macro. Atribua-lIhe o Short Key Ctrl+R Seleccione o botdo Relative Reference. Escreva ISCTE na célula que havia sido seleccionad: Formate a célula para Bold, Itélico, tamanho 18, Small Caps,... (utilize 0 Format Font) Na célula D6 escreva: Av. Forcas Armadas Na célula D7 esereva: 1700 Lisboa Pare a gravagao da macro, — A macro esta criada. ‘Apague tudo o que escreveu nas células da cohina D. 10. Clique na célula L8. 11. Carregue simultaneamente nas teclas Ctrl e R 12. 0 que aconteceu ? Porqué ? waeNe eens iscTE/ DCT Bid Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) PROCEDIMENTO BACKGROUND DO EXCEL Excel quando se grava uma macro cria um objecto designado por module no workbook onde regista todas as operacdes gravadas em linguagem Visual Basic for Applications - VBA. Este module ndo aparece no Excel com as restantes Sheets. Para ser visualizado é necessério abrir o Editor de Visual Basic for Applications : 1, Tools / Macro / Macros 2. Selecciona-se a Macto e Clica-se no botio Edit 3. Poderd visualizar na area do lado direito o cédigo VBA que est subjacente as macros que entretanto gravou. Ai poderé executar as mesmas tarefas que num editor de texto normal: escrever, apagar, copiar, mover,... mas instrugdes de VBA. 4, Tente fazer a leitura do que esta escrito ¢ compreenda o procedimento da macro, 5, Para regressar ao Excel basta File / Close and return to Microsoft Excel. iscTE/ DCT ary Luisa. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Programacao em Visual Basic for Applications 1. Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual Basic Editor (para se familiarizar mais com o editor consulte 0 capitulo Editor Visual Basic ‘for Applications ¢ 0 capitulo Funcdes e SubRotinas) (Alte ow fot Fart Cn Br He SOB en on oe AO ‘Dowie Gaccoee Secsecn — SE a a aa Figura 3 - Editor de Visual Basie for Applications 2. Para inserir um médulo faga Insert / Module — isto porque as macros que construir deverio ser escritas dentro de um médulo (repare na Figura 3 que 0 Module 1 esti seleccionado na janela de projecto ¢ do lado direito tem-se uma area de edigdo onde poder-se-Zo escrever as macros executat) iSCTEyDCTT 107122 Luisa Domingues@iscte pt Excel - Macros e Visual Basic for Applications (versao Draft) 3. Pode agora programar os procedimentos manualmente ou com recurso a algumas funcionalidades do Editor: a) Insert / Procedure — insere um procedimento para o qual deverd indicar 0 tipo de procedimento. b) Quando estiver a introduzir as variaveis haverd de ser exibida a lista de tipos de variaveis possivel. 4, Sempre que precisar de construir uma macro mais ou menos complicada, se no conhecer muito de VBA poder comegar por gravar no EXCEL pequenas macros com operagées muito simples e depois no editor de VBA tentar compreender a sua funcionalidade ¢ assim construir uma macro cada vez mais complexa, completa € adequada as suas exigéncias. 5. Poderé em cada macro fazer uma chamada a uma outra macro, bastando para tal escrever 0 respeetivo nome. 6. No Editor de Visual Basic for Applications poder encontrar ajuda para o desenvolvimento do seu procedimento. Assim: 6.1. Clique no icone do Object Browser ou View/Object Browser ou F2 6.2. Na Caixa de Drop-Down onde aparece referido , seleccione a aplicagao para a qual pretende ajuda — neste caso Excel. Convém referir que poderd utilizar as fungdes de toda e qualquer aplicagio. 6.3, Na Area intitulada por Classes aparecem todos os objectos especificos para 0 manuseamento da aplicagdo seleccionada. A classe especial designada por Globals refere-se as fungdes que esto disponiveis na aplicagio 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 dispde de um help om-line que 0 esclarece sobre a respectiva fungio e funcionamento, dando exemplo que podera testar. Para tal basta clicar sobre o botdo de Help da janela do Object Browser. iscTE/ DCT T7123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) EXECUTAR UMA MACRO A execugdo de uma macro pode ser coneretizada de diversas formas: Tecla de Atalho — Shortcut Key Botio na Toolbar Run Comando no Menu Editor de Visual Basic for Applications vvvvy Tecla de Atalho - Shortcut Key A associagio a teclas de atalho € realizada aquando da criago da macro. isctE/ DCT 27123 Luise. Domingues@iscte pt Excel - Macros e Visual Basic for Applications (verso Draft) Botdo na Toolbar AASSOCIAR UMA MACRO A UM BoTAo 1, View / Toolbars / Customize 2. Na janela do Customize seleccione 0 Commands Tab 3. Seleccione a categoria Macro (visualizaré a caixa de dilogo exibida na Figura 4) de dislogo para assignagio de botdo a macros ISCTE/ DCTT Bia Luisa, Domingues@isete.pt Excel - Macros e Visual Basic for Applications (versao Draft) 4, Na rea respeitante aos Commands serdo exibidos dois itens: Custom Menu Item Custom Button, Seleccione este segundo e arraste-o com 0 rato até a Toolbar onde 0 pretende inserir. Atengdo s6 podera inserir o botio quando 0 ponteiro do rato ficar com a forma I, Nesse momento libertar 0 botdo do rato utilizado para o arrastamento verifieard que serd ctiado um novo botdo. 5. Na janela de Customize poderé ainda utilizar dois botdes que se encontram na area do Selected Command: a) Description — que exibe um texto explicando 0 que 0 comando seleccionado faz. b) Modify Selection — semelhante ao clique sobre 0 botdo criado, exibe uma série de tarefas possiveis para configuragio do botdo ( ver operagdes seguintes). Bosot belete Hames custom sutton ‘copy Button mage Paste Button Image Reset Button Image Edt Button Image. Change Butten Inage > [¥ Default Style Text Only (lays) ont Only Menus) Image and Tet Payee Assign Mawr. Fig.5- Menu para configuragio do botdo da toolbar iscTE/ DCT 4723 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) 6. Clique sobre 0 botdo Modify Selection- abrindo um menu de tarefas possiveis para a configuragio do botio — Ver Figura 5 8) No dltimo agrupamento de configuragdes possiveis existe uma opgio designada por Assign Macro. Esta opgio permite indicar qual a macro que deverd ser executada sempre que se clica no botio. b) No terceiro agrupamento existem 4 estilos diferentes de exibir 0 botdo: s6 com texto, com texto e imagem ou somente com imagem. Se seleccionar o estilo Texto e Imagem, sera exibido no botio para além da imagem o nome associado ao botio. ©) Na opgao Name indique 0 nome que pretende ver associado a0 botio, por defeito aparece o nome da macro. (repare que aparece um & atrds da letra que aparece a sublinhado) d) Para alterar a imagem associada ao botdo poderd: 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 0 logotipo pretendido, se nenhum o satisfizer e pretender criar 0 seu seleccione 0 logotipo que representa um quadrado vazio. Para o poder (re)desenhar a imagem, na lista de tarefas disponibilizada pelo botio Modify Selection opte por Edit Button Image e crie a sua imagem que poder reeditar. DISSOCIAR UMA MACRO DE UM BoTAo 1. Tools / Customize 2. Arraste o botdo da toolbar até ao documento 3. Solte-o iscTE/ DCT 57122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Run 1, Tools / Macro / Macros 2. Na caixa de didlogo Macros selecciona-se a macro pretendida na lista da Macro Name (Figura 6) 3. Clique sobre o boto Run Cen [2] ‘macro nave Bun Cancel Step Tito Edit =| __ paleo Macosin. [All Open Workbooks Options. _ Description Macro recorded 12122)98 by Administrator FFig.6- Janela para seleegio da macro a executar iscTE/ DCT e723 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Comando no Menu AASSOCIACAO DE UMA MACRO A uM COMANDO DO Menu 1. View / Toolbars / Customize 2, Na janela do Customize encontra-se no Commands Tab 3. Seleccione a categoria Macro 4, Na aérea respeitante aos Commands seré exibido um item de Custom Menu Item, seleccione-o e arraste-o com 0 rato até a uma posi¢do do menu que the interesse — por exemplo pode introduzir numa das listas de opgdes do menu (File, View,...) ou entio criar como uma nova opgdo do Menu. Tan ee) |e Catenores Comnends endow and Rep Drawing © ciseomauton Selected cemmand Descriaion ifr elector Fig.7 — Caixa de dilogo para atribuir uma macro a um comando do menu iscTE/ DCT 77123 Luisa. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verso Draft) 5, Se pretender criar uma nova lista no menu deverd : a) Seleccionar a categoria New Menu b) Na drea dos Commands sera exibida a opgaio New Menu, que devera arrastar até & barra dos menus ) Podera alterar o seu nome clicando no botio de Modify Selection 4d) Esta nova lista tera o mesmo comportamento que a outras Fig.8 ~ Caixa de dilogo para eriar um novo menu na barra dos menus 6. Na janela de Customize poderd ainda utilizar dois botdes que se encontram na érea do Selected Command: ©) Description — que exibe um texto explicando o que o comando seleccionado faz. } Modify Selection — semelhante ao clique sobre o menu ou comando de menu criado, exibe uma série de tarefas possiveis para configuragdo (Ver o item 6 do capitulo Associar uma Macro a um Botdo) ISCTE/ DCT Ter i232 Luisa. Domingues@isete.pt Excel - Macros e Visual Basic for Applications (versao Draft) DissociacAo 1, Tools / Customize 2. Arraste o Menu ou Comando do Menu até ao documento e solte-o iscTE/ DCT Luisa.Domingues@isete-pt 97123 Excel - Macros e Visual Basic for Applications (versao Draft) Editor de Visual Basic for Applications 1, Tools / Macro / Visual Basic Editor - para aceder ao Editor 2. Posicionando-se no corpo de uma macro, na janela do lado direito inferior, poderd executar a macro através de: Run / Run Sub-UserForms (figura 9) ou botao Run. Book2 - [Modulet 2 [4% ce ca sew ere Fcrmst Gebuy [gun Jods wrdon Heb oa Bs @ @alo _ oe ole Break CelyBreak [Gener m Reset Bg bes todo YoAProject (Book2) SS Nrosoft Excel Objects 1) shectt (heett) Sheet2(sheet2) f) Shost3 (cheot3) 38) Tiswerkbook B-B3 Woules ‘vf Modulet End Sub Fig.9~ Execugdo de uma macro no Editor de Visual Basie for Applications iscTE7DcTT 207122 Luisa. Domingues@iscte pt Excel - Macros e Visual Basic for Applications (verséio Draft) REMOVER MACROS A remogio das macros poder ser feita: > no ambiente Excel, ou > no Editor de VBA Remogao de Macros em Ambiente Excel 1. Tools / Macro / Macros 2. Selecciona-se a Macro a remover 3. Clica-se no botio Delete 4, Pede a confirmacdo e apaga se confirmar Remogao de Macros no Editor de VBA 2. Tools / Macro / Visual Basic Editor - para aceder ao Editor 3. Podem-se apagar as macros que se encontrem na janela do hdo direito inferior e que tém inicio com a palavra Sub e fim com as palavras End Sub (Ver capitulo de fungdes € procedimentos) isctE/ DCT Luise. Domingues@iscte.pt 2 122 Excel - Macros e Visual Basic for Applications (versao Draft) Editor de Visual Basic for Applications iscTE/ DCT Excel - Macros e Visual Basic for Applications (versao Draft) SMDaeciaeat mecrot Maceo, Sess SEIUT SE unas aeny naineneaer ‘Samgce _ ae Clique no fcone do Object Browser ou View/Object Browser ou F2 > Na Caixa de Drop-Down onde aparece referido , seleccione a aplicago para a qual pretende ajuda — neste caso Excel. Convém referir que poderé utilizar as fngdes de toda e qualquer aplicagao. > Na Arca intitulada por Classes aparecem todos os objectos especificos para o ‘manuseamento da aplicagdo seleccionada. A classe especial designada por Globals refere-se as fungdes que estio disponiveis na aplicagio independentemente dos objectos seleccionados. v Seleccione um dos objectos e visualize do lado dieito os Members of “ ” > Para cada membro da classe dispde de um help on-line que o esclarece sobre a respectiva fungi e funcionamento, dando um exemplo que poderd testar. Para tal basta clicar sobre o botdo de Help da janela do Object Browser. HELP ON-LINE © Editor de Visual Basic for Applications, disponibiliza ao utilizador um sistema de ajuda constante, Assim, quando se constroiem procedimentos, na janela de edigdo, & medida que a linguagem € escrita o editor abre oportunamente listas de opgdes para ajudar a escrever 0 cédigo. iscTE/ DCT 27122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) As CORES DO VBA Na Janela de Edigdo so programados, armazenados ¢ exibidos os procedimentos VBA criados. Porém, 0 texto envolvido em cada procedimento & dotado de uma série de cores diferentes, sendo que cada uma tem significado 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 nao algum erro de escrita, Se for detectado um erro a linha fica a vermelho ¢ ¢ exibida uma mensagem de erro, sendo todas as palavras sio reconhecidas, coloridas da cor da respectiva categoria e alteradas para letras maitisculas ou minasculas, conforme esteja pré-definido. Preto ‘Nome de variaveis, procedimentos, valores, operadores,... Verde Comentirio introduzidos no seio dos procedimentos. Estes comentirios servem para o utilizador poder associar algumas explicagdes aos procedimentos realizados. De referir que as palavras com esta cor sio ignoradas no procedimento, ie., ndo produzem qualquer efeito na sua execugo, Para introduzir comentarios bastard que 0 caractere * anteceda o texto a introduzir. ‘Amarelo ‘Um sombreado amarelo poderd aparecer sobre a linha que identifica um procedimento, Esta cor simboliza a ocorréneia de um erro na execugdo do respectivo procedimento ¢ o estado de execugio do mesmo, ie., 0 procedimento iniciou a execucao, durante a qual detectou um erro e agora esti parado, mas ainda em execugio. Quando isto acontecer ndo deverd voltar a dar ordem de execugdo do procedimento, sem antes parar (Stop) a execugo mal sucedida. iscTE/ DCT 297122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Fungoes e SubRotinas iscTE/ DCT 307123 Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Como foi referido anteriormente, quando se grava uma macro no Excel, este tem um comportamento em background que realiza a respectiva codificagdo para Visual Basic for Applications. Este resultado & bem visivel quando procedemos & edigo de uma macro no Editor de Visual Basic for Applications. Cada macro que se cria tem um comportamento conereto € auténomo relativamente a outras macros implementadas, e tem como objectivo executar um determinado nimero de instrugdes' que respondam as exigéncias do utilizador. Cada macro criada dé origem a um procedimento ou rotina. Existem dois tipos de rotinas: > as subrotinas ou rotinas Sub, & > as fungies. 1 Gntenda-se instrusio como uma larefa a execular que corresponde a uma linha de e6digo. isctE/ DCT 317123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) SUBROTINAS Definicéo de SubRotinas As SubRotinas sio aquelas cuja definigo ¢ delimitada pelas palavras-chave Sub & EndSub. Assim se reparar todas as macros que grava no Excel sio deste tipo. Repare ainda como & que sdo defini Sub () End Sub Estas SubRotinas so designadas pelo nome? que Ihe atribuimos e nio recebem parimetros* do exterior, tam como fungdo desempenhar um conjunto de tarefas que compdem o seu corpo. O corpo da macro, & assim composto por um conjunto de instrugdes, sendo que cada instrugao diferente necessita de estar numa linha diferente. Contudo, quando se trata de instrugdes demasiado grandes o editor faz a sua parti¢ao por diversas linhas, recorrendo ao operador “_”, por forma a facilitar a leitura. ? O nome da rotina pode ser qualquer um desde que nfo contenha espagos, comece por caracteres alfa * Para tera nogio do que slo pardmetros recorde-se do funcionamento das fungdes do Excel, que para executarem determinada fungo necessitavam de receber parmetros que colocamos entre paréntesis separados por virgulas. isctE/ DCT 327123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Trabalhar no Editor de VBA ~ Criar uma SubRotina Para criar uma SubRotina é necessério que exista um médulo onde se possa escrever. ‘Uma vez posicionado nese médulo poder: > Escrever a macro integralmente, ou > Recorrer ao Insert / Procedure para que o Visual Basic for Applications Ihe crie a estrutura (Figura 14) Name: [Macret (Tv Cancel ab Pez] © Eumetin | © Brcperty jsccpe © Public © private PF allLoca variables as Statics Figura 14 —Caixa de Didlogo para a criagdo de uma nova rotina Assim deverd indicar o tipo de rotina a criar - Sub_e 0 nome que pretende dar a macro (ou rotina ou procedimento ou SubRotina) *. Automaticamente ele criar a estrutura da rotina, neste caso ficaria: Sub Macrol( ) End Sub * Nomes alternatives para fazer referéncia a um conjunto de instrugdes. iscTE/ DCT 337123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Execucaéo de uma SubRotina SubRotina e Macro sio duas designagdes para a mesma realidade, portanto tudo o que foi referido relativamente a Macros ¢ valido também para as SubRotinas, (Consultar capitulo das Macros) Neste contexto a execugiio de SubRotinas segue o mesmo mecanismo das macros. Porém neste momento ja 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 0 nome de outra a execucdo da rotina tem continuidade na execucdo da rotina que esté a ser invocada, FUNGCOES Definicéo de Funcées Fungdes sdo rotinas cuja definicgo comega com a palavra-chave Function ¢ termina com as palavras End Function. Todas as fungdes que utiliza no Excel so deste tipo de rotina. A sua definigdo tem a estrutura seguinte: Function ( , ....) jo> = ( As , ...) As = End Function Nota: Se os tipos nfo forem definidos sera assumido por defeito como sendo do tipo Variant isctE/ DCT 357123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Trabalhar no Editor de VBA ~ Criar uma Funcado Para criar uma Fungdo é necessério que exista um modulo onde se possa escrever. ‘Uma vez posicionado nesse médulo poderd: > Escrever a macro integralmente, ou > Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe erie a estrutura (Figura 15) ee Name: [iva Tye re Cancel Exnetion © Property (Scope © Public © Private PF alltocal variables as Statics Figura 15— Caixa de Didlogo para @ criagio de uma nova rotina- fungio ‘Nesta caixa de diélogo deverd indicar o tipo de rotina a criar— Funetion 0 nome que pretende dar funcdo. Automaticamente o Visual Basic for Applications criara a estrutura da rotina, que neste caso ficaria: Funetion IVA() End Function iscTE/ DCT 367123 Luisa. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Execucao de uma Funcaio ‘Uma vez que uma fungdo produz um valor ela podera ser executada: > dentro de uma célula numa WorkSheet, semelhanga de qualquer uma outra fungdo do Excel > dentro de qualquer outra fungdo ou SubRotina, Com base na seguinte fungdo, analisemos as formas de execugdo com mais pormenor: [een Pico F T Funeoion 1¥8 valor, Ta) Figura 16 — Janela de Edigdo com a fungao IVA iscTE/ DCT 377123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) EXECUCAO DENTRO DE UMA CELULA Posicione-se na célula onde pretende inserir a fungdo Insert / Function Seleccione a categoria User Defined — repate que aparece listada a fungdo que acabou de criar IVA (Figura 17) Function Function category Functon name: lockup Reference Database Test Losical Information IWA(Walor,Taxa) ‘Choose the Help button for Felp on this Function ard its arguments core Figura 17 — Caixa de Didlogo para introdugio da fungi isctE/ DCT 387123 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versdo Draft) 4, Clique em OK e de imediato uma janela de ajuda viré auxiliar a utilizagdo da sua fungao (Figura 18) Figura 18 ~ Caixa de Didlogo para apoio & uilizagio da fung30_ 5. Introduza os pardmetros ¢ clique em OK (Figura 19) Figura 19 — Caixa de Dislogo para apoio a utilizaga da fungio—introdugdo de valores Em suma: ‘Qualquer fungdo poderd ser chamada a partir da WorkSheet do Excel, sendo que a sua chamada serd realizada a semelhanga de qualquer outra fungo: numa célula = (, ) ISCTE/ DCTT 397 1a2 Luisa. Domingues@isete.pt Excel - Macros e Visual Basic for Applications (versao Draft) EXECUCAO DENTRO DE UMA ROTINA Quando dentro de uma rotina se faz referéncia ao nome de uma outra rotina a execugdo da primeira passa pela execugdo daquela que esta a ser invocada. No exemplo que se segue, a fungéio Valor_Liquido faz uma chamada a fungio IVA por forma a que, o valor por esta produzido, seja adicionado a varidvel Valor, e assim produzir o output final da fungdo Valor_Liquido. [cere Brentano a ota tuneso recebe 0 valor cam 1A Panction Vales biqusdo aloe, Tara) taxa de IVF aplicavel e celoula o valor Liquids ga transacgio ator taguices = valor + 1va(vaier, Taxa Figura 20 — Fungo Valor_Liquido ao ser executada da erdens de execugio a fungo IVA, isctE/ DCT 07122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Um outro exemplo poderd elucidar melhor: Topuctox(rincrodua o 2 Yaler™| Anior = Yer aioe (Valor 2, Valor] ovation Var_Ratoe (yeh Vals, By¥a2 Yal_2) fre runctson, Figura 21 —A Subrotina ldent_Maior ao ser executada di ordens de execugdo a funge Ver_Maior [er Berner Bi ne ane nator) isctE/ DCT a Luise. Domingues@iscte.pt 122 Excel - Macros e Visual Basic for Applications (versao Draft) DIFERENGAS ENTRE FUNCOES E ROTINAS As fungdes sao similares as subrotinas, existem simplesmente trés diferengas: 1. As Fungdes Comegam com a palavra-chave Function ¢ terminam com as palavras End Function 2. As Fungdes podem ser chamadas a partir de formulas introduzidas numa WorkSheet 3. As fungdes retornam valores para as férmulas ou subrotinas que as chamarem REGRAS PARA A PASSAGEM DE PARAMETROS Regra 1: Como uma fungdo retoma um valor, esta deverd ser utilizada numa expresso, Quando uma fungao & utilizada do lado direito de uma assignago, ou como argumento de uma outra rotina, dever-se-4 passar os parametros dentro de paréntesis Regra 2: Pode-se chamar uma fungaio ou subrotina com a palavra-chave Call, neste caso dever-se-Go colocar todos os pardmetros entre paréntesis. Regra 3: Quando uma rotina é chamada de forma isolada ¢ sem a palavra-chave Call, no se deve utilizar paréntesis isctE/ DCT Bie Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Variaveis iscTE/ DCT B12 Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) MANUSEAMENTO COM VARIAVEIS O que sao variaveis? ‘As varidveis constituem repositérios temporirios de dados, podendo ser utilizadas para diversos fins. [emer De i Sa aporcan Napoova = Inputsor ("Bs que nimero ayoota? (entee 1 © 50 *) Figura 22 —Manuseamento de Variéveis isctE/ DCT Hie Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Assignacao de valores a variaveis: ever-se-d indicar o nome da varidvel, 0 ivel armazene. Quando se pretende atribuir valores a variéveis operador "=" ¢ 0 valor que se pretende que a va = Pela observagio do procedimento Adiao - Figura 22- podemos verificar que as variaveis Parcela_l e Parcela_2 armazenam os valores introduzidos pelo utilizador através das InputBox (Ver capitulo "InputBox e MsgBox"). Também 4 varidvel Total vai ser atribuido o valor resultante da adigdo das duas parcelas - Total = Parcela_I + Parcela_2. Utilizacao de varidveis como se fossem valores: O nome da varidvel representa 0 conteiido da mesma, i.e., sempre que mencionar 0 nome da varidvel & 0 seu conteiido que ser considerado. No exemplo da figura 22, pode-se constatar que na expresso: Total = Parcela_I + Parcela 2 Parcela_I representa 0 primeiro valor introduzido e Parcela_2 representa 0 segundo valor, ni se trata de adicionar o nome de duas variiveis, mas adicionar os conteiidos que elas armazenam. isctE/ DCT 7122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) TIPOS DE VARIAVEIS O tipo de variével esti associado a0 género de informagdo que esta tem hipétese de Boolean - 2 bytes — Permite armazenar valores Boolenaos — True ou False Byte~ 1 Byte— permite armazenar mimeros sem sinal entre 0 e 255 Currency - 8 bytes— permite armazenar moeda Date— 8 Bytes— permite armazenar datas Double ~ 8 bytes — permite armazenar um real desde -1.79769313486232E308 até -4,94065645841247E-324 para__valores_negativos, e desde 1,79769313486232E308 até 4,94065645841247E-324 para valores positivos. Single — 4 bytes — permite armazenar um real desde -3.402823E38 até -1.4011298E-45, para valores negativos e desde 3.402823E38 até 1,4011298E-45, para valores positivos Integer — 2 bytes - permite armazenar_nimeros inteiros entre -32.768 e 32767 Long — 4 bytes— permite armazenar nimeros inteiros entre -2 147 483 648 e 2 147 483 648 Object — 4 bytes utilizado para fazer referencia a um objecto do Excel String — | byte por caractere — permite armazenar conjuntos de caracteres ‘Variant — 16 bytes - permite armazenar qualquer tipo de dados UserDefined— permite armazenar valores de tipos diferentes iscTE/ DCT Wr 1a2 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) DECLARAGAO DE VARIAVEIS Dim |_Numero As Integer Onde: Dim — Palavra chave que indica uma declaragao de varidveis (abreviatura de dimensao) 1_Numero - nome da variavel a utilizar As — palavra chave utilizada para separar o nome da varidvel do tipo de dados Integer — tipo de dados atribuido & variavel E possivel na mesma declaragdo de variéveis declarar varidveis de diversos tipos: Dim varl As Integer, var2 As Date, var3 As Double Para declarar diversas varidveis do mesmo tipo: Dim var_l, var_2, va 3 As Currency VARIAVEIS ~ VANTAGENS DA UTILIZACAO ¢ Simplificam a codift-acdo, principalmente quando se necessita de utilizar um valor especifico inimeras vezes # Com varidveis o cédigo & mais ripido isctE/ DCT A712 Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) VARIAVEIS DO TIPO OBJECTO ‘Uma varidvel objecto representa uma referéncia a um objecto. Uma variével de extrema importincia que facilita a codificagao e melhora a performance da subrotina. Declaracado da Varidvel Objecto Dim As Object Atribuicdo de uma varidvel Objecto Set = Set— palavra chave que indica a assignagdo de uma varidvel objecto - Variavel Objecto =- Operador de Jo - Objecto a ser atribuido a varidvel isctE/ DCT 122 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Utilizacao Genérica da Varidvel Objecto A utilizagdo genérica do tipo Objecto serve para suportar qualquer tipo de objecto Excel (WorkBook, WorkSheet,Range,...) Exemplo: Dim Range_1 as Object Range_1 = Worksheet(1).Range(“A1”) Range_1.Value ~ 10 Utilizacao Especifica da Varidvel Objecto Utiliza-se 0 tipo exacto do objecto que se pretende atribuir 4 variivel. Esse tipo especifico de objectos coincide com o nome dos objectos em EXCEL Dim Range_1 As Range Dim WB_| As Workbook Dim WS_1 As WorkSheet Dim XL As Aplicativo Exemplo: Dim Range_1 as Range Range_I = Worksheet(1).Range(“A”) Range” 1.Value = 10 isctE/ DCT Tia Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Contudo estas declaragées também podem ser feitas da seguinte forma genérica: Dim Range_1 As Object Dim WB_I As Object Dim WS_1 As Object Dim XLAs Object Entdo qual o interesse de definir as variaveis de forma specifica se 0 podemos fazer de forma genérica? Por uma questio de performance, se utilizar um objecto genérico, 0 VBA antes de executar qualquer fungo com o objecto tem que primeiramente o identificar (perdendo ‘tempo) — em subrotinas simples essa diferenga no é substancial mas quando se trata de grandes subrotinas jé se denotam diferengas significativas iscTE/ DCT 307123, Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) VARIAVEIS - DECLARAGAO OPCIONAL E O T1po VARIANT A declaragao de varidveis ¢ opcional, se as varidveis ndo forem declaradas 0 VBA faz a sua declaragao por defeito. Assim sempre que a instrugdo do Dim é omitida para uma variavel, essa assume o tipo Variant. Os Prés e Contras da Utilizacao do tipo Variants PR6s ‘© Diminui o ntimero de linhas de cédigo * Nao & necessario estar preocupado se a variével est ou no declarada porque 0 VBA automaticamente 0 faz CoNnTRAS + Aumenta 0 tempo de execugdo - 0 VBA primeiro precisa de reconhecer 0 tipo de dados com os quais esta a trabalhar. * Este tipo de dados consome mais meméria (uma vez que tem que alocar espago para qualquer tipo de dados que the seja atribuido) — 16 bytes mais um byte por caractere se for String -> problemas de performance para subrotinas grandes. + Nao & possivel saber o tipo de dados que uma determinada varidvel contém — dificultando a detecgao de erros. iscTE/ DCT 31723 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Variaveis - Declaracao Forcada Para que o VBA detecte um erro sempre que uma variével nao seja declarada deverd fazer: + Tools/Options © Editor Tab + Activar Require Variable Declaration Ou entio, escrever no inicio de cada médulo Option Explicit Neste caso sempre que seja detectada uma varidvel que ainda ndo foi declarada di uma mensagem de erro - Variable Not Defined isctE/ DCT 327123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) VARIAVEIS - TIPOS DEFINIDOS PELO UTILIZADOR ~ ESTRUTURAS Definicado do Tipo A primeira fase € constituida pela definigio do tipo: Type Dados_Pessoais, Nome As String Idade As Integer DataNascimento As Date BI As Long End Type Criow-se um tipo de dados que representa uma estrutura com dados de diferentes tipos. Esta definigdo devera ocorrer no inicio do médulo VBA. Onde: Type [Palavra-Chave que indica a definigao de um tipo de ldados criado pelo utilizador. Dados_Pessoais [Nome atribuido ao tipo de dados. Nome As String Primeiro elemento da estrutura de dados definida. dade As Integer Segundo elemento da estrutura de dados definida DataNascimento As Date Terceiro elemento da estrutura de dados definida. BI As Long [Quarto elemento da estrutura de dados definida. End Type Palavra-Chave que indica o fim da definigao da lestrutura de dados. iscTEy DCT 71 Luise. Domingues@iscte pt Excel - Macros e Visual Basic for Applications (versao Draft) Utilizacéo das Estruturas de Dados Como utilizar as estruturas de dados: Sub Tipos_definidos_Utilizador() Dim Pessoa As Dados_Pessoais Pessoa. Nome = “Francisco” Pessoa.DataNascimento = #8/7/73# Pessoa.Idade = WorksheetFunction. Year(Date)_ — WorksheetFunction. Year(Pessoa.DataNascimento) Pessoa.BI = 103582915 MsgBox ‘Pessoa. Nome & Chr(13)_ & “, Idade “ & Pessoa.ldade & Chr(13) & _ “, Data de Nascimento” & Pessoa DataNascimento & Chr(13) & _ “com o BI niimero “_ & Pessoa.BI End Sub * Ver capitulo InputBox e MsgBox isctE/ DCT 347123 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) VARIAVEIS - ARRAYS O que é um Array ? ‘Um Array é uma varidvel que representa um conjunto de variéveis do mesmo tipo. Os Arrays podem ser multidimensionais, onde todas as dimensdes so indexadas numericamente. ARRAY UNI-DIMENSIONAL Um array uni-dimensional ¢ constituido por uma iinica lista de elementos indexaveis Esta lista tem um elemento inicial e um outro final sendo que a cada elemento da lista corresponde um iinico indice, tradug’o do lugar que ocupa na lista, que o identifica univocamente iscTE/ DCT 357123 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) ARRAY Bi-DIMENSIONAL Bere ‘Um array bidimensional é um pouco mais complexo e & constituido por um conjunto de listas do, mesmo comprimento, este formato é normalmente conhecido como array ou matriz. E portanto constituida por linhas e colunas e cada elemento é identificado por um_ indice composto pela intercepgdo dos mimeros da linha e da coluna. iscTE/ DCT 367123 Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) Declaragio de um array ARRAYS UNI-DIMENSIONAIS Dim ArrayNumerico(10) As Integer Array_Numerico & 0 nome da varidvel array, némero entre paréntesis indica 0 ntimero de elementos que array pode armazenar, isto & Array_Numerico Sea aas Em que cada elemento € do tipo Integer. ARRAYS BI-DIMENSIONAIS Tabela_Textual (5, 4.) As String Tabela_textual ¢ 0 nome da varidvel, os mimero entre paréntesis indicam que a tabela ira ter 5 linhas e 4 colunas, podendo assim armazenar 20 elementos do tipo String, Tabela_Textual 0 1 were iscTE/ DCT 377123 Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) Utilizagao de um Array PARA ACEDER AO ELEMENTO ([,,... ]) ATRIBUICAO DE VALORES ([,,... ]) Exemplo 1: Sub Paises() Dim Paises(3) As String Pafses (0) = "Portugal" Paises(1) = "Brasil" Paises(2) = "Mogambique" MsgBox "Paises Armazenados:" & Chr(13) & Pai Chr(13) & Paises(2) es(0) & Chr(13) & Paises(1) &_ End Sub Apés a atribuigdio de valores a cada elemento do array, este passa a ter 0 conteiido seguinte: Paises Portugal 0 Brasil Mogambique | 2 Valor estes que serio exibidos através da MsgBox. iscTE/ DCT Ear Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Exemplo 2 Option Base 1 Sub Utilizacao_Array() Dim Lotaria(3) As Integer Lotaria()=int(10000*Rnd()) Lotaria(2)=int(10000*RndQ) Lotaria(3)=int(10000*RndQ) MsgBox “Nimeros da lotaria: " & Lotaria(1) & “, “& Lotaria(2) & “, “&_ Lotaria(3) End Sub Option Base e Array Bounds A indexagdo de um array por defeito tem inicio em 0, sendo que os respectivos indices vao de 0a dimensio-1. Para alterar a base de indexagdo por forma a ter inicio em 1 basta colocar no inicio do médulo Option Base 1 Contudo se pretender que um array comece noutro nimero que ndo seja 0 ou 1, & necessrio especificar os limites inferior e superior do indice aquando da declaragao do array. Exemplo: Sub Utilizacao_Array() Dim Lotaria(4 To 5) As Integer Lotaria(4)=int(10000*Rnd() Lotaria(5)=int(10000*Rnd() MsgBox “Numeros da lotaria: ” & Lotaria(4) & “, “& Lotaria(S) End Sub iscTE/ DCT 397123 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Constantes isctE/ DCT Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) O QUE SAO CONSTANTES ? Constantes so valores que no alteram durante a execugdo de uma rotina, So declaradas da mesma forma que as variveis, a tinica diferenga reside no facto da atribuigdo ser feita na mesma instrugio da declaragdo, e sé poder ser feita uma tinica vez. Const ‘onstante> As As El [Poecente Sub Desconta() Const Taxaesc As Double = 0.05 Dim Valor Tliq As Double Dim Valor_big As Double Yaloc_Tliq ~ InputBox ("Introduce © wentante iliquido: *] Valor lig ~ Valor Tlig * (1 ~ TexeDe=c} MsgBox "Montante Liquide, apé= de=conto de" ¢ TaxaDesc ¢_ de" 6 Valor Lig End Sub Figura 23 -Manuseamento de Constantes iscTE/ DCT e723 Luisa. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) InputBox e MsgBox iscTE/ DCT ria Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) O Que sAo? Para haver interacgao entre o utilizador e uma macro ou programa é necessério que exista um interface de comunicagio. Este poderi ser mais ou menos complexo ¢ completo, contudo existem dois elementos basicos para estabelecer esta ligagdo: InputBox ¢ MsgBox. Neste contexto a InputBox é uma fungdo que permite ao utilizador introduzir dados no programa — é portanto um mecanismo de input. © MsgBox & um mecanismo de Output € permite ao utilizador visualizar os dados produzidos pelo programa. O que faz 1, Exibe no écran uma janela com uma caixa —text box — para a insergdo de dados. 2. Espera que 0 utilizador introduza os dados e/ou accione um dos botdes. 3. Como ¢ uma fungdo 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 avaliago da fungio, pode-se dizer que a mesma possui diversos pardmetros, mas somente 0 primeiro é obrigatério, sendo que todos os outros quando ignorados assumem valores atribuidos por defeito. isctE/ DCT @ria Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Parametros Parametro Comentario Prompt ‘Expresso textual exibida como mensagem na janela de input. (Obrigatério ) A dimensio maxima é de 1024 caracteres. Se se pretender construir uma mensagem com mais do que uma linha poderd utilizar o caractere Enter - Char(13). A jungo dos elementos que constituem a mensagemé realizada através do ‘operador &. Exemplo: "A Soma de 3 com 5 é :" & Chr(13) & "8" Title Titulo da janela de input. Se este for omitido, aparecera por (Facultative) defeito o nome da aplicagao. Default ‘Expressao inserida por defeito na caixa de insergao de dados e (Facultativo) constituird a resposta por defeito se o utilizador nao introduzir outra Se este pardmetro for omitido aparecerd uma text box vazia. ‘Xpos ‘Nimero que identifica a distincia horizontal entre o lado (Facultative) esquerdo do eran ¢ a janela de input. Se este valor for omitido a janela aparecerd centrada horizontalmente. Ypos ‘Niimero que identifica a distancia vertical entre o lado superior (Facultative) do écran ¢ a janela de input, Se este valor for omitido a janela ficard posicionada a 1/3 da parte inferior do écran HelpFile Nome do ficheiro de Help que sera utilizado para dar apoio ao (Facultative) preenchimento desta janela. Se for indicado este pardmetro 0 seguinte ¢ obrigatério. Context Niamero do indice do tépico de Help constante no ficheiro (Facultative) HelpFile, e que corresponde a janela em questio, Atencio: Se pretender enviar mais que um pardmetro optativo respeite a ordem através de “” (virgulas) Exemplo: InputBox(“Introduza o Nome da Aplicagio:”, , “Excel”) Na janela de input seré exibida a mensagem “Introduza o Nome da Aplicag0:”, 0 titulo da caixa seré o definido por defeito e 0 valor na caixa de insergao serd “Excel”. iscTe/ CTT aria Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) MscBox O que faz... 1. Exibe no éeran uma janela com uma mensagem, 2. Espera que o tilizador accione um dos botdes. 3. Como é uma fungao produz um valor final. Devolve um numero inteiro indicando 0 botio que foi clicado, Sintaxe MsgBox(prompt{, buttons] [, title] [, helpfile, context]) A semelhanga da InputBox , pode-se dizer que a mesma possui diversos parametros, mas somente 0 primeiro obrigatério, sendo que todos os outros quando ignorados assumem valores atribuidos por defeito. isctE/ DCT ria Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Pardmetros Parametro Comentario Prompt Expressio textual exibida como mensagem na janela de input (Obrigatério ) A dimensio maxima é de 1024 caracteres. Se se pretender construir uma mensagem com mais do que uma linha podera utilizar 0 caractere Enter Chr(13) Exemplo: "A Soma de 3 com 5 é :" & Chr(13) & "8" Buttons Numero que identifica o tipo de botdes que se pretende (Facultativo) visualizar na janela de output. Ver tabela seguinte. Se for omitido assumira o valor 0 por defeito, Title Titulo da jancla de input, Se este Tor omitido, apareeeré por (Facultativo) defeito 0 nome da aplicagio. HelpFile Nome do ficheiro de Help que sera utilizado para dar apoio a0 (Facultative) preenchimento desta janela. Se for indicado este pardmetro 0 seguinte € obrigatorio. Context Nimero do indice do topico de Help constante no Ficheiro (Facultative) HelpFile, e que corresponde & janela em questio. Atengdo: Se pretender enviar m: através de “,” (virgulas) que um pardmetro optativo respeite a ordem emplo: MsgBox(“Erro de Sintaxe !!!”, , “Mensagem de Erro”) ‘Na janela de output serd exibida a mensagem “Ero de Sintaxe”, 0 botio exibido seré o de OK (por defeito) e o titulo da janela seré “Mensagem de Erro”. isctE/ DCT ria Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Dratt) Constante de VBA| Valor Descrigao VbOKOnly 0 |[Exibe somente botio de OK. [VbOKCancet 1___ [Exibe os botées OK ¢ Cancel VbAbortRetrylgnore 2___[Exibe os botdes Abort, Retry, ¢ Ignore. VbYesNoCancel 3____ [Exibe os botdes Yes, No, e Cancel VbYesNo 4 [Exibe os botdes Yes € No. [VbRetryCancel 3___[Exibe os botdes Retry e Cancel. [VbCritical 16 _ [Exibe 0 icone de Critical Message. VbQuestion 32__|Exibe 0 feone de Warning Query. [VbExclamation 48 [Exibe o icone de Waming Message. [VbInformation 64__[Exibe 0 icone de Information Message. [VbDefaultButtont 0 [0 primeiro botdo € o seleccionado por defeito. [VbDefaultButton2 256 _[O segundo botio € 0 seleccionado por defeito. VbDefaultButton3 512 __|O terceiro botdo é o seleccionado por defeito. VbDefaultButton 768 _|O quarto b €0 seleccionado por defeito. MsgBox & que poder dar continuidade ao trabalho na aplicagio corrente VbApplicationModal 0 [Application modal — 0 utilizador s6 depois de responder & VbSystemModal 4096 [System modal - — o utilizador s6 depois de responder & MsgBox é que poderd dar continuidade ao trabalho em qualquer aplicacdo em curso no sistema. Pela andlise desta tabela poderd constatar que existem diferentes agrupamentos de cédigos: para definir o tipo de botdes (0-5), para definir o tipo de icones (16,32,48,64), para definir 0 botdo seleccionado por defeito (0,256,512,768) e para indicar o modo de execucdo (0 e 4096). Poderé adicionar os cédigos e assim fazer combinagdes entre diversas opgdes destes 4 grupos, contudo munca devera adicionar mais do que um cédigo por agrupamento. isctE/ DCT a2 Luisa.Domingues@isete.pt Excel - Macros e Visual Basic for Applications (versao Draft) Exemplos: Para a instrugio: MsgBox "Erro de Sintaxe!!!", 2+ 48 + $12 + 4096, "Mensagem de Erro” E exibida a seguinte janelaz eee | a Figura 24 MsgBox Para a instrucio: MsgBox "Etro de Sintaxe!!!", 5 + 64+ 256 +4096, "Mensagem de Erro” £ exibida a seguinte jancla: @ Erto de Sintasell! _ Figura 25 MsgBox. isctE/ DCT ria Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséo Draft) Valores Produzidos... Como jé foi referido, a fungo MsgBox produz um valor em fungdo do botdo accionado, assim produziré como output um dos valores constantes da tabela seguinte: Constante de VBA. Valor Botao Accionado lwbOK T OK [vbCancel 2 Cancel vbAbort 3 ‘Abort lvbRetry 4 Retry lvbIgnore 3 Tgnore wbYes: 6 Yes [vbNo 7 No iscTEyDCTT ori Luisa.Domingues@isete.pt Excel - Macros e Visual Basic for Applications (versao Draft) Dominio das variaveis, constantes e rotinas iscTE/ DCT Excel - Macros e Visual Basic for Applications (versao Draft) O QUE E O DOMINIO? Scope ou dominio de um elemento refere-se a érea na aplicagao na qual esse mesmo elemento pode ser acedivel e utilizado, ou seja onde é que o elemento é reconhecido. DOMINIO DAS VARIAVEIS Refere- atribuido. 4 rea onde a variével permanece activa, mantendo 0 valor que Ihe vai sendo Existem 3 niveis de dominio para as varidv + Ambito do Procedimento ou Procedimental + Ambito do Modulo ou Modular + Ambito do Projecto As declaragdes de tipos User Defined que séo escritas no Declarations do médulo tém dominio de Projecto. iscTE/ DCT 7723 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Ambito do Procedimento Estas variéveis so declaradas no corpo do procedimento com recurso 4 palavra chave Dim. Sto variiveis criadas aquando da execugdo do procedimento e automaticamente destruidas quando o procedimento termina, sendo que sé so reconhecidas no seio do procedimento que as declarou Assim sendo, qualquer tentativa realizada por um procedimento no sentido de trabalhar com variiveis definidas no corpo de um outro procedimento nio tera éxito. Exemplo Sub Ambito_Procedimento() Dim Var_l As Integer Var_l = InputBox (“Introduza um niimero Inteiro”) MsgBox “Foi este o nimero que introduziu: ” & Var_] Ambito_Procedimento_2 End Sub Sub Ambito_Procedimento_2() MsgBox “Foi este o mimero que introduziu: ” & Var_l End Sub A execugio destas rotinas resultard no seguinte: ‘A primeira mensagem (MsgBox no Procedimento Ambito_Procedimento)exibiré 0 mimero introduzido pelo utilizador que fora armazenado na variével Var_! ‘A. segunda mensagem, oriunda da _instrugio. MsgBox do Procedimento Ambito_Procedimento_2 nao exibira o valor introduzido, porque a variivel Var_1 nele referida € considerada como uma variavel interna do proceso, e portanto criada dentro do procedimento Ambito_Procedimento_2. Como tal, embora possua 0 mesmo nome que a varidvel da rotina Ambito_Procedimento_1 nao existe qualquer igagdo entre elas, so duas varidveis distintas. Neste caso se se pretendesse que o valor da primeira varivel fosse reconhecido no procedimento chamado, terse-ia de o passar por pardmetro. isctE/ DCT 721123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Ambito do Médulo Uma varidvel como Ambito do Médulo pode ser acedida por todas as rotinas existentes no médulo onde a variavel & declarada Para declarar uma varidvel do nivel modular, devera declari-la com a palavra chave Dim na secgdo Declarations do respectivo médulo VBA. Neste caso qualquer variével ai declarada seré considerada de nivel modular por defeito, para tomar esse facto mais explicito poder-se-d utilizar a palavra chave Private na declaragio: Ex: Private Var_2 As String Exemplo: Dim Var_l As Integer ‘ou Private Var_I As Integer Sub Ambito_Modulo() Var_] = InputBox (“Introduza um numero Inteiro”) Ambito_Modulo_2 End Sub Sub Ambito_Modulo_20 MsgBox “Foi este o mimero que introduziu: ” & Var_l End Sub Neste caso como a variivel é reconhecida no médulo por qualquer rotina nele existente, desde que seja referida sempre pelo mesmo nome, o procedimento Ambito_Modulo_2 ir exibir 0 valor introduzido pelo utilizador no procedimento Ambito_Modulo. isctE/ DCT 737123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Ambito do Projecto ‘As varidveis assim definidas tém o mbito correspondente a todo projecto, isto é podem ser acedidas e alteradas em todos e quaisquer médulos. Para declarar varidveis deste tipo deverd fazé-lo na secgao Declarations de qualquer médulo, para tal dever utilizar a palavra chave Public, emp No Module_I tem-se Public Var_l As Integer Sub Ambito_Projecto() Var_l = InputBox (“Introduza um numero Inteiro”) Ambito_Projecto _2 End Sub No Module_2 tem-se: Sub Ambito_Projecto_20 MsgBox “Foi este o niimero que introduziu: " & Var_1 End Sub ‘A execugo do procedimento Ambito_Projecto no Module_1 mandou exe procedimento Ambito_Projecto do Module_2, e 0 valor atribuido & varidvel Var_l foi acedido posteriormente noutro procedimento de outro médulo, dado tratar-se de uma variavel global isctE/ DCT 747123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) DOMINIO DAS CONSTANTES A semelhanga das variéveis também as constantes tém 3 niveis de dominio: + Ambito do Procedimento ou Procedimental + Ambito do Modulo ou Modular + Ambito do Projecto Ambito do Procedimento Estas constantes sdo declaradas no corpo do procedimento com recurso @ palavra chave Const. Sé tém existéncia dentro do procedimento onde sao declaradas, Exemplo: Sub Ambito_Procedimento() Const Taxa_Dese As Single = 0.05 Dim Desconto As Double Desconto = InputBox (“Introduza o montante das Compras”) * Taxa_Dese MsgBox “O desconto é de: ” & Desconto End Sub iscTE/ DCT 757123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Ambito do Médulo ‘Uma constante com Ambito do Médulo pode ser utilizada por todas as rotinas existentes no médulo onde é definida. Para declarar uma constante a nivel modular, deveré declaré-la com a palavra chave Const na see¢io Declarations do respectivo médulo VBA. Neste caso qualquer constante ai declarada seré considerada de nivel modular por defeito, para tomar esse facto mais explicito poder-s utilizar a palavra chave Private na declaragao: Ex: Private Const Const_I As String mbito do Projecto As constantes assim definidas tm o Ambito correspondente a todo 0 projecto, isto & podem ser utilizadas em todos e qualquer médulo, Para definir constantes deste tipo deverd fazi-lo na seeg4o Declarations de qualquer médulo, para tal devera utilizar a palavra chave Publie. Ex: Public Const Const_1 As String iscTE/ DCT 767123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) DoMiINIo DE SUBROTINAS E FUNCOES Estas s6 tém dois niveis de Scope: 0 nivel do projecto ¢ 0 nivel do médulo. Por defeito as rotinas so de ambito do projecto sem qualquer indicagao adicional. Contudo podera tomar este facto mais explicito pela introdugdo da Palavra-Chave Public, que em termos operacionais nao adicionard qualquer funcionalidade, mas em termos de leitura dara uma maior percepgao. Exemp! Public Sub Ambito_Procedimento() Const Taxa_Desc As Single = 0.05 Dim Desconto As Double Desconto = InputBox (“Introduza o montante das Compras”) * Taxa_Dese MsgBox “O desconto é de : ” & Desconto End Sub Para que uma rotina tenha 0 Ambito do médulo onde es pela palavra chave Private. 4 definida, deverd ser antecedida isctE/ DCT 77723 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Estruturas de Controlo iscTE/ DCT 787123 Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséio Draft) O QUE SAO ESTRUTURAS DE CONTROLO? © VBA disponib iliza algumas estruturas que pode utilizar para controlar o decurso da execucdo da rotina. Estas estruturas dio ao programador um poder enorme para construir rotinas bastante complexas ¢ flexiveis. QUAIS AS ESTRUTURAS... VBA Control If-Then - Else Testa uma condigao ¢ executa um determinado conjunto de instrugdes consoante o resultado dessa avaliagao For — Next ecuta uma determinada tarefa um determinado nimero de ven While-Wend Executa uma determinada tarefa. enquanto que uma determinada conligdo permanega verdadeira, ie. com o valor True. Do— Loop Executa uma determinada tarefa enquanto que a avaliagao de uma condigao permaneca True ou entio até que seja True. Select - Case Selecciona um dos segmentos de cédigo a proces mediante a avaliagdo consecutiva de condigGes. For — Each —Next Realiza uma determinada tarefa repetitiva em cada objecto de uma colee¢do ou em cada item de um array. isctE/ DCT Luise. Domingues@iscte.pt 797123 Excel - Macros e Visual Basic for Applications (versao Draft) IF-THEN-ELSE Funcao IF do Excel Recorrendo & fungio IF do Excel, recorde: =IF( , , Then [Else ] End If A palavra Else é opcional num If Then-Else Statement, sendo que no caso de ser omitida, a avaliagdo negativa da condigdo implica uma saida automatic da Instrugio If, isctE/ DCT ¥07 123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Aplicacao Pratica [omer Be ‘=m acca) a rbecelo = sortei0(), opesion Soreei0() 40 Taceger Figura 26 ~ Aplicaso Pritica com um IF A rotina Aposta recebe uma aposta do utilizador e mediante 0 Sorteio a realizar pela respectiva fungdo, verifica se o jogador ganhou ou nao a aposta, comunicando-Ihe esse facto. iscTE/ DCT B23 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Dratt) Para uma maior clarificagao do funcionamento do IF, atenda ao quadro seguinte: 1 Palavra chave que indica o inicio de uma instrugio I Them Else Nsorteio=NAposta A condigdo a testar. Serve para determinar a sequéncia a dar & execugZo da rotina. Da avaliagdo desta condigdo pode-se obter um de dois valores True ou False, sendo que depende deste resultado o caminho a prosseguir. Se for True executard as instrugdes que seguirem a palavra-chave Then até encontrar a palavra chave Else, nao executando mais nada dentro do IF, caso contririo executaré 0 cédigo que se seguir a palavra chave Else até ao End If, Then Palavra chave que determina 0 fim da condigdo teste. Todas as instrugdes que tém inicio nesta palavra-chave até 4 palavra-chave Else sero executadas se a condigdo for verdadeira, MsgBox “Parabéns! _Instrugdes a executar se a condigdo for verdadeira. Acertou em cheio! 0 nuimero sorteado foi 0” &NSorteio Else Palavra-chave que determina o terminus de execugio das instrugdes € que determina 0 inicio das quando o resultado da avaliago for Tru instrugdes a executar se 0 resultado da condigao for False. MsgBox “Continue a Instrugdes a executar se a condigdo for falsa. Tentar!! © nimero sorteado foi o ” &NSorteio End If Palavra-chave que indica o fim do controlo de If Then-Else © como tal onde se deve retomar as instrugdes para prosseguir a execugio do procedimento. iscTE/ DCT Tae Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) A instrucao_adicional Elself Esta instrugdo propde uma condigdo alternativa se o teste da condigdo anterior tiver tido um resultado negativo. APLICACAO PRATICA Pretende-se criar uma macro que classifique etariamente um individuo em fungdo da sua idade. A classificagao pretendida é a seguinte: Idade Classe Etaria “Menos de 3 anos Bebé ‘Dos 3 aos 12 Crianga Dos 13 aos 17 ‘Adolescente Dos 18 aos 25, Jovem, Dos 26 aos 65 Adulto Mais de 65 Idoso [ower EU leer tore +» Molaseitioagto Trdeia" ‘ogisn Vf tp Aaolescente.”, , "Ciqaszticaglo ceacse” Wooton Eun fdaleo.", 5 egdow E um iowo."; y *ClaeesSicagho Pease Figura 27 — Aplicacdo Pritica com Elself iscTE/ DCT #7123 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) FOR - NEXT Permite a execugdo de uma tarefa durante um determinado nimero de vezes. Sintaxe For To [ Step ] Next Aplicacao Pratica Pretende-se criar uma rotina que recebendo a base e a poténcia calcule o valor respective [owe Di lenen Pte a Sus Galoula_Fovenesac) Yafox Seoe € * levanteds a" ¢ Foteacia &* produr o valor ” £ Fesultade Figura 28 ~ Procedimento que calcula a poténcia de um nme A instrugdo For-Next tem como fungdo calcular a poténcia. O mesmo efeito poderia ser obtido recorrendo & expressio Resultado = Base * Poténcia, contudo para fins de demonstragao de funcionamento este exemplo é bastante simples. isctE/ CTT 71a Luisa. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséo Draft) A FuncCAO DAS VARIAVEIS: Variavel Fungao Base Elemento a elevar. Poténcia Numero de vezes a multiplicar a base. Contador Conta 0 ciclo. mimero de vezes que a base ja foi multiplicada, € uma varidvel que ser aulomaticamente incrementada em cada looping do Resultado Varidvel que armazena o resultado sucessivo por cada vez que se multiplica ConsTRUCAO DO CICLO: For clo For-Next Palavra-chave que indica o inicio do 6 (Contador = 1 To Poténcia| [Expressio que contém a inicializagao do contador, indicando lo valor de inicio e de fim. Assim, o ntimero de vezes que 0 lciclo & executado sera: Valor_Fim — Valor_Inicio +1 |A palavra To é utilizada para separar o valor do contador no momento inicial do valor no momento final. (Tradugdo: O Jcontador iniciar-se-4 a um e atingiré o valor méximo ltraduzido pela variével Poténcia) Step 1 Palavra chave utilizada para especificar o valor a incrementar lou decrementar ao contador do ciclo por cada vez que o loop /é concretizado, Normalmente o valor a incrementar é um, lcontudo qualquer outro valor pode ser utilizado, desde Inimeros decimais, a nimeros negativos (Provocando assim a ldccrementagao). A palavra-chave Step ¢ opeional, sempre [que for omitida & assumido 1 como o valor a incrementar por defeito. Resultado Base Tinstragao a realizar de cada ver que o ciclo for executado, Neste caso a instrugdo é tinica, contudo poder-se-A0 adicionar loutras instrugées. [Next Palavra Chave que indica 0 fim de um cielo For-Next. Sempre que a execugdo do ciclo chega a instrugdio Next incrementa a variavel contador e volta ao inicio do ciclo. iscTE/ DCT Luise. Domingues@iscte pt W722 Excel - Macros e Visual Basic for Applications (versao Draft) TRADUCAO INTEGRAL For Contador = 1 To Poténcia Step 1 Resultado = Resultado * Base Next Para o mimero de vezes, a iniciar em 1 até que atinja, o valor Poténcia, pela incrementagdo de 1 m execugdo de cada ciclo, deveré multiplicar sucessivamente 0 resultado acumulado, pela base. Funcionamento do Ciclo: A primeira execugio do ciclo distingue-se das restantes por a ela estar associada a inicializago do contador, sendo o restante procedimento semelhante a qualquer outra exe No inicio de cada execugio do ciclo, a varidvel contador ¢ comparada com o valor final de execugio. Se o Step for um valor positivo (incrementar) € o valor do contador for superior ao valor final significa que o ciclo jé foi realizado 0 nimero de vezes pretendido, e entio o cédigo acabard a execugdo da instrugdo For-Next e seguir na linha de cédigo que esteja situada imediatamente a seguir, caso contrario executa uma vez mais 0 ciclo e incrementa a variével contador. Por outro lado, se o Step contiver valor negativo (decrementar) ¢ 0 valor do contador for inferior 20 valor final significa que 0 ciclo jé foi realizado o niimero de vezes pretendido, ¢ entio 0 cédigo acabard a execugio da instrugdo For-Next e seguiré na linha de cédigo que esteja situada imediatamente a seguir, caso contrério executa uma vez mais o ciclo e decrementa a varivel contador. Perigos associados 4 utilizagdo do ciclo For-Next: * Nao defini o limite de execugdo (ndo atribuir valor & variével que 0 define) ‘+ Definir erroneamente o Step, por forma a que nunca seja obtido o valor que determina o fim da execugao © estas condigdes implicardio que o ciclo nao tenha fim — Ciclos Infinitos isctE/ DCT Wer 122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Qutra Aplicacao Pretende-se criar uma rotina para calcuiar um factorial [emma coo 1 Tothneric(S Numeco! Thea Yoox YO tactoriel no pode esteuisdo eo» mimeros wegs3009 11" Figura 29 ~ Procedimento que calcula o factorial isctE/ CTT #77123 Luisa. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) WHILE-WEND A estrutura While-Wend tem um funcionamento similar ao For-Next. Realiza um looping um determinado namero de vezes, até que uma determinada condigao seja verdadeira. Sintaxe ‘While Wend Aplicagao Pratica [em Zier i Se eae a poste = TnputEo«|"Intcodaza = sum apoetn (este 1 © 201") Nu Gotaria = Tne(S Aka) + 4) Figura 30 — Procedimento “Lotaria Vieiada” A instrugdo While-Wend tem como fungdo gerar nimeros aleatérios entre 1 e 10 por forma a encontrar o nimero da aposta, e saber qual o niimero de langamentos necessérios para que aquele valor fosse obtido, iscTE/ DCT W722 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) A FunCAo DAS VARIAVEIS: Variavel Fungao Num_Lotaria _ [Nimero sorteado. Este serd inicializado a 0 por forma a que nao corresponda a nenhum valor introduzido pelo utilizador e assim possa realizar o primeiro sorteio. Aposta Numero em que o ulllizador pretende apostar. Num_Lane [Namero de langamentos realizados até obter 0 resultado da aposta [Este valor tem de ser incrementado cada vez que é realizado um sorteio, CoNnsTRUCAO Do CICLO: While [Palavra-chave que indica o inicio do ciclo While- Wend [Num_Lotaria > Aposta [Condicdo teste utilizada para determinar 0 terminus da realizagdo do ciclo. Se esta condi for Verdadeira executa as instrugdes que esto Jdentro do While- Wend, se for Falsa a execugio ldo ciclo é terminada tendo o programa sequéncia Inas instrugdes que seguem a palavra chave Wend. [Num _Lotaria = Int (9 * Rnd0 +1) [Instrugao a realizar de cada vez que o ciclo € lexecutado. Temcomo fungdo gerar nimeros laleatérios entre 1 € 10, Num_Lane=Num_Lane +1 nstrugao a realizar de cada vez que 0 ciclo € lexecutado. Tem como fungao fazer a contagem lde quantos langamentos foram realizados até se lobter o valor da aposta. Beep instrugao a realizar de cada vez que 0 ciclo € lexecutado. Tem como fungdo apitar em cada sorteio. Wend [Palavra Chave que indica o fim de um ciclo | While- Wend. iscTe/ CTT Tia Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) TRADUCAO INTEGRAL While Num _Lotaria <> Aposta Numi_Lotaria = Int (9 * Rnd) + 1) Num_Lane = Num_Lane +1 Beep Wend Enquanto © niimero sorteado ndo for igual ao valor da aposta, o sorteio continua, o que implica sortear um niimero contabilizar 0 ntimero de sorteios realizados e apitar para que 0 utilizador tenha a percepgdo do que est a ser realizado. Funcionamento do Ciclo Existe uma fase de inicializagao das variéveis envolvidas na condigdo — Teste para garantir 0 correcto funcionamento do ciclo. Avalia a condigdo teste e se for verdadeira executa todas as instrugdes até a palavra-chave ‘Wend voltando de novo a avaliagdo da condigdo, se for falsa prossegue a execugdo da rotina nas instrugdes que se localizam depois da palavra-chave Wend. Perigos associados a utilizagao do ciclo While-Wend ‘© Mé ou inexisténcia de inicializagao das varidveis envolvidas na condigao-teste. ‘© Garantir que as varidveis envolvidas na condigao teste poderio ter valores diferentes por cada vez. que o cielo seja executado. © Garantir que em algum momento a condi execugao. fo teste & falsa eo ciclo termina a sua © A tio verificagdo destas condigdes implicaré que o ciclo nao tenha fim — Cielos Infinitos iscTE/ DCT ‘907122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Qutra Aplicacado Pretende-se realizar um jogo de geografia, Tente compreender o seu funcionamento [ese Derr a Gesaradia) Biss Kecsgeartagas o| a2 Serse Wile Resultado = Tee dod Contador é Ulound (A Geozeatiny 1) Figura 31 - Cozpe do jogo [owe I Peer Soonete Bi Function Peguntn Googentin(byal Capital, ByVal Prist Suite Pate Feop0ste © Uoase(Peio|| set Fergunca Soogratia aie Hazposta ~ Uase(Japstbox Testo Percuata, "Becgesfia")) Figura 32 — Fungo Auxiliar iscTe7DCTT OTR Luisa. Domingues@iscte pt Excel - Macros e Visual Basic for Applications (versao Draft) Do - Loop similar 4 estrutura do While-Wend. Contudo fornes que estio limitadas aquela estrutura: duas possibilidades * Do Loop permite posicionar a condi io ou fim do loop, a condigio no fim do Loop evita uma inicializagao prévia do valor das variéveis envolvidas na condigao teste, dado que essa inicializagio pode ser feita no decurso do ciclo com valores reais. * Do Loop permite ainda especificar se 0 loop se vai realizar enquanto @vhile) uma expresso for verdadeira ou até que (until) a condigdo seja verdadeira (facilidade conseguida através do operador Not) Sintaxe Podera ser: Do [{While | Until} ] Loop Ou entio: Do Loop| { Whi | Until} ] iscTE/ DCT 7122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Aplicacdes Praticas # Utilizando a condigio teste no inicio do Loop e com a palavra While Tecron DIleere wenae Dis dpeste a2 Integer Grecia s TrpucBox(*zncroauce «sum ayoota + (entee 4 © 0) Ines Semel) + 4) Figura 33 ~ Condiglo teste no inicio— com While % Utilizando a condigao teste no inicio do Loop e com a palavra Until ee Figura 34 ~ Condigdo teste no inicio com Until iscTE7DcTT Ba Luisa Domingues@iscte pt Excel - Macros e Visual Basic for Applications (versao Draft) ¢ Utilizando a condigao teste no fim do Loope com a palavra Until [ener Tee ewan Joorte = InputSox("Introduze a sua sposta | (entze 2 © 201%) Nowtotaria s Ine|9 + Foal) +3 Figura 35 — Condigao teste no fim — com Until izando a condigio teste no fim do Loop ¢ com a palavra While j= Denner =| Dim arosea to Taveger spoota = tapuctox("Tnsxedues a sua aposts | (entre 1 © 10") us torarte = Teo * Radll + 1) agucs "A aus sposta fa4 conseguise depen de" 6 thay Lane &" Jenganeacoor Figura 36 ~ Condigao teste no fim — com While IsCTE/ DCT 947122 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) SELECT CASE Permite a escolha de um percurso mediante a avaliagdo de n condigdes. E de extrema utilidade para evitar os If’s encadeados, dando um maior grau de legibilidade e simplicidade ao cédigo construido, Sintaxe Select Case [Case [Instrugdes a realizar] [Case Else [Instrugdes a realizar na situagdo residual]] End Select isctE/ DCT 957122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Aplicacao Pratica Recordem o proceso resolvido com recurso a If ~Then -Else— Elself (figura 23) Mais facilmente seria resolvido com recurso 4 estrutura Select Case [creat Deere sh ciaase_reeese ale = Tepntox("Dwceoduoa @ idader *, *Clasciticsato Boartam "wo babe." , "Clneesticasto Teseiet Megtox "hue criange.t, , "Ciassiticagto Fedrtar Figura 37 — Aplicagdo da estrutura Select Case & rotina Classe_Btaria iscTE/ DCT 967122 Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséio Draft) CONSTRUCAO DA ESTRUTURA Select Case Palavras-Chave que indicam o inicio de um controlo Select Case Tdade Expressio sujeita a teste, i.c., variavel cujo conteido esté a ser avaliado. Esta varidvel vai ser comparada sucessivamente pelos valores __alternativos apresentados nas instrugdes Case , encontrar 9 valor nalguma dessas opgdes Case executard as linhas de cédigo que ai terdo inicio até a opgdo de Case seguinte, Caso o valor da varidvel a ser comparada no corresponda a nenhum valor apresentado nas opgdes Case, existe uma opgaio Case especial - Case Select - para os restantes valores, neste caso serdo executadas todas as instrugdes que localizem entre o Case Else e 0 Case Select, Case Is ou Case Is< Case Is< Expressdes Case. Se 0 valor da wridvel for igual a qualquer um dos valores apresentados em cada uma destas expresses, 0 fluxo de exccugdo terd continuidade na linha abaixo da expressio case que faz 0 matching, até que uma nova expressiio case seja encontrada, Sendo que nessa altura termina 0 controlo Select Case dando continuidade a0 programa nas instrugdes que se seguirem ao End Select. Case Else Seri a instrugao Case residual, seleecionada somente se nenhuma das outras o tiver sido, Neste caso serao realizadas todas as instrugdes de cédigo que se Ihe seguirem até & expresso End Select. Findo 0 qual guird todas as instrugdes apés 0 controlo Select case. End Select Palavra-Chave que indica o fim do controlo Select Case, isctE/ DCT Luise. Domingues@iscte.pt 7 122 Excel - Macros e Visual Basic for Applications (versao Draft) For - EACH - NEXT A estrutura For-each-next é de longe a mais potente do VBA. De facto permite executar uma determinada instrugao em todos os elementos de uma colecgdo de objectos, ou em todos os elementos de um array. Esta estrutura quando aplicada em arrays ndo funciona para a actualizagdo dos valores do array, mas somente para a extracgdo do seu contetido. Contudo quando aplicada a col de objectos pode sé-lo para alteragao das suas propriedades ou extracgao de valores. Sintaxe For Each In Next iscteypeTr WRT Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Aplicaces Praticas UTILIZANDO ARRAYS Pretende-se inicializar um array com um conjunto de 5 paises ¢ posteriormente visualizar os elementos introduzides. [roo Ei monenner ship taiciaites Aevay() Dis aeray Fausts)_ a> seine tion sWeace pease devecd tnccoducit © aoe de S yataes 1 Yoox "H¥ipigso op eeneacoe Inceoduendoa 1" Figura 38 — Exemplo ndo-funcional Repare que o exemplo, podera estar conceptualmente correcto, mas nao funciona devido a restrigdo do For-Each-Next para a alterago de valores de arrays — tarefa impossivel de realizar. A alternativa poderia ser, a exibida na figura 39: = Eons tw uw Atesg Faio(s) 80 scram For Conendor ='3 To Wound (hreny Pais) Meebon Peis Figura 39 Alterago da sub-rotina Inicializa_Array iscTE/ DCT 997122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséo Draft) Construgao do Ciclo For Each Palavras-Chave que indicam 0 inicio de um controlo For-Each Pais Variavel & qual vio ser atribuidos sucessivamente todos os elementos do grupo de objectos. Este grupo pode ser constituido por uma array ou uma colecgio de objectos. Sendo que se se tratar de um array esta varivel devera ser do tipo Variant. Se se tratar de uma colecco, esta varidvel poderd assumir 0 tipo Variant, 0 tipo Object genérico ou o tipo Object especifico que corresponde ao tipo de objectos a que a colecgdo remete. Tr Palavra-chave que separa a variavel do grupo. ‘Array_Pals Grupo de elementos a tratar. Poderd ser um array ou uma colecgdo de objectos. O ciclo sera executado tantas vezes quantos os ekmentos constantes do grupo. Na primeira iteragdo, a varidvel assume o valor do primeiro item do grupo, como tal em cada loop este valor seré actualizado pelo item seguinte. MsgBox Pais Tastrugao @ realizar em cada volta do ciclo, Sendo que em cada volta a variavel Pais teré um elemento diferente. Next Palavra-chave que indica o fim do loop. Neste momento o programa terd continuagao na instrugdo For Fach correspondente se a varivel no corresponder ao tiltimo item do grupo, caso contrério sairé da instrugdo For EackNext prosseguindo a execugdo da rotina na linha de cédigo abaixo do Next. iscTE/ DCT Luise. Domingues@iscte.pt 1007 122 Excel - Macros e Visual Basic for Applications (versao Draft) UTILIZANDO COLECCOES DE OBJECTOS = Heo so core 380) Megbot "sta a visualizer a Sheet como agus: " ¢ Sheet.Neoe Figura 40 ~ Rotina para atribuir nomes as WorkSheets do Exee! [roo EI ee Workebeetott) -felect ane Basel HIS") = 2 yo snc cote to mag asso Figura 41 ~ Rotina para demonstrar o manuseamento de ranges isctE/ DCT Tor? 123, Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verso Draft) Coleccgoes de Objectos e Objectos iscTE/ DCT Excel - Macros e Visual Basic for Applications (versao Draft) O QuE SAO OBJECTOS ? Objectos sio elementos caracterizados por um conjunto de propriedades, ¢ que tém subjacente um determinado comportamento. Por exemplo, uma janela do windows ¢ um. objecto, caracterizada por um nome, um titulo, uma dimensdo, um posicionamento dentro do écran,..., € tem um comportamento inerente, pode ser aberta, fechada, minimizada, maximizada, escondida, redimensionada, Seguindo esta légica podemos identificar alguns objectos do ambiente de trabalho Windows: 0 botdo, 0 grafico, 0 menu, o documento, a imagem, a textbox, a formula, 0 workbook, a worksheet, a célula, o conjunto de células de uma worksheet... OBJECTOS: PROPRIEDADES, METODOS E EVENTOS Proprieda des ‘As propriedades dos objectos constituem o conjunto de caracteristicas que o definem. Por exemplo: nome, cor, dimensdo, designacao, valor contido, Métodos Os métodos traduzem o comportamento de um objecto. Estes métodos representam procedimentos que executam uma determinada tarefa, que pode ser complementada através da passagem de argumentos ou parametros. isctE/ DCT TOs? 123, Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) Eventos Eventos ou acontecimentos, representam todas as actividades que envolvam 0 objecto ¢ que normalmente directa ‘ou indirectamente so despoletadas pelo utilizador. Por exemplo: abrir ou fechar um workbook, clicar sobre um botdo ou worksheet, alterar 0 contetido de um elemento, Estes eventos servem para que possamos activar uma determinada tarefa aquando da sua ocorréncia, 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 0 objecto ThisWorkBook. Na janela de edigGo 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 edigdo cujo nome seré Workbook _Open, tudo 0 que escrever no seu conteiido seré executado quando 0 documento for aberto, neste caso indique o nome da macro que criou anteriormente. isctE/ DCT Toa? 123, Luise Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (verséo Draft) OBJECTOS MAIS UTILIZADOS NO EXCEL Os Objectos mais utilizados no Excel Application io: Application, WorkBook, WorkSheet e Range Application & 0 objecto de topo hierarquico, representa o préprio Excel PROPRIEDADES Propriedades Caption Mengcao exibida na barra de titulos do Excel DisplayAlerts ‘TRUE — as mensagens de alerta sio exibidas durante a execugdo da subrotina. False caso contrario. Path ‘Nome da directoria onde o Excel esta instalado. ScreenUpdating [rue — altera o écran consoante a subrotina que executa. Caso contrario, o écran nao é alterado durante a execugao da subrotina. WindoWorkSheetState | 0 estado da janela da aplicaga ‘XINormal — janela tamanho normal XIMaximized — janela tamanho maximizado XIMinimized — jancla com tamanho minimizado DisplayStatusBar Mostra ou esconde a StatusBar. True— exibe DisplayFormulaBar Mostra ou esconde a Barra de Formulas True exibe iscTE/ DCT Luise. Domingues@iscte.pt 1057 122 Excel - Macros e Visual Basic for Applications (versao Draft) METopDos Métodos Calculate Implica 0 calculo de todas as formulas de todas as WorkSheet e WorkBookS abertos. Argumentos : ndo tem Help Exibe um topico do Help de um determinado ficheiro de Help. Argumentos Helpfile: nome do ficheiro, incluindo a path se necessario Helpcontextid: niimero que faz referéncia ao indice de help Quit Fecha aplicagaio Excel. (se a propriedade Display alerts estiver com 0 valor False, 0 Excel nao propord a gravagdo de alteragdes nos ficheiros) Argumentos : nfo 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 necesita para ser executada — argl:=, arg2:=,, sore] CTT T6r Luise. Domingues@is cte-pt Excel - Macros e Visual Basic for Applications (versao Draft) WorkBook 0 Objecto WorkBook, na hierarquia de objectos segue de imediato 0 objecto application e representa um ficheiro de Excel. PROPRIEDADES Propriedades ‘Name ‘Nome do ficheiro. Nao permite a alteragao do nome, para isso é necessario proceder ao Save/As Path Directoria onde o ficheiro se encontra Saved Tue — se néio houve nenhuma alteragdo no ficheiro desde a Ultima gravagdo False — caso contritio Exemplo: If not(active Workbook Saved) Then ActiveWorkbook Save End If iscTE/ DCT 1077 12 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) METopDoS Métodos Activate ‘Activa um documento aberto. Equivalente a ir a0 Window e Seleccionar um documento aberto, trazendo-o para a janela principal do Excel Argumentos: no tem Close Fecha um documento Argumentos: SaveChanges — se True, 0 documento ¢ gravado antes de ser fechado; False caso contririo FileName — se 0 argumento SaveChanges estiver a TRUE, 0 WorkBook ¢ gravado com o nome aqui indicado RoutWorkBook — se TRUE ¢ 0 WorkBook tiver enderegos para envio atributdos, envia o ficheiro por e-mail antes de fechar, caso contrario nao. Protect Protege um documento contra qualquer tipo de alteragao Argumentos: Password: Password a utilizar na protec Structure: True protege também a estrutura WindoWorkSheet: True a estrutura do WorkBook na janela protegida Save Grava 0 WorkBook Arguments: Nao Tem SaveCopyAs | Cria uma cépia do documento em questio Argumentos FileName: nome da cépia pretendida para o ficheiro iscTE/ CTT 087 122 Luisa.Domingues@isete-pt Excel - Macros e Visual Basic for Applications (versao Draft) WorkSheet Na hierarquia situa-se abaixo do objecto WorkBook, uma vez que um WorkBook é constituido por um conjunto de WorkSheets. PROPRIEDADES Propriedades Index Indice de uma WorkSheet num WorkBook ‘Name Nome da WorkSheet. UsedRange ‘Traduz o range na WorkSheet que contém dados. Visible Thue — estd visivel False — esti escondida, mas o utilizador pode vizualizé-la recorrendo ao Menu Format XiVeryHidden — esté escondida e ninguém a pode visualizar, a menos que volte a aplicar uma subrotina que a coloque visivel. iscTE/ DCT 1097 122 Luise. Domingues@iscte.pt Excel - Macros e Visual Basic for Applications (versao Draft) METoDos Métodos ‘Activate ‘Activa uma determinada WorkSheet. Equivalente a estarmos a trabalhar num WorkBook e clicarmos nela para visualizarmos 0 seu contetdo. Argumentos: Nao Tem Calculate Provoca o calculo de todas as férmulas constantes da WorkSheet Argumentos: Nao Tem Delete ‘Apaga uma WorkSheet do WorkBook. Argumentos: Nao Tem. Protect Protege uma WorkSheet contra qualquer tipo de alteragao Argumentos: Password: Password a utilizar na protecgao DrawingObjects: True- protege os objectos grificos Contents - Truc- protege as células ¢ contetidos Scenarios — True — protege os cendrios afectos 4 WorkSheet UserInterfaceOnly — True — protege os interfaces contra alteragdes apesar de poder alterar as subrotinas Cell Referéncia uma célula, através dos seus indices numéricos. Argumentos: Numero da Linha Numero da Coluna Ex: Célula C5 serd representado por Cells( 5, 3) sore DCT Tro Luise. Domingues@iscte.pt

Você também pode gostar