VBA Macro Excel
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