VBA Macro Excel

download VBA Macro Excel

of 101

Transcript of VBA Macro Excel

  • 8/14/2019 VBA Macro Excel

    1/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    ndice

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

    O QUEUMA MACRO?...................................................................................................................................6CRIARMACROS.............................................................................................................................................6

    Gravar uma Macro............................................................................................................................... .6Exerccio..........................................................................................................................................................7Procedimento BackGround do Excel................................................................................................................8

    Programao em Visual Basic for Applications...................................................................................9EXECUTARUMA MACRO................................................................................................................................11

    Tecla de Atalho Shortcut Key...........................................................................................................11Boto na Toolbar.................................................................................................................................12

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

    Run.......................................................................................................................................................15Comando no Menu...............................................................................................................................16

    Associao de uma Macro a um Comando do Menu......................................................................................16Dissociao.....................................................................................................................................................18

    Editor de Visual Basic for Applications..............................................................................................19REMOVERMACROS......................................................................................................................................19

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

    EDITOR DE VISUAL BASIC FOR APPLICATIONS.........................................................................21

    PROJECT EXPLORER......................................................................................................................................22PROPERTIES WINDOW...................................................................................................................................24JANELADE EDIO.......................................................................................................................................25OBJECT BROWSER........................................................................................................................................26HELP ON-LINE............................................................................................................................................27AS CORESDO VBA.....................................................................................................................................27

    FUNES E SUBROTINAS....................................................................................................................28

    SUBROTINAS...............................................................................................................................................30Definio de SubRotinas.....................................................................................................................30Trabalhar no Editor de VBA Criar uma SubRotina.........................................................................31Execuo de uma SubRotina...............................................................................................................32

    FUNES.....................................................................................................................................................32

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

    Execuo dentro de uma Clula......................................................................................................................36Execuo dentro de uma Rotina.....................................................................................................................37

    DIFERENASENTRE FUNESE ROTINAS.........................................................................................................39REGRASPARAAPASSAGEMDEPARMETROS.....................................................................................................40

    VARIVEIS...............................................................................................................................................41

    MANUSEAMENTOCOM VARIVEIS...................................................................................................................41O que so variveis?...........................................................................................................................41Assignao de valores a variveis:.....................................................................................................42

    Utilizao de variveis como se fossem valores:................................................................................43TIPOSDEVARIVEIS......................................................................................................................................43DECLARAODE VARIVEIS..........................................................................................................................44

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    2/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    VARIVEIS VANTAGENSDAUTILIZAO.......................................................................................................45VARIVEISDO TIPO OBJECTO........................................................................................................................45

    Declarao da Varivel Objecto.........................................................................................................45Atribuio de uma varivel Objecto....................................................................................................45Utilizao Genrica da Varivel Objecto...........................................................................................46Utilizao Especifica da Varivel Objecto.........................................................................................46

    VARIVEIS DECLARAO OPCIONALEO TIPO VARIANT.................................................................................48

    Os Prs e Contras da Utilizao do tipo Variants..............................................................................48Prs................................................................................................................................................................48Contras...........................................................................................................................................................48

    Variveis Declarao Forada........................................................................................................49VARIVEIS TIPOSDEFINIDOSPELOUTILIZADOR- ESTRUTURAS...........................................................................50

    Definio do Tipo................................................................................................................................50Utilizao das Estruturas de Dados....................................................................................................51

    VARIVEIS ARRAYS...................................................................................................................................51O que um Array ?..............................................................................................................................52

    Array Uni-Dimensional..................................................................................................................................52Array Bi-Dimensional....................................................................................................................................52

    Declarao de um array......................................................................................................................53Arrays Uni-dimensionais................................................................................................................................53Arrays Bi-dimensionais..................................................................................................................................54

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

    Option Base e Array Bounds...............................................................................................................56

    CONSTANTES..........................................................................................................................................56

    O QUESOCONSTANTES ?.............................................................................................................................57

    INPUTBOX E MSGBOX..........................................................................................................................58

    O QUESO ?...............................................................................................................................................59INPUTBOX...................................................................................................................................................59

    O que faz..........................................................................................................................................59Sintaxe.................................................................................................................................................59

    Parmetros..........................................................................................................................................60MSGBOX....................................................................................................................................................61O que faz..........................................................................................................................................61Sintaxe.................................................................................................................................................61Parmetros..........................................................................................................................................62Valores Produzidos..........................................................................................................................69

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

    O QUEODOMINIO?....................................................................................................................................71DOMNIODAS VARIVEIS..............................................................................................................................71

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

    DOMNIODAS CONSTANTES............................................................................................................................75mbito do Procedimento.....................................................................................................................75mbito do Mdulo...............................................................................................................................76mbito do Projecto..............................................................................................................................76

    DOMNIODE SUBROTINASE FUNES.............................................................................................................77

    ESTRUTURAS DE CONTROLO............................................................................................................78

    O QUESOESTRUTURASDECONTROLO?..........................................................................................................79QUAISASESTRUTURAS..............................................................................................................................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.................................................................................................................................................84

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    3/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Aplicao Prtica................................................................................................................................84A Funo das Variveis:.................................................................................................................................85Construo do Ciclo:......................................................................................................................................85Traduo Integral............................................................................................................................................86

    Funcionamento 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.................................................................................................................................................95

    Aplicao Prtica................................................................................................................................96Construo da Estrutura..................................................................................................................................97

    FOR EACH NEXT....................................................................................................................................98Sintaxe.................................................................................................................................................98Aplicaes Prticas.............................................................................................................................99

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

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

    COLECES DE OBJECTOS E OBJECTOS....................................................................................103

    O QUESO OBJECTOS ?..............................................................................................................................104OBJECTOS: PROPRIEDADES, MTODOSE EVENTOS...........................................................................................104

    Propriedades.....................................................................................................................................104Mtodos.............................................................................................................................................104Eventos...............................................................................................................................................105

    OBJECTOSMAIS UTILIZADOSNO EXCEL.........................................................................................................106Propriedades.................................................................................................................................................106Mtodos........................................................................................................................................................107Propriedades.................................................................................................................................................108Mtodos........................................................................................................................................................109Propriedades.................................................................................................................................................110Mtodos........................................................................................................................................................111Propriedades.................................................................................................................................................112Mtodos........................................................................................................................................................113

    OBJECTOS SINGULARESVS COLECESDE OBJECTOS........................................................................114INDEXAODECOLECESPORNMEROOUNOME..........................................................................................115

    Indexao com Base em Nmeros.....................................................................................................115Indexao com Base no Nome...........................................................................................................116

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

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

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

    MISCELLANEOUS................................................................................................................................121

    A INSTRUO WITH...................................................................................................................................122Aplicao Prtica..............................................................................................................................122

    OUTRAS

    FUNES

    TEIS

    DO

    VBA...............................................................................................................123Outras Funes teis do VBA

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    4/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    5/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    MacrosMacros

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    6/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    O QUEUMA MACRO?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 conjunto

    de tarefas atravs de um nico procedimento o qual pode ser invocado rapidamente.As instrues que formam o corpo da macro so escritas num cdigo prprio para que ocomputador as possa entender, essa linguagem designada por VBA Visual Basic forApplications.

    CRIAR MACROS

    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.

    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 utilizadas

    para executar uma macro.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    7/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 nasMacros do Excel. (na rede do ISCTE impossvel gravar a macro no PersonalWorkBook.)

    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.

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

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

    EXERCCIO

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    8/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 ?

    PROCEDIMENTO BACKGROUNDDO EXCEL

    O Excel quando se grava uma macro cria um objecto designado por module noworkbook onde regista todas as operaes gravadas em linguagem Visual Basic forApplications - VBA. Este module no aparece no Excel com as restantes Sheets.______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    9/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Para ser visualizado necessrio abrir o Editor de Visual Basic for Applications:

    1. Tools / Macro / Macros

    2. Selecciona-se a Macro e Clica-se no boto Edit

    3. Poder visualizar na rea do lado direito o cdigo VBA que est subjacente smacros que entretanto gravou. A poder executar as mesmas tarefas que num editorde texto normal: escrever, apagar, copiar, mover, mas instrues de VBA.

    4. Tente fazer a leitura do que est escrito e compreenda o procedimento da macro.

    5. Para regressar ao Excel basta File / Close and return to Microsoft Excel.

    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

    Basic for Applications e o capituloFunes e SubRotinas)

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    10/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 onde

    poder-se-o escrever as macros a executar)

    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 macroscom operaes 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.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    11/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 F2

    6.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 porGlobals refere-se s funes que esto disponveis na aplicaoindependentemente dos objectos 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

    basta clicar sobre o boto de Help da janela do Object Browser.

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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    12/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Boto na Toolbar

    ASSOCIARUMA MACROAUM BOTO

    1. View / Toolbars / Customize

    1. Na janela do Customize seleccione o Commands Tab

    2. Seleccione a categoria Macro (visualizar a caixa de dilogo exibida na Figura 4)

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

    3. 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 o

    pretende 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

    arrastamento e verificar que ser criado um novo boto.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    13/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    4. Na janela de Customize poder ainda utilizar dois botes que se encontram na reado Selected 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

    1. 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: scom texto, com texto e imagem ou somente com imagem. Se seleccionar oestilo Texto 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 querepresenta um quadrado vazio. Para o poder (re)desenhar a imagem, na listade tarefas disponibilizada pelo boto Modify Selection opte por Edit ButtonImage e crie a sua imagem que poder reeditar.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    14/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    DISSOCIARUMA MACRODEUM BOTO

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

    Run

    1. Tools / Macro / Macros

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

    Name (Figura 6)2. Clique sobre o boto Run

    Fig.6 Janela para seleco da macro a executar

    Comando no Menu

    ASSOCIAODEUMA MACROAUM COMANDODOMENU

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    15/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    1. View / Toolbars / Customize

    2. Na janela do Customize encontra-se no Commands Tab

    3. Seleccione a categoria Macro

    4. Na area respeitante aos Commands ser exibido um item de Custom Menu Item,seleccione-o e arraste-o com o rato at a uma posio do menu que lhe interesse

    por exemplo pode introduzir numa das listas de opes do menu (File, View,) ouento criar como uma nova opo do Menu..

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

    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 Selection

    d) Esta nova lista ter o mesmo comportamento que a outras

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    16/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Fig.8 Caixa de dilogo para criar um novo menu na barra dos menus

    6. Na janela de Customize poder ainda utilizar dois botes que se encontram na reado Selected Command:

    a) Description que exibe um texto explicando o que o comando seleccionado

    faz.b) Modify Selection semelhante ao clique sobre o menu ou comando de menu

    criado, exibe uma srie de tarefas possveis para configurao (Ver o item 6do captuloAssociar uma Macro a um Boto)

    DISSOCIAO

    1. Tools / Customize

    2. Arraste o Menu ou Comando do Menu at ao documento e solte-o

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    17/101

    Excel Macros e Visual Basic for Applications(verso 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, poderexecutar 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

    REMOVER MACROSA remoo das macros poder ser feita:

    no ambiente Excel, ou no Editor de VBA

    Remoo de Macros em Ambiente Excel

    1. Tools / Macro / Macros

    1. Selecciona-se a Macro a remover

    2. Clica-se no boto Delete

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    18/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    3. Pede a confirmao e apaga se confirmar

    Remoo de Macros no Editor de VBA

    1. Tools / Macro / Visual Basic Editor - para aceder ao Editor

    2. Podem-se apagar as macros que se encontrem na janela do lado direito inferior e quetm inicio com a palavra Sub e fim com as palavras End Sub (Ver capitulo defunes e procedimentos)

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    19/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Editor de VisualEditor de VisualBasic forBasic for

    ApplicationsApplications

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    20/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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.

    PROJECTEXPLORER

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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    21/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Nesta janela poder visualizar a hierarquia dos projectos de Visual Basic forApplications activos 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

    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 serexecutada em funo dos eventos de cada objecto.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    22/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    No Folder Modules, aparecer o conjunto de ficheiros (mdulos) onde poderprogramar as suas macros. Clicando duplamente em cada um dos mdulos indicadospoder visualizar as macros, que o compem, na janela da direita.

    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.

    JANELADE EDIO

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    23/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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

    OBJECTBROWSER

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

    Clique no cone do Object Browser ou View/Object Browser ou F2

    Na Caixa de Drop-Down onde aparece referido , seleccione aaplicao para a qual pretende ajuda neste caso Excel. Convm referir que poderutilizar as funes de toda e qualquer aplicao.

    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.

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

    Para cada membro da classe dispe de um help on-line que o esclarece sobre arespectiva funo e funcionamento, dando um exemplo que poder testar. Para tal

    basta clicar sobre o boto de Help da janela do Object Browser.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    24/101

  • 8/14/2019 VBA Macro Excel

    25/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    26/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Funes eFunes eSubRotinasSubRotinas

    Como foi referido anteriormente, quando se grava uma macro no Excel, este tem umcomportamento em background que realiza a respectiva codificao para Visual Basicfor Applications. Este resultado bem visvel quando procedemos edio de umamacro no Editor de Visual Basic for Applications. Cada macro que se cria tem umcomportamento concreto e autnomo relativamente a outras macros implementadas, etem como objectivo executar um determinado nmero de instrues1que respondam sexigncias do utilizador.

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

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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    27/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    as subrotinas ou rotinas Sub, e as funes.

    SUBROTINAS

    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. Repareainda como que so definidas:

    Sub ( )

    End Sub

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    28/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Estas SubRotinas so designadas pelo nome2 que lhe atribumos e no recebemparmetros3 do exterior, tm como funo desempenhar um conjunto de tarefas quecompem 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

    por diversas linhas, recorrendo ao operador _, por forma a facilitar a leitura.

    Trabalhar no Editor de VBA Criar umaSubRotina

    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 aestrutura (Figura 14)

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

    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 parntesis

    separados por virgulas.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    29/101

    Excel Macros e Visual Basic for Applications(verso Draft)

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

    Sub Macro1( )

    End Sub

    Execuo de uma SubRotina

    SubRotina e Macro so duas designaes para a mesma realidade, portanto tudo o quefoi referido relativamente a Macros vlido tambm para as SubRotinas. (Consultar

    captulo das Macros)

    Neste contexto a execuo de SubRotinas segue o mesmo mecanismo das macros.Porm neste momento j se pode referir uma nova forma de executar as macros ouSubRotinas dentro de outras rotinas, i.e., quando se escreve dentro de uma rotina onome de outra a execuo da rotina tem continuidade na execuo da rotina que est aser invocada.

    FUNES

    Definio de Funes

    Funes so rotinas cuja definio comea com a palavra-chaveFunction e termina comas palavras End Function. Todas as funes que utiliza no Excel so deste tipo derotina. 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 conjunto

    4 Nomes alternativos para fazer referncia a um conjunto de instrues.______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    30/101

  • 8/14/2019 VBA Macro Excel

    31/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Recorrer ao Insert / Procedure para que o Visual Basic for Applications lhe crie aestrutura (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 onome que pretende dar funo. Automaticamente o Visual Basic forApplications criar a estrutura da rotina, que neste caso ficaria:

    Function IVA( )

    End Function

    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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    32/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    EXECUODENTRODEUMA 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

    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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    33/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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

    = ( , )

    EXECUODENTRODEUMA ROTINA

    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 assim

    produzir o output final da funo Valor_Liquido.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    34/101

    Excel Macros e Visual Basic for Applications(verso Draft)

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

    Um outro exemplo poder elucidar melhor:

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

    DIFERENASENTRE FUNESE ROTINAS

    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 WorkSheet

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    35/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    1. As funes retornam valores para as frmulas ou subrotinas que as chamarem

    REGRASPARAAPASSAGEMDEPARMETROS

    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

    caso dever-se-o colocar todos os parmetros entre parntesis.

    Regra 3: Quando uma rotina chamada de forma isolada e sem a palavra-chave Call,no se deve utilizar parntesis.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    36/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    VariveisVariveis

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    37/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    MANUSEAMENTOCOM VARIVEIS

    O que so variveis?

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

    Figura 22 Manuseamento de Variveis

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    38/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 asvariveis Parcela_1 e Parcela_2 armazenam os valores introduzidos pelo utilizadoratravs das InputBox (Ver captulo "InputBox e MsgBox"). Tambm varivel Total vaiser atribudo o 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 onome da 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

    que elas armazenam.

    TIPOSDEVARIVEISO tipo de varivel est associado ao gnero de informao que esta tem hiptese dearmazenar

    Boolean 2 bytes Permite armazenar valores Boolenaos True ou False

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    39/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Byte 1 Byte permite armazenar nmeros 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.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 e

    2 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

    DECLARAODE VARIVEIS

    Dim I_Numero As Integer

    Onde:

    Dim Palavra chave que indica uma declarao de variveis (abreviatura de dimenso)I_Numero - nome da varivel a utilizarAs 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______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    40/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    VARIVEIS VANTAGENSDAUTILIZAO

    Simplificam a codificao, principalmente quando se necessita de utilizarum valor especifico inmeras vezes

    Com variveis o cdigo mais rpido

    VARIVEISDO TIPO OBJECTOUma 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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    41/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    42/101

    Excel Macros e Visual Basic for Applications(verso Draft)

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

    VARIVEIS DECLARAO OPCIONALEOTIPO VARIANTA 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 uma

    varivel, essa assume o tipo Variant.

    Os Prs e Contras da Utilizao do tipoVariants

    PRS

    Diminui o nmero de linhas de cdigo No necessrio estar preocupado se a varivel est ou no declarada porque o

    VBA automaticamente o faz

    CONTRAS Aumenta o tempo de execuo o VBA primeiro precisa de reconhecer o tipo de

    dados com os quais est a trabalhar.

    Este tipo de dados consome mais memria (uma vez que tem que alocar espao para

    qualquer tipo de dados que lhe seja atribudo) 16 bytes mais um byte por caracterese for String => problemas de performance para subrotinas grandes.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    43/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    No possvel saber o tipo de dados que uma determinada varivel contm dificultando a deteco de erros.

    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 Declaration

    Ou 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

    VARIVEIS TIPOSDEFINIDOSPELO

    UTILIZADOR - 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 de______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    44/101

    Excel Macros e Visual Basic for Applications(verso Draft)

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

    Utilizao das Estruturas de Dados

    Como utilizar as estruturas de dados:

    Sub Tipos_definidos_Utilizador()

    Dim Pessoa As Dados_Pessoais

    Pessoa.Nome = FranciscoPessoa.DataNascimento = #8/7/73#Pessoa.Idade = WorksheetFunction.Year(Date)_ WorksheetFunction.Year(Pessoa.DataNascimento)Pessoa.BI = 103582915

    MsgBox5Pessoa.Nome & Chr(13) & , Idade & Pessoa.Idade & Chr(13) & _, Data de Nascimento & Pessoa.DataNascimento & Chr(13) & _, com o BI nmero _ & Pessoa.BI

    End Sub

    5 Ver captuloInputBox e MsgBox______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    45/101

  • 8/14/2019 VBA Macro Excel

    46/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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_Numerico0123

    456789

    Em que cada elemento do tipo Integer.

    ARRAYS BI-DIMENSIONAISDim Tabela_Textual (5, 4 ) As String

    Tabela_textual o nome da varivel, os nmero entre parntesis indicam que a tabelair ter 5 linhas e 4 colunas, podendo assim armazenar 20 elementos do tipo String.

    Tabela_Textual0 1 2

    01

    23

    Utilizao de um Array

    PARAACEDERAOELEMENTO______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    47/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    ([,, ])

    ATRIBUIODEVALORES

    ([,, ]) =

    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.

    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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    48/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Option Base e Array Bounds

    A indexao de um array por defeito tem inicio em 0, sendo que os respectivos ndicesvo de 0 a dimenso-1. Para alterar a base de indexao por forma a ter inicio em 1

    basta colocar no inicio do mdulo Option Base 1

    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

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    49/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    ConstantesConstantes

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    50/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    O QUESOCONSTANTES ?Constantes so valores que no alteram durante a execuo de uma rotina. Sodeclaradas da mesma forma que as variveis, a nica diferena reside no facto da

    atribuio ser feita na mesma instruo da declarao, e s poder ser feita uma nicavez.

    Const As = Const As =

    Figura 23 Manuseamento de Constantes

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    51/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    InputBox eInputBox eMsgBoxMsgBox

    O QUESO ?Para haver interaco entre o utilizador e uma macro ou programa necessrio que

    exista um interface de comunicao. Este poder ser mais ou menos complexo e

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    52/101

  • 8/14/2019 VBA Macro Excel

    53/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 a

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

    MSGBOX

    O que faz1. 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 oboto que foi clicado.

    Sintaxe______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    54/101

    Excel Macros e Visual Basic for Applications(verso Draft)

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

    semelhana da InputBox , pode-se dizer que a mesma possui diversos parmetros,mas somente o primeiro obrigatrio, sendo que todos os outros quando ignoradosassumem valores atribudos por defeito.

    Parmetros

    Parmetro 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 ode OK (por defeito) e o titulo da janela ser Mensagem de Erro.

    Constante de VBA Valor Descrio

    VbOKOnly 0 Exibe somente o boto de OK.VbOKCancel 1 Exibe os botes OK e Cancel.______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    55/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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 emqualquer 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 umcdigo por agrupamento.

    Exemplos:

    Para a instruo:

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

    exibida a seguinte janela:

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    56/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Figura 24 MsgBox

    Para a instruo:

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

    exibida a seguinte janela:

    Figura 25 MsgBox

    Valores Produzidos

    Como j foi referido, a funo MsgBox produz um valor em funo do boto accionado,assim produzir como output um dos valores constantes da tabela seguinte:

    Constante de VBA Valor Boto Accionado

    vbOK 1 OK vbCancel 2 CancelvbAbort 3 AbortvbRetry 4 RetryvbIgnore 5 Ignore

    vbYes 6 YesvbNo 7 No

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    57/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    58/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Domnio dasDomnio dasvariveis,variveis,

    constantes econstantes e

    rotinasrotinas

    O QUEODOMINIO?

    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.

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

    Existem 3 nveis de domnio para as variveis:

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    59/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    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.

    mbito do Procedimento

    Estas variveis so declaradas no corpo do procedimento com recurso palavra chave

    Dim.

    So variveis criadas aquando da execuo do procedimento e 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 nomeque a varivel da rotina Ambito_Procedimento_1 no existe qualquer ligao entre elas,

    so duas variveis distintas.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    60/101

    Excel Macros e Visual Basic for Applications(verso Draft)

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

    mbito do Mdulo

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

    Para declarar uma varivel do nvel modular, dever declar-la com a palavra chaveDim na seco Declarations do respectivo mdulo VBA. Neste caso qualquer varivela declarada ser considerada de nvel modular por defeito, para tornar esse facto maisexplicito poder-se- utilizar a palavra chave Private na declarao:

    Ex:Private Var_2 As String

    Exemplo:

    Dim Var_1 As Integer ou Private Var_1 As Integer

    Sub Ambito_Modulo()

    Var_1 = InputBox (Introduza um nmero Inteiro)Ambito_Modulo_2End Sub

    Sub Ambito_Modulo_2()MsgBox Foi este o nmero que introduziu: & Var_1

    End Sub

    Neste caso como a varivel reconhecida no mdulo por qualquer rotina nele existente,desde que seja referida sempre pelo mesmo nome, o procedimento Ambito_Modulo_2

    ir exibir o valor introduzido pelo utilizador no procedimento Ambito_Modulo.

    mbito do Projecto

    As variveis assim definidas tm o mbito correspondente a todo o projecto, isto podem ser acedidas e alteradas em todos e quaisquer mdulos. Para declararvariveis deste tipo dever faz-lo na seco Declarations de qualquer mdulo, paratal dever utilizar a palavra chave Public.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    61/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Exemplo:

    No Module_1 tem-se:

    Public Var_1 As Integer

    Sub Ambito_Projecto()Var_1 = InputBox (Introduza um nmero Inteiro)Ambito_Projecto _2

    End Sub

    No Module_2 tem-se:

    Sub Ambito_Projecto _2()MsgBox Foi este o nmero que introduziu: & Var_1

    End Sub

    A execuo do procedimento Ambito_Projecto no Module_1 mandou executar oprocedimento Ambito_Projecto do Module_2, e o valor atribudo varivel Var_1 foiacedido posteriormente noutro procedimento de outro mdulo, dado tratar-se de umavarivel global.

    DOMNIODAS CONSTANTES

    semelhana das variveis tambm as constantes tm 3 nveis de domnio:

    mbito do Procedimento ou Procedimental mbito do Modulo ou Modular mbito do Projecto

    mbito do Procedimento

    Estas constantes so declaradas no corpo do procedimento com recurso palavrachave Const. S tm existncia dentro do procedimento onde so declaradas.

    Exemplo:

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    62/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Sub Ambito_Procedimento()

    Const Taxa_Desc As Single = 0.05Dim Desconto As Double

    Desconto = InputBox (Introduza o montante das Compras) * Taxa_DescMsgBox O desconto de : & Desconto

    End Sub

    mbito do Mdulo

    Uma constante com mbito do Mdulo pode ser utilizada por todas as rotinasexistentes no mdulo onde definida.

    Para declarar uma constante a nvel modular, dever declar-la com a palavra chaveConst na seco Declarations do respectivo mdulo VBA. Neste caso qualquerconstante a declarada ser considerada de nvel modular por defeito, para tornar essefacto mais explicito poder-se- utilizar a palavra chave Private na declarao:

    Ex:Private Const Const_1 As String

    mbito do Projecto

    As constantes assim definidas tm o mbito correspondente a todo o projecto, isto podem ser utilizadas em todos e qualquer mdulo. Para definir constantes deste tipodever faz-lo na seco Declarations de qualquer mdulo, para tal dever utilizar a

    palavra chave Public.

    Ex:

    Public Const Const_1 As String

    DOMNIODE SUBROTINASE FUNESEstas s tm dois nveis de Scope: o nvel do projecto e o nvel do mdulo.

    Por defeito as rotinas so de mbito do projecto sem qualquer indicao adicional.Contudo poder tornar este facto mais explicito pela introduo da Palavra-ChavePublic, que em termos operacionais no adicionar qualquer funcionalidade, mas emtermos de leitura dar uma maior percepo.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    63/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Exemplo:

    Public Sub Ambito_Procedimento()Const Taxa_Desc As Single = 0.05Dim Desconto As Double

    Desconto = InputBox (Introduza o montante das Compras) * Taxa_DescMsgBox O desconto de : & Desconto

    End Sub

    Para que uma rotina tenha o mbito do mdulo onde est definida, dever ser antecedidapela palavra chave Private.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    64/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Estruturas deEstruturas de

    ControloControlo

    O QUESOESTRUTURASDECONTROLO?

    O VBA disponibiliza algumas estruturas que pode utilizar para controlar o decurso daexecuo da rotina. Estas estruturas do ao programador um poder enorme paraconstruir rotinas bastante complexas e flexveis.

    QUAISASESTRUTURAS

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    65/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    VBA Control

    If -Then - Else Testa uma condio e executa um determinado conjunto deinstrues consoante o resultado dessa avaliao

    For Next Executa uma determinada tarefa um determinado nmero devezes.

    While-Wend Executa uma determinada tarefa enquanto que umadeterminada condio permanea verdadeira, i.e., com ovalor True.

    Do Loop Executa uma determinada tarefa enquanto que a avaliao deuma condio permanea True ou ento at que seja True.

    Select - Case Selecciona um dos segmentos de cdigo a processar

    mediante a avaliao consecutiva de condies.For Each Next Realiza uma determinada tarefa repetitiva em cada objecto

    de uma coleco ou em cada item de um array.

    IF-THEN-ELSE

    Funo IF do Excel

    Recorrendo funo IF do Excel, recorde:

    =IF( , , )

    A funo IF tinha o seguinte comportamento:

    1. Avalia a condio, que dever ser uma expresso booleana colocada como primeiroparmetro;

    2. Se a condio for verdadeira, ento (then) realiza as operaes colocadas nosegundo parmetro;

    3. Caso contrrio (else), realiza as operaes que formam o terceiro parmetro

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    66/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    A estrutura IF do VBA tem o mesmo tipo de funcionamento, o que difere a sintaxe.

    Sintaxe da Estrutura If-Then-Else

    If Then

    [ Else ]

    End If

    A palavra Else opcional num If-Then-Else Statement, sendo que no caso de seromitida, a avaliao negativa da condio implica uma sada automtica da Instruo If.

    Aplicao Prtica

    Figura 26 Aplicao Prtica com um IF

    A rotina Aposta recebe uma aposta do utilizador e mediante o Sorteio a realizar pela

    respectiva funo, verifica se o jogador ganhou ou no a aposta, comunicando-lhe essefacto.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    67/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    Para uma maior clarificao do funcionamento do IF, atenda ao quadro seguinte:

    If Palavra chave que indica o inicio de uma instruo If-Then-Else

    Nsorteio = NAposta A condio a testar. Serve para determinar a sequncia a dar execuoda rotina. Da avaliao desta condio pode-se obter um de dois valoresTrue ou False, sendo que depende deste resultado o caminho a prosseguir.Se for True executar as instrues que seguirem a palavra-chave Thenat encontrar a palavra chave Else, no executando mais nada dentro doIF, caso contrrio executar o cdigo que se seguir palavra chave Elseat ao End If.

    Then Palavra chave que determina o fim da condio teste. Todas as instruesque tm inicio nesta palavra-chave at palavra-chave Else sero

    executadas se a condio for verdadeira.

    MsgBox Parabns!!Acertou em cheio! Onmero sorteado foi o &NSorteio

    Instrues a executar se a condio for verdadeira.

    Else Palavra-chave que determina o terminus de execuo das instruesquando o resultado da avaliao for True, e que determina o inicio dasinstrues a executar se o resultado da condio for False.

    MsgBox Continue aTentar!! O nmerosorteado foi o &NSorteio

    Instrues a executar se a condio for falsa.

    End If Palavra-chave que indica o fim do controlo de If-Then-Else e como talonde se deve retomar as instrues para prosseguir a execuo do

    procedimento.

    A instruo adicional ElseIf

    Esta instruo prope uma condio alternativa se o teste da condio anterior tiver tidoum resultado negativo.

    ______________________________________________________________________________________Geovane [email protected]

  • 8/14/2019 VBA Macro Excel

    68/101

    Excel Macros e Visual Basic for Applications(verso Draft)

    APLICAO PRTICA

    Pretende-se criar uma macro que classifique etariamente um indivduo em funo da suaidade. A classificao pretendida a seguinte:

    Idade Classe EtriaMenos de 3 anos BebDos 3 aos 12 CrianaDos 13 aos 17 AdolescenteDos 18 aos 25 JovemDos 26 aos 65 AdultoMais de 65 Idoso

    Figura 27 Aplicao Prtica com ElseIf