Excel - Macros e Visual Basic

download Excel - Macros e Visual Basic

of 122

Transcript of Excel - Macros e Visual Basic

  • 8/14/2019 Excel - Macros e Visual Basic

    1/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 1 / [email protected]

    ndice

    MACROS .........................................................................................................................................................................5

    OQUE UMA MACRO?................................................................................................................................................ 6CRIAR MACROS............................................................................................................................................................ 6

    Gravar uma Macro .................................................................................................................................................6

    Exerccio................................................................................................................................................................ 8Procedimento BackGround do Excel ..................................................................................................................... 9Programao em Visual Basic for Applications.............................................................................................10

    EXECUTAR UMA MACRO...........................................................................................................................................12Tecla de Atalho Shortcut Key..........................................................................................................................12Boto na Toolbar..................................................................................................................................................13

    Associar uma Macro a um Boto.........................................................................................................................13Dissociar uma Macro de um Boto .....................................................................................................................15

    Run...........................................................................................................................................................................16Comando no Menu................................................................................................................................................17

    Associao de uma Macro a um Comando do Menu ..........................................................................................17Dissociao..........................................................................................................................................................19

    Editor de Visual Basic for Applications............................................................................................................20REMOVER MACROS....................................................................................................................................................21

    Remoo de Macros em Ambiente Excel..........................................................................................................21Remoo de Macros no Editor de VBA.............................................................................................................21

    EDITOR DE VISUAL BAS IC FOR APPLICATIONS....................................................................................22

    PROJECT EXPLORER...................................................................................................................................................24PROPERTIES WINDOW................................................................................................................................................26JANELA DE EDIO....................................................................................................................................................27OBJECT BROWSER......................................................................................................................................................28HELP ON-LINE ............................................................................................................................................................28AS CORES DO VBA....................................................................................................................................................29

    FUNES E SUBROTINAS ...................................................................................................................................30

    SUBROTINAS...............................................................................................................................................................32

    Definio de SubRotinas .....................................................................................................................................32Trabalhar no Editor de VBA Criar uma SubRotina....................................................................................33Execuo de uma SubRotina...............................................................................................................................34

    FUNES......................................................................................................................................................................34Definio de Funes...........................................................................................................................................34Definio do tipo de parmetros e do tipo da funo....................................................................................35Trabalhar no Editor de VBA Criar uma Funo.........................................................................................36Execuo de uma Funo....................................................................................................................................37

    Execuo dentro de uma Clula ..........................................................................................................................38Execuo dentro de uma Rotina ..........................................................................................................................40

    DIFERENAS ENTRE FUNES E ROTINAS..............................................................................................................42REGRAS PARA A PASSAGEM DE PARMETROS........................................................................................................42

  • 8/14/2019 Excel - Macros e Visual Basic

    2/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 2 / [email protected]

    VARIVEIS ..................................................................................................................................................................43

    MANUSEAMENTO COM VARIVEIS..........................................................................................................................44O que so variveis?............................................................................................................................................44

    Assignao de valores a variveis:...................................................................................................................45Utilizao de variveis como se fossem valores: ............................................................................................45

    TIPOS DE VARIVEIS ..................................................................................................................................................46DECLARAO DE VARIVEIS ...................................................................................................................................47VARIVEIS VANTAGENS DA UTILIZAO............................................................................................................47VARIVEIS DO TIPO OBJECTO..................................................................................................................................48

    Declarao da Varivel Objecto........................................................................................................................48Atribuio de uma varivel Objecto..................................................................................................................48Utilizao Genrica da Varivel Objecto........................................................................................................49Utilizao Especifica da Varivel Objecto ......................................................................................................49

    VARIVEIS DECLARAO OPCIONAL E O TIPO VARIANT .................................................................................51Os Prs e Contras da Utilizao do tipo Variants .........................................................................................51

    Prs ......................................................................................................................................................................51

    Contras.................................................................................................................................................................51Variveis Declarao Forada.......................................................................................................................52VARIVEIS TIPOS DEFINIDOS PELO UTILIZADOR - ESTRUT URAS.......................................................................53

    Definio do Tipo .................................................................................................................................................53Utilizao das Estruturas de Dados..................................................................................................................54

    VARIVEIS ARRAYS ...............................................................................................................................................55O que um Array ? ..............................................................................................................................................55

    Array Uni-Dimensional .......................................................................................................................................55Array Bi-Dimensional ......................................................................................................................................... 56

    Declarao de um array......................................................................................................................................57Arrays Uni-dimensionais .....................................................................................................................................57Arrays Bi-dimensionais .......................................................................................................................................57

    Utilizao de um Array........................................................................................................................................58Para aceder ao elemento......................................................................................................................................58Atribuio de valores...........................................................................................................................................58

    Option Base e Array Bounds...............................................................................................................................59

    CONSTANTES .............................................................................................................................................................60

    OQUE SO CONSTANTES ?........................................................................................................................................61

    INPUTBOX E MSGBOX ..........................................................................................................................................62

    O QUE SO ?................................................................................................................................................................63INPUT BOX ...................................................................................................................................................................63

    O que faz .............................................................................................................................................................63Sintaxe.....................................................................................................................................................................63Parmetros.............................................................................................................................................................64

    MSGBOX......................................................................................................................................................................65O que faz .............................................................................................................................................................65Sintaxe.....................................................................................................................................................................65Parmetros.............................................................................................................................................................66Valores Produzidos...........................................................................................................................................69

    DOMNIO DAS VARIVEIS, CONSTANTES E ROTINAS........................................................................70

    OQUE O DOMINIO?..................................................................................................................................................71DOMNIO DAS VARIVEIS.........................................................................................................................................71

    mbito do Procedimento .....................................................................................................................................72mbito do Mdulo ................................................................................................................................................73mbito do Projecto...............................................................................................................................................74

    DOMNIO DAS CONSTANTES.....................................................................................................................................75mbito do Procedimento .....................................................................................................................................75

  • 8/14/2019 Excel - Macros e Visual Basic

    3/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 3 / [email protected]

    mbito do Mdulo ................................................................................................................................................76mbito do Projecto...............................................................................................................................................76

    DOMNIO DE SUBROTINAS E FUNES...................................................................................................................77

    ESTRUTURAS DE CONTROLO ..........................................................................................................................78OQUE SO ESTRUTURAS DE CONTROLO? ...............................................................................................................79QUAIS AS ESTRUTURAS......................................................................................................................................... 79IF-THEN-ELSE.............................................................................................................................................................80

    Funo IF do Excel ..............................................................................................................................................80Sintaxe da Estrutura If-Then-Else......................................................................................................................80Aplicao Prtica .................................................................................................................................................81A instruo adicional ElseIf...............................................................................................................................83

    Aplicao Prtica .................................................................................................................................................83FOR NEXT.................................................................................................................................................................84

    Sintaxe.....................................................................................................................................................................84Aplicao Prtica .................................................................................................................................................84

    A Funo das Variveis:......................................................................................................................................85

    Construo do Ciclo: ...........................................................................................................................................85Traduo Integral.................................................................................................................................................86Funcionamento do Ciclo:....................................................................................................................................86Perigos associados utilizao do ciclo For-Next:.......................................................................................86Outra Aplicao....................................................................................................................................................87

    WHILE-WEND.............................................................................................................................................................88Sintaxe.....................................................................................................................................................................88Aplicao Prtica .................................................................................................................................................88

    A Funo das Variveis:......................................................................................................................................89Construo do Ciclo: ...........................................................................................................................................89Traduo Integral.................................................................................................................................................90

    Funcionamento do Ciclo .....................................................................................................................................90Perigos associados utilizao do ciclo While-Wend...................................................................................90Outra Aplicao....................................................................................................................................................91

    DO LOOP...................................................................................................................................................................92Sintaxe.....................................................................................................................................................................92Aplicaes Prticas..............................................................................................................................................93

    SELECT CASE..............................................................................................................................................................95Sintaxe.....................................................................................................................................................................95Aplicao Prtica .................................................................................................................................................96

    Construo da Estrutura.......................................................................................................................................97FOR EACH NEXT...................................................................................................................................................98

    Sintaxe.....................................................................................................................................................................98Aplicaes Prticas..............................................................................................................................................99

    Utilizando Arrays.................................................................................................................................................99Construo do Ciclo...................................................................................................................................... 100

    Utilizando Coleces de Objectos..................................................................................................................... 101

    COLECES DE OBJECTOS E OBJECTOS ............................................................................................... 102O QUE SO OBJECTOS ?...........................................................................................................................................103OBJECTOS:PROPRIEDADES,MTODOS E EVENTOS............................................................................................103

    Propriedades ......................................................................................................................................................103Mtodos...............................................................................................................................................................103Eventos.................................................................................................................................................................104

    OBJECTOS MAIS UTILIZADOS NO EXCEL...............................................................................................................105Propriedades ...................................................................................................................................................... 105Mtodos.............................................................................................................................................................106Propriedades ...................................................................................................................................................... 107Mtodos.............................................................................................................................................................108Propriedades ...................................................................................................................................................... 109

  • 8/14/2019 Excel - Macros e Visual Basic

    4/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 4 / [email protected]

    Mtodos.............................................................................................................................................................110Propriedades ...................................................................................................................................................... 111Mtodos.............................................................................................................................................................112

    OBJECTOS SINGULARES VS COLECES DE OBJECTOS..........................................................................113

    INDEXAO DE COLECES POR NMERO OU NOME..........................................................................................114Indexao com Base em Nmeros ..................................................................................................................114Indexao com Base no Nome .........................................................................................................................115

    Vantagem........................................................................................................................................................... 115O Objecto Range uma excepo..................................................................................................................116

    Tratamento como objecto: .................................................................................................................................116Tratamento como coleco de objectos:............................................................................................................116

    REFERNCIA IMPLCITA...........................................................................................................................................117Declarao implcita da aplicao: ............................................................................................................... 117Declarao implcita do WorkBook:..............................................................................................................118Declarao implcita da WorkSheet:.............................................................................................................118Nvel de referncia a privilegiar..................................................................................................................... 119

    MISCELLANEOUS .................................................................................................................................................120

    AINSTRUO WITH.................................................................................................................................................121Aplicao Prtica ..............................................................................................................................................121

    OUTRAS FUNES TEIS DO VBA ........................................................................................................................122

  • 8/14/2019 Excel - Macros e Visual Basic

    5/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 5 / [email protected]

    MMaaccrrooss

  • 8/14/2019 Excel - Macros e Visual Basic

    6/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 6 / [email protected]

    O QUE UMAMACRO?Uma macro um pequeno programa que contm uma lista de instrues a realizar noExcel. Como sendo um repositrio de operaes, uma macro pode executar um conjuntode 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 ocomputador as possa entender, essa linguagem designada por VBA Visual Basic forApplications.

    CRIARMACROS

    Existem duas possibilidades de criao de macros:

    Atravs do Gravador de Macros Utilizando o editor e programando em Visual Basic for Applications

    Gravar uma Macro

    1. Tools / Macro / Record New Macro. O Excel exibir a caixa de dilogo da fig.1.

    Fig.1 caixa de dilogo para a gravao de macros.

  • 8/14/2019 Excel - Macros e Visual Basic

    7/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 7 / [email protected]

    2. O nome da Macro ser constitudo por um conjunto de caracteres que identificaro aMacro e a sua funcionalidade.

    3. Shortcut Key composto por uma combinao de teclas que podero ser utilizadaspara executar uma macro.

    4. Opte por armazenar a macro numa das seguintes alternativas: This Workbook, NewWorkbook ou Personal Workbook, sendo que cada uma corresponde a macros dembito diferente. Assim devero armazenar a macro na opo ThisWorkBook paraque ela esteja activa sempre que o documento estiver aberto, e para que ela estejaarmazenada no prprio ficheiro no correndo o risco de ficar armazenada nas Macrosdo Excel. (na rede do ISCTE impossvel gravar a macro no Personal WorkBook.)

    5. No campo Description, introduza um comentrio funo este poder serimportante para que no seja esquecido o respectivo objectivo e funcionalidade.

    6. Clique em OK para iniciar a gravao da macro neste momento ser exibida umatoolbar semelhante da figura 2, e o cone do rato ser transformado numa cassete,indicando o estado de gravao.

    Fig.2 Toolbar exibida para a gravao de macros.

    7. Na toolbar Stop Record, existem dois botes: Stop Recording e Relative Reference O boto de Stop Recording termina a gravao da macro, o boto de RelativeReference selecciona o modo de gravao da macro se feito com base emreferncias relativas (boto seleccionado) ou referncias absolutas.

    8. No caso da toolbar Stop Record desaparecer, poder voltar a exibi-la fazendo nomenu a sequncia: View / Toolbars / Stop Record (seleccione a toolbar). Caso atoolbar 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, oque significa que quando for executar a macro, esses procedimentos sero efectuados.

  • 8/14/2019 Excel - Macros e Visual Basic

    8/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 8 / [email protected]

    EXERCCIO

    Objectivo: Gravar uma macro testando a diferena entre a execuo de macros comreferncias absolutas e relativas.

    1 Fase: Macro com referncias Absolutas

    1. Accione a gravao da macro. Atribua-lhe o Short Key Ctrl+P2. Certifique-se que o boto Relative Reference est desactivado.3. Clique na clula B3.4. EscrevaISCTE5. Formate a clula para Bold, Itlico, tamanho 18, Small Caps, (utilize o Format /

    Font)6. Na clula B4 escreva: Av. Foras Armadas7. Na clula B5 escreva: 1700 Lisboa8. 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 P12.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+R3. Seleccione o boto Relative Reference.4. EscrevaISCTEna 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 Armadas7. Na clula D7 escreva: 1700 Lisboa8. 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 R12.O que aconteceu ? Porqu ?

  • 8/14/2019 Excel - Macros e Visual Basic

    9/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 9 / [email protected]

    PROCEDIMENTOBACKG ROUND DO EXCEL O Excel quando se grava uma macro cria um objecto designado por module no workbookonde 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 / Macros2. Selecciona-se a Macro e Clica-se no boto Edit3. 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 textonormal: 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.

  • 8/14/2019 Excel - Macros e Visual Basic

    10/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 10 / [email protected]

    Programao em Visual Basic for Applications

    1. Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual BasicEditor (para se familiarizar mais com o editor consulte o capitulo Editor Visual Basicfor Applications e o capitulo Funes e SubRotinas)

    Figura 3 Editor de Visual Basic for Applications

    2. Para inserir um mdulo faa Insert / Module isto porque as macros que construirdevero ser escritas dentro de um mdulo (repare na Figura 3 que o Module 1 estseleccionado na janela de projecto e do lado direito tem-se uma rea de edio ondepoder-se-o escrever as macros a executar)

  • 8/14/2019 Excel - Macros e Visual Basic

    11/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 11 / [email protected]

    3. Pode agora programar os procedimentos manualmente ou com recurso a algumasfuncionalidades do Editor:

    a) Insert / Procedure insere um procedimento para o qual dever indicar o tipo deprocedimento.

    b) Quando estiver a introduzir as variveis haver de ser exibida a lista de tipos devariveis possvel.

    4. Sempre que precisar de construir uma macro mais ou menos complicada, se noconhecer muito de VBA poder comear por gravar no EXCEL pequenas macros comoperaes muito simples e depois no editor de VBA tentar compreender a suafuncionalidade e assim construir uma macro cada vez mais complexa, completa e

    adequada s suas exigncias.

    5. Poder em cada macro fazer uma chamada a uma outra macro, bastando para talescrever o respectivo nome.

    6. No Editor de Visual Basic for Applications poder encontrar ajuda para odesenvolvimento do seu procedimento. Assim:

    6.1. Clique no cone do Object Browser ou View/Object Browser ou F26.2. Na Caixa de Drop-Down onde aparece referido , seleccione aaplicao 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 omanuseamento da aplicao seleccionada. A classe especial designada por Globalsrefere-se s funes que esto disponveis na aplicao independentemente dosobjectos seleccionados.

    6.4. Seleccione um dos objectos e visualize do lado direito os Members of

    6.5. Para cada membro da classe dispe de um help on-line que o esclarece sobre arespectiva funo e funcionamento, dando exemplo que poder testar. Para tal bastaclicar sobre o boto de Help da janela do Object Browser.

  • 8/14/2019 Excel - Macros e Visual Basic

    12/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 12 / [email protected]

    EXECUTAR UMA MACROA 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

    Tecla de Atalho Shortcut Key

    A associao a teclas de atalho realizada aquando da criao da macro.

  • 8/14/2019 Excel - Macros e Visual Basic

    13/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 13 / [email protected]

    Boto na Toolbar

    AS S OCIAR UMA MACRO A UMB OTO

    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)

    Fig.4 caixa de dilogo para assignao de boto a macros

  • 8/14/2019 Excel - Macros e Visual Basic

    14/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 14 / [email protected]

    4.Na rea respeitante aos Commands sero exibidos dois itens: Custom Menu Item eCustom Button. Seleccione este segundo e arraste-o com o rato at Toolbar onde opretende inserir. Ateno s poder inserir o boto quando o ponteiro do rato ficarcom a forma I. Nesse momento libertar o boto do rato utilizado para o arrastamentoe verificar que ser criado um novo boto.

    5. Na janela de Customize poder ainda utilizar dois botes que se encontram na rea doSelected Command:

    a) Description que exibe um texto explicando o que o comando seleccionadofaz.

    b) Modify Selection semelhante ao clique sobre o boto criado, exibe umasrie de tarefas possveis para configurao do boto ( ver operaesseguintes).

    Fig.5 Menu para configurao do boto da toolbar

  • 8/14/2019 Excel - Macros e Visual Basic

    15/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 15 / [email protected]

    6.Clique sobre o boto Modify Selection- abrindo um menu de tarefas possveis para aconfigurao do boto Ver Figura 5

    a) No ltimo agrupamento de configuraes possveis existe uma opodesignada por Assign Macro. Esta opo permite indicar qual a macro quedever ser executada sempre que se clica no boto.

    b)No terceiro agrupamento existem 4 estilos diferentes de exibir o boto: s comtexto, com texto e imagem ou somente com imagem. Se seleccionar o estiloTexto e Imagem, ser exibido no boto para alm da imagem o nomeassociado ao boto.

    c) Na opo Name indique o nome que pretende ver associado ao boto, pordefeito aparece o nome da macro. (repare que aparece um & atrs da letra queaparece a sublinhado)

    d)Para alterar a imagem associada ao boto poder: optar por uma imagemdiferente, alterar a que est a visualizar ou a construir a sua. Para isso cliquesobre a tarefa de Change Button Image, seleccione o logotipo pretendido, senenhum o satisfizer e pretender criar o seu seleccione o logotipo que representaum quadrado vazio. Para o poder (re)desenhar a imagem, na lista de tarefasdisponibilizada pelo boto Modify Selection opte por Edit Button Image e crie

    a sua imagem que poder reeditar.

    D ISSOCIAR UMA M ACRO DE UMB OTO

    1. Tools / Customize2. Arraste o boto da toolbar at ao documento3. Solte-o

  • 8/14/2019 Excel - Macros e Visual Basic

    16/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 16 / [email protected]

    Run

    1.Tools / Macro / Macros2.Na caixa de dilogo Macros selecciona-se a macro pretendida na lista da Macro Name

    (Figura 6)

    3. Clique sobre o boto Run

    Fig.6 Janela para seleco da macro a executar

  • 8/14/2019 Excel - Macros e Visual Basic

    17/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 17 / [email protected]

    Comando no Menu

    AS S OCIAO DE UMA MACRO A UMCOMANDO DOMENU

    1. View / Toolbars / Customize2. Na janela do Customize encontra-se no Commands Tab3. Seleccione a categoria Macro4. 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 porexemplo pode introduzir numa das listas de opes do menu (File, View,) ou entocriar como uma nova opo do Menu..

    Fig.7 Caixa de dilogo para atribuir uma macro a um comando do menu

  • 8/14/2019 Excel - Macros e Visual Basic

    18/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 18 / [email protected]

    5. Se pretender criar uma nova lista no menu dever :a) Seleccionar a categoria New Menub) Na rea dos Commands ser exibida a opo New Menu, que dever arrastar at

    barra dos menusc) Poder alterar o seu nome clicando no boto de Modify Selectiond) 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 reado Selected Command:

    c) Description que exibe um texto explicando o que o comando seleccionadofaz.

    d) Modify Selection semelhante ao clique sobre o menu ou comando de menucriado, exibe uma srie de tarefas possveis para configurao (Ver o item 6do captuloAssociar uma Macro a um Boto)

  • 8/14/2019 Excel - Macros e Visual Basic

    19/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 19 / [email protected]

    D ISSOCIAO1. Tools / Customize2. Arraste o Menu ou Comando do Menu at ao documento e solte-o

  • 8/14/2019 Excel - Macros e Visual Basic

    20/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 20 / [email protected]

    Editor de Visual Basic for Applications

    1. Tools / Macro / Visual Basic Editor - para aceder ao Editor2. Posicionando-se no corpo de uma macro, na janela do lado direito inferior, poder

    executar a macro atravs de: Run / Run Sub-UserForms (figura 9) ou boto Run.

    Fig.9 Execuo de uma macro no Editor de Visual Basic for Applications

  • 8/14/2019 Excel - Macros e Visual Basic

    21/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 21 / [email protected]

    REMOVERMACROSA remoo das macros poder ser feita:

    no ambiente Excel, ou no Editor de VBA

    Remoo de Macros em Ambiente Excel

    1.Tools / Macro / Macros2.Selecciona-se a Macro a remover3.Clica-se no boto Delete4.Pede a confirmao e apaga se confirmar

    Remoo de Macros no Editor de VBA

    2. Tools / Macro / Visual Basic Editor - para aceder ao Editor3. Podem-se apagar as macros que se encontrem na janela do lado direito inferior e que

    tm inicio com a palavra Sub e fim com as palavras End Sub (Ver capitulo de funese procedimentos)

  • 8/14/2019 Excel - Macros e Visual Basic

    22/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 22 / [email protected]

    EEddiittoorr ddee VViissuuaallBBaassiicc ffoorr

    AApppplliiccaattiioonnss

  • 8/14/2019 Excel - Macros e Visual Basic

    23/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 23 / [email protected]

    Para aceder ao editor de Visual Basic for Applications: Tools / Macro / Visual BasicEditor

    Figura 10 Editor de Visual Basic for Applications

    Encontrar o cran dividido em trs grandes reas: Project Explorer, Properties Windowe do lado direito a janela de edio de texto.

  • 8/14/2019 Excel - Macros e Visual Basic

    24/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 24 / [email protected]

    PROJECTEXPLORER

    Se a janela no estiver visvel active-a atravs do View / Project Explorer ou utilizando oboto ou combinaes de letras associadas a esta tarefa.

    Nesta janela poder visualizar a hierarquia dos projectos de Visual Basic for Applicationsactivos nesse momento.

    Entre eles dever encontrar um cujo nome corresponde ao nome do WorkBook do Excelcom que est a trabalhar. E.g. VBAProject (Book1). dentro deste projecto que devertrabalhar para que todas as funcionalidades que implemente estejam nele activas sempreque necessrio.

    Figura 11 Janela do Project Explorer

  • 8/14/2019 Excel - Macros e Visual Basic

    25/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 25 / [email protected]

    Assim se fizer o desdobramento do seu VBAProject, encontrar um folder cujadesignao Microsoft Excel Objects, e um outro designado Modules (se este noaparecer 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 doseu documento: as WorkSheets e o WorkBook (que no fundo o conjunto deWorkSheets). Se clicar duplamente em cada um destes objectos, uma nova janela servisualizada 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 programaras suas macros. Clicando duplamente em cada um dos mdulos indicados podervisualizar as macros, que o compem, na janela da direita.

  • 8/14/2019 Excel - Macros e Visual Basic

    26/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 26 / [email protected]

    PROPERTIES WINDOW

    Se a janela das propriedades no estiver visvel active-a atravs do View / PropertiesWindow ou utilizando o boto ou combinaes de letras associadas a esta tarefa.

    Figura 12 Janela de propriedades

    Nesta janela poder visualizar e alterar as propriedades que definem cada objecto: onome - neste caso.

  • 8/14/2019 Excel - Macros e Visual Basic

    27/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 27 / [email protected]

    JAN ELA DEEDIO

    A janela de edio exibir a cada momento o cdigo em Visual Basic for Applicationsassociado ao elemento seleccionado na janela do Project Explorer.

    Figura 13 Janela de edio

  • 8/14/2019 Excel - Macros e Visual Basic

    28/122

  • 8/14/2019 Excel - Macros e Visual Basic

    29/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 29 / [email protected]

    AS CORES DO VBANa Janela de Edio so programados, armazenados e exibidos os procedimentos VBAcriados.

    Porm, o texto envolvido em cada procedimento dotado de uma srie de coresdiferentes, sendo que cada uma tem significado diferente.

    Cor SignificadoAzul 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 editorvai rectificar a sintaxe da linguagem por forma a indicar se existe ouno algum erro de escrita. Se for detectado um erro a linha fica avermelho e exibida uma mensagem de erro, seno todas as palavrasso reconhecidas, coloridas da cor da respectiva categoria e alteradaspara letras maisculas ou minsculas, conforme esteja pr-definido.

    Preto Nome de variveis, procedimentos, valores, operadores,

    Verde Comentrio introduzidos no seio dos procedimentos. Estescomentrios servem para o utilizador poder associar algumasexplicaes aos procedimentos realizados. De referir que as palavrascom esta cor so ignoradas no procedimento, i.e., no produzemqualquer efeito na sua execuo. Para introduzir comentrios bastarque o caractere anteceda o texto a introduzir.

    Amarelo Um sombreado amarelo poder aparecer sobre a linha que identifica

    um procedimento. Esta cor simboliza a ocorrncia de um erro naexecuo do respectivo procedimento e o estado de execuo domesmo, i.e., o procedimento iniciou a execuo, durante a qualdetectou um erro e agora est parado, mas ainda em execuo.Quando isto acontecer no dever voltar a dar ordem de execuo doprocedimento, sem antes parar (Stop) a execuo mal sucedida.

  • 8/14/2019 Excel - Macros e Visual Basic

    30/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 30 / [email protected]

    FFuunneess eeSSuubbRRoottiinnaass

  • 8/14/2019 Excel - Macros e Visual Basic

    31/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 31 / [email protected]

    Como foi referido anteriormente, quando se grava uma macro no Excel, este tem umcomportamento em background que realiza a respectiva codificao para Visual Basic forApplications. Este resultado bem visvel quando procedemos edio de uma macro noEditor de Visual Basic for Applications. Cada macro que se cria tem um comportamentoconcreto e autnomo relativamente a outras macros implementadas, e tem comoobjectivo executar um determinado nmero de instrues1 que respondam s exignciasdo utilizador.

    Cada macro criada d origem a um procedimento ou rotina. Existem dois tipos de rotinas:

    as subrotinas ou rotinas Sub, e as funes.

    1 Entenda-se instruo como uma tarefa a executar que corresponde a uma linha de cdigo.

  • 8/14/2019 Excel - Macros e Visual Basic

    32/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 32 / [email protected]

    SUBR OTINAS

    Definio de SubRotinas

    As SubRotinas so aquelas cuja definio delimitada pelas palavras-chave Sub eEndSub. Assim se reparar todas as macros que grava no Excel so deste tipo. Repare

    ainda como que so definidas:

    Sub ( )

    End Sub

    Estas SubRotinas so designadas pelo nome 2 que lhe atribumos e no recebemparmetros3 do exterior, tm como funo desempenhar um conjunto de tarefas que

    compem o seu corpo. O corpo da macro, assim composto por um conjunto deinstrues, 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 pordiversas linhas, recorrendo ao operador _, por forma a facilitar a leitura.

    2 O nome da rotina pode ser qualquer um desde que no contenha espaos, comece por caracteres alfa

    3 Para ter a noo do que so parmetros recorde-se do funcionamento das funes do Excel, que paraexecutarem determinada funo necessitavam de receber parmetros que colocamos entre parntesisseparados por virgulas.

  • 8/14/2019 Excel - Macros e Visual Basic

    33/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 33 / [email protected]

    Trabalhar no Editor de VBA Criar uma SubRotina

    Para criar uma SubRotina necessrio que exista um mdulo onde se possa escrever.Uma vez posicionado nesse mdulo poder:

    Escrever a macro integralmente, ou Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie a

    estrutura (Figura 14)

    Figura 14 Caixa de Dilogo para a criao de uma nova rotina

    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 aestrutura da rotina, neste caso ficaria:

    Sub Macro1( )

    End Sub

    4 Nomes alternativos para fazer referncia a um conjunto de instrues.

  • 8/14/2019 Excel - Macros e Visual Basic

    34/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 34 / [email protected]

    Execuo de uma SubRotina

    SubRotina e Macro so duas designaes para a mesma realidade, portanto tudo o que foireferido relativamente a Macros vlido tambm para as SubRotinas. (Consultar captulodas Macros)

    Neste contexto a execuo de SubRotinas segue o mesmo mecanismo das macros. Pormneste momento j se pode referir uma nova forma de executar as macros ou SubRotinas dentro de outras rotinas, i.e., quando se escreve dentro de uma rotina o nome de outra a

    execuo da rotina tem continuidade na execuo da rotina que est a ser invocada.

    FUNES

    Definio de Funes

    Funes so rotinas cuja definio comea com a palavra-chave Function e termina comas palavras End Function. Todas as funes que utiliza no Excel so deste tipo de rotina.A sua definio tem a estrutura seguinte:

    Function ( , ,)

    =

    End Function

    A funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e temcomo objectivo executar um conjunto de instrues e produzir um valor final. Isto ,sempre que se pretender executar uma funo sabido priori que ela produzir umvalor. Recorde-se como exemplo a funo SUM, esta recebe por parmetro um conjuntode valores que se pretendem somar, sabe-se que o resultado da aplicao dessa funo aoconjunto de valores ser o respectivo somatrio.

    Para definir o valor produzido por uma funo basta no seu interior, atribuir ao nome dafuno um determinado valor ou expresso.

  • 8/14/2019 Excel - Macros e Visual Basic

    35/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 35 / [email protected]

    Definio do tipo de parmetros e do tipo da funo

    Todos os elementos de input e output de uma funo tm um tipo de dados atribudo.Assim os parmetros devero ser definidos com o tipo de dados respectivo e a funodever ser definida do tipo de dados que ela envie para o exterior.Aps isto poder-se- refinar a definio de uma funo:

    Function ( As , ) As

    =

    End Function

    Nota: Se os tipos no forem definidos ser assumido por defeito como sendo do tipoVariant

  • 8/14/2019 Excel - Macros e Visual Basic

    36/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 36 / [email protected]

    Trabalhar no Editor de VBA Criar uma Funo

    Para criar uma Funo necessrio que exista um modulo onde se possa escrever.Uma vez posicionado nesse mdulo poder:

    Escrever a macro integralmente, ou Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie a

    estrutura (Figura 15)

    Figura 15 Caixa de Dilogo para a criao de uma nova rotina - funo

    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 Applicationscriar a estrutura da rotina, que neste caso ficaria:

    Function IVA( )

    End Function

  • 8/14/2019 Excel - Macros e Visual Basic

    37/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 37 / [email protected]

    Execuo de uma Funo

    Uma vez que uma funo produz um valor ela poder ser executada:

    dentro de uma clula numa WorkSheet, semelhana de qualquer uma outra funodo Excel

    dentro de qualquer outra funo ou SubRotina.

    Com base na seguinte funo, analisemos as formas de execuo com mais pormenor:

    Figura 16 Janela de Edio com a funo IVA

  • 8/14/2019 Excel - Macros e Visual Basic

    38/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 38 / [email protected]

    EXECUO DENTRO DE UMA CLULA

    1. Posicione-se na clula onde pretende inserir a funo2. Insert / Function3. Seleccione a categoria User Defined repare que aparece listada a funo que acabou

    de criar IVA (Figura 17)

    Figura 17 Caixa de Dilogo para introduo da funo

  • 8/14/2019 Excel - Macros e Visual Basic

    39/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 39 / [email protected]

    4. Clique em OK e de imediato uma janela de ajuda vir auxiliar a utilizao da suafuno (Figura 18)

    Figura 18 Caixa de Dilogo para apoio utilizao da funo

    5. Introduza os parmetros e clique em OK (Figura 19)

    Figura 19 Caixa de Dilogo para apoio utilizao da funo introduo de valores

    Em suma:

    Qualquer funo poder ser chamada a partir da WorkSheet do Excel, sendo que a suachamada ser realizada semelhana de qualquer outra funo: numa clula

    = ( , )

  • 8/14/2019 Excel - Macros e Visual Basic

    40/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 40 / [email protected]

    EXECUO DENTRO DE UMA R OTINA

    Quando dentro de uma rotina se faz referncia ao nome de uma outra rotina a execuoda primeira passa pela execuo daquela que est a ser invocada.

    No exemplo que se segue, a funo Valor_Liquido faz uma chamada funo IVA porforma a que, o valor por esta produzido, seja adicionado varivel Valor, e assimproduzir o output final da funo Valor_Liquido.

    Figura 20 Funo Valor_Liquido ao ser executada d ordens de execuo funo IVA

  • 8/14/2019 Excel - Macros e Visual Basic

    41/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 41 / [email protected]

    Um outro exemplo poder elucidar melhor:

    Figura 21 A Subrotina Ident_Maior ao ser executada d ordens de execuo funo Ver_Maior

  • 8/14/2019 Excel - Macros e Visual Basic

    42/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 42 / [email protected]

    DIFERENAS EN TREFUNES EROTI N AS

    As funes so similares s subrotinas, existem simplesmente trs diferenas:

    1. As Funes Comeam com a palavra-chaveFunction e terminam com as palavrasEnd Function

    2. As Funes podem ser chamadas a partir de frmulas introduzidas numa WorkSheet3. As funes retornam valores para as frmulas ou subrotinas que as chamarem

    REGRA S PAR A A PASSAGEM DEPARMETROS

    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 argumentode 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 casodever-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.

  • 8/14/2019 Excel - Macros e Visual Basic

    43/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 43 / [email protected]

    VVaarriivveeiiss

  • 8/14/2019 Excel - Macros e Visual Basic

    44/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 44 / [email protected]

    MAN USEAMENTO COMVARIVEIS

    O que so variveis?

    As variveis constituem repositrios temporrios de dados, podendo ser utilizadas paradiversos fins.

    Figura 22 Manuseamento de Variveis

  • 8/14/2019 Excel - Macros e Visual Basic

    45/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 45 / [email protected]

    Assignao de valores a variveis:Quando se pretende atribuir valores a variveis dever-se- indicar o nome da varivel, ooperador "=" e o valor que se pretende que a varivel armazene.

    =

    Pela observao do procedimento Adio - Figura 22- podemos verificar que as variveisParcela_1 e Parcela_2 armazenam os valores introduzidos pelo utilizador atravs dasInputBox (Ver captulo "InputBox e MsgBox"). Tambm varivel Total vai ser atribudoo valor resultante da adio das duas parcelas - Total = Parcela_1 + Parcela_2.

    Utilizao de variveis como se fossem valores:

    O nome da varivel representa o contedo da mesma, i.e., sempre que mencionar o nomeda varivel o seu contedo que ser considerado.

    No exemplo da figura 22, pode-se constatar que na expresso:

    Total = Parcela_1 + Parcela_2

    Parcela_1 representa o primeiro valor introduzido e Parcela_2 representa o segundovalor, no se trata de adicionar o nome de duas variveis, mas adicionar os contedos queelas armazenam.

  • 8/14/2019 Excel - Macros e Visual Basic

    46/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 46 / [email protected]

    TIPOS DE VAR IVEISO tipo de varivel est associado ao gnero de informao que esta tem hiptese dearmazenar

    Boolean 2 bytes Permite armazenar valores Boolenaos True ou False

    Byte 1 Byte permite armazenar nmeros se m 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.79769313486232E308at -4.94065645841247E-324 para valores negativos, e desde1.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 at1.4011298E-45, para valores positivos

    Integer 2 bytes - permite armazenar nmeros inteiros entre -32.768 e 32767

    Long 4 bytes permite armazenar nmeros inteiros entre -2 147 483 648 e2 147 483 648

    Object 4 bytes utilizado para fazer referncia a um objecto do Excel

    String 1 byte por caractere permite armazenar conjuntos de caracteres

    Variant 16 bytes - permite armazenar qualquer tipo de dados

    User-Defined permite armazenar valores de tipos diferentes

  • 8/14/2019 Excel - Macros e Visual Basic

    47/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 47 / [email protected]

    DECLAR AO DEVARIVEIS

    Dim I_Numero As Integer

    Onde:

    Dim Palavra chave que indica uma declarao de variveis (abreviatura de dimenso)I_Numero - nome da varivel a utilizar

    As palavra chave utilizada para separar o nome da varivel do tipo de dadosInteger tipo de dados atribudo varivel

    possvel na mesma declarao de variveis declarar variveis de diversos tipos:

    Dim var1 As Integer, var2 As Date, var3 As Double

    Para declarar diversas variveis do mesmo tipo:

    Dim var_1, var_2, var_3 As Currency

    VARIVEISVAN TAGENS DA UTILIZA O

    Simplificam a codificao, principalmente quando se necessita de utilizar umvalor especifico inmeras vezes

    Com variveis o cdigo mais rpido

  • 8/14/2019 Excel - Macros e Visual Basic

    48/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 48 / [email protected]

    VARIVEIS DO TIPO OBJECTO Uma varivel objecto representa uma referncia a um objecto. Uma varivel de extremaimportncia que facilita a codificao e melhora a performance da subrotina.

    Declarao da Varivel Objecto

    Dim As Object

    Atribuio de uma varivel Objecto

    Set =

    Onde:

    Set palavra chave que indica a assignao de uma varivel objecto - Varivel Objecto= - Operador de assignao

    - Objecto a ser atribudo varivel

  • 8/14/2019 Excel - Macros e Visual Basic

    49/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 49 / [email protected]

    Utilizao Genrica da Varivel Objecto

    A utilizao genrica do tipo Objecto serve para suportar qualquer tipo de objecto Excel(WorkBook,WorkSheet,Range,)

    Exemplo:

    Dim Range_1 as ObjectRange_1 = Worksheet(1).Range(A1)

    Range_1.Value = 10

    Utilizao Especifica da Varivel Objecto

    Utiliza-se o tipo exacto do objecto que se pretende atribuir varivel. Esse tipoespecifico de objectos coincide com o nome dos objectos em EXCEL.

    Dim Range_1 As RangeDim WB_1 As WorkbookDim WS_1 As WorkSheet

    Dim XL As Aplicativo

    Exemplo:

    Dim Range_1 as RangeRange_1 = Worksheet(1).Range(A1)Range_1.Value = 10

  • 8/14/2019 Excel - Macros e Visual Basic

    50/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 50 / [email protected]

    Contudo estas declaraes tambm podem ser feitas da seguinte forma genrica:

    Dim Range_1 As ObjectDim WB_1 As ObjectDim WS_1 As ObjectDim XL As Object

    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 deexecutar qualquer funo com o objecto tem que primeiramente o identificar (perdendotempo) em subrotinas simples essa diferena no substancial mas quando se trata degrandes subrotinas j se denotam diferenas significativas.

  • 8/14/2019 Excel - Macros e Visual Basic

    51/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 51 / [email protected]

    VARIVEISDECLARAO O PCION AL E OTIPO VARIANT

    A declarao de variveis opcional, se as variveis no forem declaradas o VBA faz asua declarao por defeito. Assim sempre que a instruo do Dim omitida para umavarivel, essa assume o tipo Variant.

    Os Prs e Contras da Utilizao do tipo VariantsPRS

    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 dedados com os quais est a trabalhar.

    Este tipo de dados consome mais memria (uma vez que tem que alocar espao paraqualquer tipo de dados que lhe seja atribudo) 16 bytes mais um byte por caracterese 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.

  • 8/14/2019 Excel - Macros e Visual Basic

    52/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 52 / [email protected]

    Variveis Declarao Forada

    Para que o VBA detecte um erro sempre que uma varivel no seja declarada deverfazer:

    Tools/Options Editor Tab Activar Require Variable DeclarationOu ento, escrever no incio de cada mdulo Option Explicit

    Neste caso sempre que seja detectada uma varivel que ainda no foi declarada d umamensagem de erro - Variable Not Defined

  • 8/14/2019 Excel - Macros e Visual Basic

    53/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 53 / [email protected]

    VARIVEIS TIPO S DEFIN IDO S PELOUTILIZADOR - ESTRUTURAS

    Definio do Tipo

    A primeira fase constituda pela definio do tipo:

    Type Dados_Pessoais

    Nome As StringIdade As IntegerDataNascimento As DateBI 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 Palavra-Chave que indica a definio de um tipo dedados criado pelo utilizador.

    Dados_Pessoais Nome atribudo ao tipo de dados.

    Nome As String Primeiro elemento da estrutura de dados definida.

    Idade 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 definio daestrutura de dados.

  • 8/14/2019 Excel - Macros e Visual Basic

    54/122

  • 8/14/2019 Excel - Macros e Visual Basic

    55/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 55 / [email protected]

    VARIVEISARRAYS

    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 indexadasnumericamente.

    ARRAYUNI-DIMENSIONAL

    012

    345

    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 listacorresponde um nico ndice, traduo do lugar que ocupa na lista, que o identificaunivocamente.

  • 8/14/2019 Excel - Macros e Visual Basic

    56/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 56 / [email protected]

    ARRAYBI-DIMENSIONAL

    0 1 20123

    Um array bi-dimensional um pouco mais complexo e constitudo por um conjunto delistas do mesmo comprimento, este formato normalmente conhecido como array oumatriz. portanto constituda por linhas e colunas e cada elemento identificado por umndice composto pela intercepo dos nmeros da linha e da coluna.

  • 8/14/2019 Excel - Macros e Visual Basic

    57/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 57 / [email protected]

    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 nmerode elementos que o array pode armazenar, isto

    Array_Numerico 0123456789

    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 irter 5 linhas e 4 colunas, podendo assim armazenar 20 elementos do tipo String.

    Tabela_Textual0 1 2

    0123

  • 8/14/2019 Excel - Macros e Visual Basic

    58/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 58 / [email protected]

    Utilizao de um ArrayPARA ACEDER AO ELEMEN TO

    ([,, ])

    AT RIBUIO DE VALORES

    ([,, ]) =

    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 contedoseguinte:

    Pases

    Portugal 0Brasil 1Moambique 2

    Valor estes que sero exibidos atravs da MsgBox.

  • 8/14/2019 Excel - Macros e Visual Basic

    59/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 59 / [email protected]

    Exemplo 2:Option Base 1Sub 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

    Option Base e Array Bounds

    A indexao de um array por defeito tem inicio em 0, sendo que os respectivos ndices

    vo de 0 a dimenso-1. Para alterar a base de indexao por forma a ter inicio em 1 bastacolocar no inicio do mdulo Option Base 1

    Contudo se pretender que um array comece noutro nmero que no seja 0 ou 1, necessrio especificar os limites inferior e superior do ndice aquando da declarao doarray.

    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

  • 8/14/2019 Excel - Macros e Visual Basic

    60/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 60 / [email protected]

    CCoonnssttaanntteess

  • 8/14/2019 Excel - Macros e Visual Basic

    61/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 61 / [email protected]

    O QUE SO CONSTAN TES ?Constantes so valores que no alteram durante a execuo de uma rotina. So declaradasda mesma forma que as variveis, a nica diferena reside no facto da atribuio ser feitana mesma instruo da declarao, e s poder ser feita uma nica vez.

    Const As = Const As =

    Figura 23 Manuseamento de Constantes

  • 8/14/2019 Excel - Macros e Visual Basic

    62/122

  • 8/14/2019 Excel - Macros e Visual Basic

    63/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 63 / [email protected]

    O QUE SO ?

    Para haver interaco entre o utilizador e uma macro ou programa necessrio que existaum interface de comunicao. Este poder ser mais ou menos complexo e completo,contudo existem dois elementos bsicos para estabelecer esta ligao: InputBox eMsgBox.

    Neste contexto a InputBox uma funo que permite ao utilizador introduzir dados noprograma portanto um mecanismo de input. O MsgBox um mecanismo de Output epermite ao utilizador visualizar os dados produzidos pelo programa.

    INPUTBOX

    O que faz

    1. Exibe no cran uma janela com uma caixa text box para a insero de dados.2. Espera que o utilizador introduza os dados e/ou accione um dos botes.3. Como uma funo produz um valor final. Este consiste nos dados inseridos pelo

    utilizador na forma textual - String.

    Sintaxe

    InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

    Numa primeira avaliao da funo, pode-se dizer que a mesma possui diversosparmetros, mas somente o primeiro obrigatrio, sendo que todos os outros quandoignorados assumem valores atribudos por defeito.

  • 8/14/2019 Excel - Macros e Visual Basic

    64/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 64 / [email protected]

    ParmetrosParmetro Comentrio

    Prompt(Obrigatrio )

    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 umalinha poder utilizar o caractere Enter - Chr(13). A juno doselementos que constituem a mensagem realizada atravs dooperador &.

    Exemplo:"A Soma de 3 com 5 :" & Chr(13) & " 8 "

    Title(Facultativo)

    Titulo da janela de input. Se este for omitido, aparecer pordefeito o nome da aplicao.

    Default(Facultativo)

    Expresso inserida por defeito na caixa de insero de dados econstituir a resposta por defeito se o utilizador no introduziroutra.Se este parmetro for omitido aparecer uma text box vazia.

    Xpos(Facultativo)

    Nmero que identifica a distncia horizontal entre o ladoesquerdo do cran e a janela de input. Se este valor for omitido ajanela aparecer centrada horizontalmente.

    Ypos(Facultativo)

    Nmero que identifica a distncia vertical entre o lado superiordo cran e a janela de input. Se este valor for omitido a janelaficar posicionada a 1/3 da parte inferior do cran

    HelpFile(Facultativo)

    Nome do ficheiro de Help que ser utilizado para dar apoio aopreenchimento desta janela. Se for indicado este parmetro oseguinte obrigatrio.

    Context(Facultativo)

    Nmero do ndice do tpico de Help constante no ficheiroHelpFile, e que corresponde janela em questo.

    Ateno: Se pretender enviar mais que um parmetro optativo respeite a ordematravs de , (virgulas)

    Exemplo:InputBox(Introduza o Nome da Aplicao:, , Excel)

    Na janela de input ser exibida a mensagem Introduza o Nome da Aplicao:, o ttuloda caixa ser o definido por defeito e o valor na caixa de insero ser Excel.

  • 8/14/2019 Excel - Macros e Visual Basic

    65/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 65 / [email protected]

    MSGBO X

    O que faz

    1. Exibe no cran uma janela com uma mensagem.2. Espera que o utilizador accione um dos botes.3. Como uma funo produz um valor final. Devolve um nmero inteiro indicando o

    boto que foi clicado.

    Sintaxe

    MsgBox(prompt[, buttons] [, title] [, helpfile, context])

    semelhana da InputBox , pode-se dizer que a mesma possui diversos parmetros, massomente o primeiro obrigatrio, sendo que todos os outros quando ignorados assumem

    valores atribudos por defeito.

  • 8/14/2019 Excel - Macros e Visual Basic

    66/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 66 / [email protected]

    ParmetrosParmetro Comentrio

    Prompt(Obrigatrio )

    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 umalinha poder utilizar o caractere Enter Chr(13)

    Exemplo:"A Soma de 3 com 5 :" & Chr(13) & " 8 "

    Buttons(Facultativo)

    Nmero que identifica o tipo de botes que se pretendevisualizar na janela de output. Ver tabela seguinte.Se for omitido assumir o valor 0 por defeito.

    Title(Facultativo)

    Titulo da janela de input. Se este for omitido, aparecer pordefeito o nome da aplicao.

    HelpFile(Facultativo)

    Nome do ficheiro de Help que ser utilizado para dar apoio aopreenchimento desta janela. Se for indicado este parmetro oseguinte obrigatrio.

    Context(Facultativo)

    Nmero do ndice do tpico de Help constante no ficheiroHelpFile, e que corresponde janela em questo.

    Ateno: Se pretender enviar mais que um parmetro optativo respeite a ordematravs de , (virgulas)

    Exemplo:MsgBox(Erro de Sintaxe !!!, , Mensagem de Erro)

    Na janela de output ser exibida a mensagem Erro de Sintaxe, o boto exibido ser o deOK (por defeito) e o titulo da janela ser Mensagem de Erro.

  • 8/14/2019 Excel - Macros e Visual Basic

    67/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 67 / [email protected]

    Constante de VBA Valor Descrio

    VbOKOnly 0 Exibe somente o boto de OK.VbOKCancel 1 Exibe os botes OK e Cancel.VbAbortRetryIgnore 2 Exibe os botes Abort, Retry, e Ignore.VbYesNoCancel 3 Exibe os botes Yes, No, e Cancel .VbYesNo 4 Exibe os botes Yes e No.VbRetryCancel 5 Exibe os botes Retry e Cancel.VbCritical 16 Exibe o cone de Critical Message.VbQuestion 32 Exibe o cone de Warning Query.

    VbExclamation 48 Exibe o cone de Warning Message.VbInformation 64 Exibe o cone de Information Message.VbDefaultButton1 0 O primeiro boto o seleccionado por defeito.VbDefaultButton2 256 O segundo boto o seleccionado por defeito.VbDefaultButton3 512 O terceiro boto o seleccionado por defeito.VbDefaultButton4 768 O quarto boto o seleccionado por defeito.VbApplicationModal 0 Application modal o utilizador s depois de responder

    MsgBox que poder dar continuidade ao trabalho naaplicao corrente.

    VbSystemModal 4096 System modal - o utilizador s depois de responder MsgBox que poder dar continuidade ao trabalho em

    qualquer aplicao em curso no sistema.

    Pela anlise desta tabela poder constatar que existem diferentes agrupamentos decdigos: 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 deexecuo (0 e 4096). Poder adicionar os cdigos e assim fazer combinaes entrediversas opes destes 4 grupos, contudo nunca dever adicionar mais do que um cdigopor agrupamento.

  • 8/14/2019 Excel - Macros e Visual Basic

    68/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 68 / [email protected]

    Exemplos:

    Para a instruo:

    MsgBox "Erro de Sintaxe!!!", 2 + 48 + 512 + 4096, "Mensagem de Erro"

    exibida a seguinte janela:

    Figura 24 MsgBox

    Para a instruo:

    MsgBox "Erro de Sintaxe!!!", 5 + 64 + 256 + 4096, "Mensagem de Erro"

    exibida a seguinte janela:

    Figura 25 MsgBox

  • 8/14/2019 Excel - Macros e Visual Basic

    69/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 69 / [email protected]

    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

    vbOK 1 OK

    vbCancel 2 CancelvbAbort 3 AbortvbRetry 4 RetryvbIgnore 5 IgnorevbYes 6 YesvbNo 7 No

  • 8/14/2019 Excel - Macros e Visual Basic

    70/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 70 / [email protected]

    DDoommnniioo ddaassvvaarriivveeiiss,,

    ccoonnssttaanntteess eerroottiinnaass

  • 8/14/2019 Excel - Macros e Visual Basic

    71/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 71 / [email protected]

    O QUE O DO MIN IO ?

    Scope ou domnio de um elemento refere-se rea na aplicao na qual esse mesmoelemento pode ser acedvel e utilizado, ou seja onde que o elemento reconhecido.

    DOM NIO DAS VARIVEIS

    Refere-se rea onde a varivel permanece activa, mantendo o valor que lhe vai sendoatribudo.

    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 tmdomnio de Projecto.

  • 8/14/2019 Excel - Macros e Visual Basic

    72/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 72 / [email protected]

    mbito do Procedimento

    Estas variveis so declaradas no corpo do procedimento com recurso palavra chaveDim.

    So variveis criadas aquando da execuo do procedimento e automaticamentedestrudas quando o procedimento termina, sendo que s so reconhecidas no seio doprocedimento que as declarou. Assim sendo, qualquer tentativa realizada por um

    procedimento no sentido de trabalhar com variveis definidas no corpo de um outroprocedimento no ter xito.

    Exemplo

    Sub Ambito_Procedimento()Dim Var_1 As IntegerVar_1 = InputBox (Introduza um nmero Inteiro)MsgBox Foi este o nmero que introduziu: & Var_1Ambito_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 onmero introduzido pelo utilizador que fora armazenado na varivel Var_1.

    A segunda mensagem, oriunda da instruo MsgBox do ProcedimentoAmbito_Procedimento_2 no exibir o valor introduzido, porque a varivel Var_1 nelereferida considerada como uma varivel interna do processo, e portanto criada dentrodo procedimento Ambito_Procedimento_2. Como tal, embora possua o mesmo nome quea varivel da rotina Ambito_Procedimento_1 no existe qualquer ligao entre elas, soduas variveis distintas.

    Neste caso se se pretendesse que o valor da primeira varivel fosse reconhecido noprocedimento chamado, ter-se-ia de o passar por parmetro.

  • 8/14/2019 Excel - Macros e Visual Basic

    73/122

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________ISCTE / DCTI 73 / [email protected]

    mbito do Mdulo

    Uma varivel como mbito do Mdulo pode ser acedida por todas as rotinas existentesno mdulo onde a varivel declarada.

    Para declarar uma varivel do nvel modular, dever declar-la co