O documento apresenta um módulo sobre introdução a macros no Excel, abordando:
1) O que são macros e sua importância para automatizar tarefas repetitivas;
2) Dois métodos para criar macros - gravador de macros e código VBA;
3) Exemplo de macro criada via gravador para formatar células.
O documento apresenta um módulo sobre introdução a macros no Excel, abordando:
1) O que são macros e sua importância para automatizar tarefas repetitivas;
2) Dois métodos para criar macros - gravador de macros e código VBA;
3) Exemplo de macro criada via gravador para formatar células.
O documento apresenta um módulo sobre introdução a macros no Excel, abordando:
1) O que são macros e sua importância para automatizar tarefas repetitivas;
2) Dois métodos para criar macros - gravador de macros e código VBA;
3) Exemplo de macro criada via gravador para formatar células.
Neste mdulo veremos os principais fundamentos sobre Macros. Conheceremos exatamente o
que uma macro, como esta definida a sua estrutura e aprenderemos a realizar algumas operaes. Os conceitos vistos neste mdulo, sero de extrema importncia para o entendimento dos demais mdulos. IMPORTNCIA DA UTILIZAO DE MACROS Em determinados problemas, que surgem durante a criao das planilhas em Excel, no conseguimos resolv-los simplesmente utilizando os comandos e frmulas do Excel. Nessas situaes temos que fazer uso de recursos como Macros e Programao. A linguagem de programao do Excel o VBA Visual Basic for Applications. O VBA a linguagem de programao para todos os aplicativos do Microsoft Office como: Word, Excel, Access e PowerPoint. INTRODUO A MACROS Se caso surgir uma necessidade de se executar uma tarefa vrias vezes no Microsoft Excel, ao invs de perder tempo executando-as diversas vezes, podemos automatizar esta tarefa simplesmente com a criao de uma macro. Macro uma seqncia de comandos ou funes armazenados em um cdigo VBA, que pode ser executado sempre que se precisar executar a tarefa. As macros so uma excelente opo para automatizar tarefas repetitivas. Com o uso de macros temos um ganho de produtividade considervel, ao evitar que tenhamos que executar manualmente, os diversos passos de uma tarefa, passos estes que podem ser automatizados atravs do uso de uma macro. COMO CRIAR MACROS? Existem duas maneiras possveis para a criao de uma macro: Gravador de Macros Destinado a iniciantes em criao de Macros. Cdigo VBA Destinado a profissionais que possuem uma boa lgica de programao e que dominam a linguagem VBA. GRAVADOR DE MACROS X CDIGO VBA No mtodo de gravao, o Excel grava cada uma das aes que faro parte da macro e transforma estas aes nos comandos VBA equivalentes. Quando a macro for executada, os comandos VBA que sero efetivamente executados. Cada comando VBA corresponde a uma ao efetiva da macro. Por exemplo, vamos supor que por diversas vezes, voc precisa formatar uma determinada clula com Negrito, Itlico, cor de fonte Verde, Fonte Arial com Tamanho 16. Ao invs de ter que executar todos os comandos de formatao sempre que precisar deles, voc pode criar uma macro que aplica todos os comando de formatao. Aps criada a macro, cada vez que voc precisar aplicar o conjunto de comandos de formatao, basta executar a macro, bem mais fcil do que aplicar cada comando individualmente. Antes de gravar uma macro, planeje muito bem as etapas e os comandos que voc deseja que a macro execute. Se cometer um erro durante a gravao da macro, as correes feitas tambm sero gravadas como comandos da macro. Ao gravar macros, o VBA armazena cada macro em um mdulo de cdigo VBA, anexado a uma pasta de trabalho (arquivo. xls). Depois de gravada a macro, voc poder exibir o cdigo da macro com o Editor do VBA para corrigir erros ou alterar a funo da macro. O Editor do VBA um programa criado para facilitar a escrita e a edio do cdigo de macro para principiantes. Voc no precisa aprender a programar ou a usar a linguagem do Visual Basic para fazer alteraes simples nas suas macros. Nos prximos mdulos veremos como trabalhar melhor com o Editor do VBA. Na figura a seguir temos um exemplo de cdigo associado a uma macro. Esse um exemplo de cdigo VBA:
Alm disso, no Editor do VBA, podemos editar macros, copiar macros de um mdulo para o outro, copiar marcos entre pastas de trabalho diferentes e renomear as macros. Por exemplo, se voc quisesse que a macro formatar, da figura acima, tambm deixasse a clula formatada com sublinhado, voc poderia gravar outra macro para aplicar o sublinhado e copiar as instrues dessa nova macro para a macro formatar. CRIAR UMA MACRO USANDO O GRAVADOR DE MACROS Iremos criar uma macro chamada FormataCelula usando o gravador de macros, onde esta macro dever formatar a clula atual com Negrito, cor de fonte Verde e com cor de plano de fundo cinza. Para isso, proceda da seguinte maneira: 1. Abra o arquivo Exerccio 1.xls, localizado na pasta da turma. 2. Clique a clula B5. 3. Clique o menu Ferramentas. 4. Selecione a opo Macros, clique a opo Gravar nova macro... Sugira assim a tela Gravar macro:
5. No campo Nome da macro, digite FormataCelula. 6. No campo Tecla de atalho, digite L. Observe que o Excel troca para Ctrl+Shift+L, pois a combinao Ctrl+L j esta associada a outro comando do Excel.
7. No campo Descrio, digite Formata em negrito, verde e fundo cinza. 8. Clique o boto OK. Com isso, a gravao da macro ser iniciada e todos os comandos que voc executar durante a gravao da macro, faro parte da macro. Perceba que uma nova barra de ferramentas chamada Parar Gravao surge, onde atravs dela podemos interromper a gravao da macro. A partir deste ponto, devemos executar todos os comandos que faro parte da macro. 9. Clique o menu Formatar. 10. Clique a opo Clulas. 11. Formate em Negrito, cor Verde e cor de plano de fundo cinza. 12. Clique o boto Parar Gravao , para encerrar a gravao da macro. Com isso, a macro FormataCelula foi criada e podemos utiliz-la sempre que for necessrio.
Para executar a macro FormataCelula, proceda da seguinte maneira: 1. Clique a prxima clula a ser formatada, exemplo C8. 2. Pressione Ctrl+Shift+L. A macro FormataCelula executada e as informaes definidas pela macro so automaticamente aplicadas a clula selecionada. Uma outra maneira de executar macros utilizando o menu Ferramentas, opo Macro, subopo Macros. Com isso ser exibida a janela Macro, onde esto listadas as macros existentes na pasta de trabalho atual, confirme visto na figura a seguir:
Nesta tela, voc ir selecionar o nome da macro a ser executada e clicar sobre o boto Executar. A macro ser executada e as formataes sero aplicadas clula que estava selecionada. Sua planilha dever exibir o seguinte aspecto:
ESTRUTURA DE UMA MACRO Na macro criada anteriormente chamada de FormataCelula, podemos perceber que ao execut- la os comandos de formatao so novamente executados e aplicados clula onde esta o cursor ou na faixa de clulas selecionadas. Isto acontece porque no ato da gravao da macro o Excel gera para cada comando que efetuamos um cdigo VBA equivalente formando assim a nossa macro. O que iremos ver agora justamente esta estrutura que compem toda a nossa macro. Para acessar os comandos VBA associado a uma macro, proceda da seguinte maneira: 1. Com o arquivo j aberto, clique o menu Ferramentas. 2. Selecione a opo Macro, clique a subopo Macros. Com isso ser exibida a janela Macros. 3. Selecione a macro FormataCelula. 4. Clique o boto Editar. Com isso o Editor do VBA ser carregado e sero exibidas as linhas de cdigo referente a nossa macro.
Estes so os comandos VBA referentes a macro FormataCelula. Caso no entenda os comandos, no se preocupe, pois ainda os estudaremos mais adiante.
A seguir esta descrito o que faz cada um dos principais comandos desta macro: Estes comandos aplicam a fonte Arial, o estilo Negrito, o tamanho 10 e a cor de fonte verde, para as clulas atualmente selecionadas.
Estes comandos aplicam a cor de plano de fundo cinza, para as clulas atualmente selecionadas.
5. Salve e feche o Editor do VBA. OPERAES COM MACROS Depois de criadas as macros podemos futuramente precisar realizar algum de tipo de alterao nelas, seja em seu cdigo ou no comando de teclado (tecla de atalho). Podemos precisar tambm renome-las e at mesmo exclu-las caso seja necessrio. Todas estas aes esto ligadas s operaes com macros. RENOMEAR UMA MACRO Esta ao deve ser realizada toda vez que se deseja modificar o nome de uma ou mais macros do arquivo. Para poder renomear uma macro, proceda da seguinte maneira: 1. Com o arquivo aberto, clique o menu Ferramentas. 2. Selecione a opo Macro, clique a sub-opo Macros. Ser exibida a janela Macros
3. Clique a macro FormataCelula para selecion-la. 4. Clique o boto Editar. Com isso, ser aberto o Editor do VBA com o cdigo da macro, onde o nome da mesma vem aps o comando Sub na primeira linha. With Selection.Font .Name = "Arial" .FontStyle = "Negrito" .Size = 10 .ColorIndex = 10 End With With Selection.Interior .ColorIndex = 48 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With
5. Altere o nome da macro FormataCelula para Formatar. 6. Clique o boto Salvar. 7. Feche o Editor do VBA. Com isso a macro foi renomeada, caso deseje confirmar, clique o menu ferramentas, selecione a opo macro e clique na sub-opo macros, voc ver na tela que a macro agora se chama Formatar. ALTERANDO A TECLA DE ATALHO E A DESCRIO ASSOCIADA A MACRO Esta ao deve ser realizada caso seja necessrio modificar por algum motivo a tecla de atalho que esteja associada a uma macro e o seu comentrio que de extrema importncia, pois resume o funcionamento da macro. Para fazer a alterao, proceda da seguinte maneira: 1. Com o arquivo aberto, clique o menu Ferramentas. 2. Selecione a opo Macro, clique a sub-opo Macros. Ser exibida a janela Macros.
3. Clique a macro Formatar para selecion-la. 4. Clique o boto Opes. Com isso, ser exibida a janela Opes de Macro.
Nesta tela podemos fazer a alterao da tecla de atalho e da descrio atribudos macro. 5. Na Tecla de Atalho, digite: W. 6. Na Descrio, digite: Formatao em negrito, com cor verde e plano de fundo na cor cinza. 7. Clique o boto OK. Com isso a tecla de atalho e a descrio da macro foram alteradas.
EXCLUIR UMA MACRO Esta ao dever ser realizada quando no houver mais a necessidade da utilizao da macro no arquivo. Para isto, proceda da seguinte maneira: 1. Com o arquivo aberto, clique o menu Ferramentas. 2. Selecione a opo Macro, clique a sub-opo Macros. 3. Selecione a macro a ser excluda, no nosso caso selecione a macro Formatar. 4. Clique o boto Excluir. Com isso ir surgir uma caixa de mensagem para confirmar a excluso da macro.
5. Clique o boto Sim. IMPORTANTE! Caso a macro esteja associada a algum controle de formulrio, por exemplo, um boto, a simples excluso do boto NO EXCLUI A MACRO associado a este.
Com isso a macro Formatar foi excluda do arquivo.
ASSOCIANDO MACROS A CONTROLES DE FORMULRIOS A associao de uma macro a um controle de formulrio deve ser feita sempre que se deseja executar uma macro de uma forma mais simples e rpida, onde ao invs de irmos no menu Ferramentas, opo Macro, sub-opo Macros, selecionar a macro desejada e clicar o boto executar, podemos apenas clicar sobre um boto e a macro associada a ele automaticamente executada. Esta associao importante principalmente quando a sua planilha for usada por usurios leigos em Excel, facilitando assim os seus trabalhos. Para testar este recurso, iremos criar uma nova macro com o nome de Classificar, cuja tarefa ser de classificar a tabela pelo campo Cdigo em ordem crescente, depois inserir um boto na planilha e associ-lo a macro classificar. Para isso, proceda da seguinte maneira: 1. Abra o arquivo Exerccio 2.xls, localizado na pasta da turma. 2. Clique o menu Ferramentas. 3. Clique a opo Macro, clique a sub-opo Gravar nova macro. Surgir assim tela Gravar macro. 4. Em Nome da macro, digite Classificar. 5. Clique o boto OK. Aparecer ento, a barra de ferramentas Parar Gravao. 6. Selecione a linha de cabealho da tabela correspondente ao intervalo de clulas A1:F1. 7. Pressione as teclas SHIFT + END + , com isso toda a tabela dever ser selecionada. 8. Classifique a tabela pelo campo Cdigo em ordem crescente. 9. Clique a clula A1. 10. Clique o boto Parar Gravao. ASSOCIAR A MACRO AO BOTO 1. Clique o menu Exibir. 2. Clique a opo Barra de Ferramentas. 3. Clique a sub-opo Formulrios. Com isso, aparecer a barra de ferramentas Controle de Formulrios.
4. Insira na planilha o controle chamado Boto. Com isso, surgir tela Atribuir Macro.
5. Clique a macro classificar para selecion-la. 6. Clique o boto OK. Pronto! Com isso a macro Classificar encontra-se associada ao boto, onde um simples clique sobre este, implicar na execuo das instrues que compem a macro. MDULO 2 - INTRODUO AO VBA NO EXCEL Uma linguagem de programao, basicamente, uma forma que o programador tem de se comunicar com a mquina, atravs de um conjunto de comandos, rotinas, objetos e funes que executam tarefas especficas. Utilizar-se do cdigo VBA para a criao das macros, oferece ao programador uma grande quantidade de opes para solucionar problemas mais complexos e que no podem ser somente resolvidos com o uso de comandos e funes internas do Excel. A linguagem de programao utilizada no Microsoft Excel o VBA Visual Basic for Applications. Com o VBA possvel que o programador tenha acesso completo a todos os objetos de uma planilha do Excel. Fazer uso do VBA em planilhas do Excel, garante ao programador algumas vantagens como: Acessar dados de uma ou mais planilhas; Manipular objetos; Criar funes definidas pelo usurio, onde este sem dvida um dos maiores benefcios do VBA. Definir condies e controlar o fluxo de dados atravs de estruturas para a realizao de testes condicionais e para a repetio de um conjunto de comandos; Realizar clculos complexos e solucionar problemas que envolvam uma lgica complexa. O AMBIENTE DE PROGRAMAO (EDITOR VBA) O Microsoft Excel nos oferece um ambiente de programao bastante poderoso, com uma srie de recursos que facilitam a criao do cdigo VBA. Dentro deste ambiente, so oferecidas uma srie de facilidades e dicas para que o programador possa encontrar facilmente os objetos disponveis. Para conhecermos melhor o Editor VBA temos na figura abaixo um exemplo de uma macro chamada AplicaNegrito.
PROJETO VBA PROJECT E JANELA DE PROPRIEDADES Dentro do Editor VBA no lado esquerdo, temos duas janelas que so de extrema importncia, a janela do projeto o VBA Project e a Janela de Propriedades. VBA Project Nesta janela so exibidos os vrios elementos que fazem parte da Pasta de trabalho atual, onde so exibidas as planilhas e mdulos.
Ao criar uma macro, podemos cria-la em uma determinada planilha, mas esta somente poder ser utilizada dentro da planilha onde ela foi criada, caso deseje criar uma macro que possa ser trabalha em qualquer uma das planilhas do arquivo, esta dever ser criada em um dos mdulos existentes. Podemos dentro de uma pasta de trabalho possuir diversos mdulos, principalmente quando se tem planilhas complexas, da podemos dividir estes mdulos em categorias como, por exemplo: criar um mdulo somente para a criao de funes para clculo de data, outro para funes de validao de dados, outro para funes de clculos financeiros e assim por diante. Esta diviso facilita a localizao, manuteno e alterao das funes e cdigos existentes. Janela de Propriedades Exibe as propriedades do objeto selecionado na janela VBA Project. Por exemplo, ao selecionar Plan1, na janela VBA Project, na janela propriedades sero exibidas as propriedades de Plan1.
PESQUISADOR DE OBJETO O Editor do VBA facilita muito o trabalho do programador na manipulao de um objeto pois possui uma janela que exibe uma listagem de todas as bibliotecas disponveis, bem como a lista de cada objeto de cada biblioteca, juntamente com todas as suas propriedades e mtodos, esta janela chamada de Pesquisador de Objeto. Para exibi-la proceda da seguinte maneira: 1. Dentro do Editor VBA, clique o menu Exibir. 2. Clique a opo Pesquisador de Objeto. Com isso, ir surgir a janela do Pesquisador de Objeto.
Na lista Todas as Bibliotecas, podemos selecionar uma biblioteca especfica, para que o pesquisador mostre somente os objetos da biblioteca selecionada. Por exemplo, selecione a biblioteca Excel, na lista de objetos do lado esquerdo selecione o objeto Range, com isso do lado direito do painel ser exibida uma lista com os mtodos e propriedades do objeto Range.
Alm do Pesquisador de Objeto, o Excel oferece um outro recurso para localizar um mtodo ou propriedade de um objeto, este recurso se d no momento da digitao do cdigo onde aps digitar o nome do objeto sucedido de um ponto, surgir automaticamente uma lista com estes mtodos e propriedades.
Pronto! Com isso aprendemos algumas noes bsicas sobre o Editor do VBA. MDULO 3 VARIVEIS Uma varivel um espao criado na memria do computador durante a execuo de um programa, utilizado para armazenar um ou mais valores. Estes espaos so referenciados pelo programador atravs da atribuio de nomes, ou seja, atribumos nomes as variveis utilizadas no programa. Elas possuem esta nomenclatura, pelo fato de poder ter o seu contedo modificado durante a execuo do programa, da o nome Variveis. O programador antes de utilizar a varivel dentro do cdigo, deve primeiramente declar-la, ou seja, nas linhas iniciais do cdigo deve-se definir o nome de todas as variveis que sero utilizadas, bem como o contedo que ser armazenado nesta, a esta definio damos o nome de Tipos de Dados. Tipos de Dados basicamente determinar para o programa qual o tipo do contedo que a varivel ir armazenar, por exemplo: podemos definir que uma varivel ir armazenar somente valores inteiros numa faixa de 0 a 250, ou podemos tambm definir que a varivel ir armazenar caracteres de texto de tamanho varivel ou ainda definir que a varivel poder armazenar nmeros com casas decimais. Esta definio do tipo de dados da varivel extremamente importante, pois economizamos espao na memria do computador. Esta economia de espao na memria atravs da definio do tipo de dados mais adequado para uma varivel se da pelo fato de que cada tipo de dados ocupa um determinado espao em memria, por exemplo: uma varivel do tipo de dados que armazena nmeros inteiros ocupa na memria menos espao que uma varivel do tipo de dados que armazena caracteres de texto. No VBA, no obrigatrio declarao de variveis. Porm recomendvel que as declaremos, para a economia de espao mencionada anteriormente e tambm para que o cdigo fique mais claro e de fcil compreenso. DECLARAO DE VARIVEIS Para a declarao de uma varivel devemos sempre utilizar o comando Dim, que vem do termo Dimenso, seguido do nome da varivel, conforme exemplo: Dim x Dim nome Dim idade Neste exemplo, estamos apenas declarando o nome da varivel, sem declarar de que tipo (texto, nmero inteiro, data, decimal, etc.) a varivel. Deste modo a sintaxe completa de declarao de variveis a seguinte: Dim nome_da_varivel As tipo_da_varivel Podemos tambm em um nico comando Dim, declarar mais que uma varivel, sendo estas do mesmo tipo de dados, por exemplo: Dim idade, quantidade As tipo_da_varivel Dim nome, produto, codigo As tipo_da_varivel. OPTION EXPLICIT Embora a declarao de variveis seja importante, tambm podemos utilizar variveis que no foram, explicitamente, declaradas com o comando Dim. Com isso, a varivel criada na memria, no momento da sua utilizao. Mas se desejar que toda varivel tenha que estar declarada para poder ser utilizada, basta utilizar o comando Option Explicit na seo de declarao do mdulo. Ao definirmos este comando na seo de declarao do mdulo, estamos definindo que toda varivel deve ser declarada, antes de ser utilizada. Caso se utilize de uma varivel no declarada, ser gerado um erro de compilao e a execuo dos comandos interrompida. Abaixo temos um exemplo de variveis no explicitamente declaradas: Dim num1, num2 As tipo_da_varivel Soma = num1 + num2 Ao tentarmos executar este cdigo, estando definido o comando Option Explicit, iremos obter uma mensagem de erro, pois utilizamos a varivel soma que no foi declarada, conforme a figura abaixo:
TIPOS DE VARIVEIS O tipo de uma varivel serve para determinar na memria o espao que ser alocado para armazenar uma informao. O tipo de varivel padro do VBA o tipo Variant, que formado por pequenas unidades, chamadas de subtipos, onde cada subtipo identifica de que maneira os dados sero armazenados em uma varivel do tipo Variant. No indicado utilizar-se de variveis com o tipo Variant, pois da ser difcil restringir ao usurio o tipo da informao que ser armazenada, exemplo: Desejo que o usurio digite apenas nmeros inteiros. Caso a varivel que receber este nmero tenha sido declara com o tipo Variant, o usurio poder ento digitar qualquer outra informao que no seja um nmero inteiro. SUBTIPOS DO TIPO VARIANT Subtipo Significado Tamanho Empty Valor zero para variveis numricas ou String de tamanho (), para variveis de texto. - Boolean Variveis que s podem assumir dois valores: Verdadeiro ou Falso (True or False). 2 Bytes Byte Valor Inteiro, na faixa de 0 a 255. 1 Byte Integer Valor Inteiro, na faixa de -32768 a 32767. 2 Bytes Currency Valor real na faixa de - 923.337.203.685.447,5808 at 923.337.203.685.447,5807. 8 Bytes Double Valor real na faixa de 1.79769313486232E308 at 4.94065645841247E-324. 8 Bytes Long Valor Inteiro, na faixa de - 2.147.483.648 at 2.147.483.647. 4 Bytes Date (Time) Nmero que representa a data entre 01 de janeiro do ano 100, at 31 de dezembro de 9999. 8 Bytes String Texto de tamanho varivel, pode conter, aproximadamente, 2 bilhes de caracteres. 1 Byte por caractere Object Pode conter um objeto qualquer, como Controle ActiveX. 4 Bytes OPERADORES ARITMTICOS Para podermos realizar clculos entre as variveis, devemos utilizar operadores. Abaixo segue uma tabela com os operadores aritmticos disponveis: Operador Smbolo Descrio Adio + Soma o valor das variveis. Subtrao - Subtrai o valor das variveis. Multiplicao * Multiplica o valor das variveis. Diviso / Divide o valor das variveis. Inteiro da diviso entre 2 nmeros \ Parte inteira da diviso das variveis. Exponenciao ^ x^y nmero x elevado a potncia y. Mdulo Mod Resto da diviso de 2 nmeros. OPERADOR DE ATRIBUIO Quando pretendemos atribuir valores as variveis, devemos indicar o nome da varivel, seguido do operador (=) e o valor a ser armazenado na varivel. Como exemplo observe o cdigo a seguir: Nome = Fbio Abreu Qtd = 86 No cdigo acima a varivel Nome esta armazenando o texto Fbio Abreu e a varivel Qtd esta guardando o nmero 86.
OPERADORES RELACIONAIS Para podermos estabelecer relaes entre as variveis, devemos utilizar operadores. Abaixo segue uma tabela com os operadores relacionais disponveis: Operador Smbolo Maior > Menor < Maior ou Igual >= Menor ou Igual <= Diferente <> Igual = EXERCCIO 1 Para utilizarmos os conceitos vistos at aqui, proceda da seguinte maneira: 1. Abra o arquivo Exerccio 3.xls, localizado na pasta da turma. 2. Abra o Editor do VBA. 3. Abra o mdulo chamado Mdulo1. Com isso, ir aparecer uma macro chamada calcular.
Dentro desta macro, digite o seguinte cdigo:
4. Depois de digitado o cdigo aperte a tecla de atalho F5, para executar a macro. Ser exibida uma caixa de mensagem:
5. Clique em OK. Ser exibida uma caixa de mensagem:
6. Clique em OK. Ser exibida uma caixa de mensagem:
7. Clique em OK. Ser exibida uma caixa de mensagem:
8. Clique em OK. Ser exibida uma caixa de mensagem:
9. Clique em OK. Ser exibida uma caixa de mensagem:
10. Clique em OK. Ser exibida uma caixa de mensagem:
Neste exerccio, utilizamos operadores aritmticos para realizar operaes com os valores das variveis num1 e num2. Alm disso, fizemos uso de uma funo chamada Msgbox, que exibe mensagens em uma pequena janela, chamada de Pop-Up e utilizamos tambm o operador de concatenao (&). VARIVEIS - ARRAYS Uma varivel que representa um conjunto de variveis do mesmo tipo. Um array pode ser unidimensional ou bidimensional.
ARRAY UNIDIMENSIONAL Constitudo por uma nica lista de elementos indexveis, onde possumos um elemento inicial e outro elemento final, sendo que cada elemento da lista corresponde a um nico ndice. 0 1 2 3 4 5 ARRAY BIDIMENSIONAL Um pouco mais complexo que o unidimensional, constitudo por um conjunto de listas do mesmo comprimento, sendo que este formato normalmente conhecido como array ou matriz. Constitudo, portanto de linhas e colunas, onde cada elemento identificado por um ndice composto pela interseo dos nmeros das linhas e colunas. 0 1 2 0 1 2 3 Note que o primeiro elemento de qualquer array sempre possu ndice 0.
DECLARAO DE ARRAYS A declarao de um array semelhante a declarao de uma varivel comum, com exceo de um ndice que identifica quantas linhas e colunas este array deve possuir. Em um array unidimensional, como temos apenas uma nica lista correspondente a quantidade de elementos que a varivel deve armazenar a sintaxe se d da seguinte maneira: Dim nome_array (ndice) As tipo_da_varivel Onde, ndice representa o nmero de elementos que faro parte do array, exemplo: Dim ArrayNumerico(10) As Integer Na declarao do array anterior, estamos declarando que o array ter 10 posies ou 10 elementos, do mesmo tipo Integer. Com isso, ao invs de declararmos 10 variveis, temos apenas uma, tornando assim o cdigo mais legvel e simples. ArrayNumerico 0 1 2 3 4 5 6 7 8 9 Em que cada elemento do tipo Integer. J em um array bidimensional, como a varivel composta por diversas listas correspondente a quantidade de elementos que esta deve armazenar a sintaxe se d da seguinte maneira: Dim nome_array (ndice) As tipo_da_varivel Onde, ndice representa o nmero de linhas e colunas que faro parte do array, exemplo: Dim TabelaTextual (5, 4 ) As String Na declarao do array anterior, estamos declarando que o array ter 5 linhas e 4 colunas, podendo assim armazenar 20 elementos, do mesmo tipo String. Com isso, ao invs de declararmos 20 variveis, temos apenas uma, tornando assim o cdigo mais legvel e simples. TabelaTextual 0 1 2 3 0 1 2 3 4 Em que cada elemento do tipo String. EXERCCIO 1 1. Abra o arquivo Exerccio 4.xls localizado na pasta da turma. 2. Abra o Editor do VBA. 3. Abra o mdulo chamado Mdulo1. Com isso, ir aparecer uma macro chamada arrayuni.
Dentro desta macro, digite o seguinte cdigo:
4. Depois de digitado o cdigo aperte a tecla de atalho F5, para executar a macro. Ser exibida uma caixa de mensagem:
5. Clique em OK. Ser exibida uma caixa de mensagem:
6. Clique em OK. Ser exibida uma caixa de mensagem:
7. Clique em OK. Ser exibida uma caixa de mensagem:
Neste exerccio, utilizamos um array unidimensional de 4 elementos para armazenar nomes dos alunos e mostra-los na tela atravs da funo msgbox. EXERCCIO 1 1. Abra o arquivo Exerccio 4.xls localizado na pasta da turma. 2. Abra o Editor do VBA. 3. Abra o mdulo chamado Mdulo2. Com isso, ir aparecer uma macro chamada arraybi.
Dentro desta macro, digite o seguinte cdigo:
4. Depois de digitado o cdigo aperte a tecla de atalho F5, para executar a macro. Ser exibida uma caixa de mensagem:
5. Clique em OK. Ser exibida uma caixa de mensagem:
Neste exerccio, utilizamos um array bidimensional com 2 linhas e 2 colunas totalizando assim 4 elementos para armazenar nomes e mdias dos alunos e mostra-los na tela atravs da funo msgbox. Alm disso, fizemos uso no cdigo de uma funo chamada Chr(nmero). Esta funo envia como resultado para a funo msgbox o caractere correspondente ao nmero digitado entre parnteses. Este nmero, o nmero do caractere no padro ASCll (American Standard Caracter Interchange Information). No cdigo ASCII, cada caractere possui um nmero associado, no caso do nmero 13, este se encontra associado ao <ENTER>, o que equivale a uma troca de linha. Assim utilizamos o Chr(13) para simular um <ENTER>, de tal maneira que os dados no apaream todos grudados na mesma linha. ESCOPO OU DOMNIO DAS VARIVEIS O Escopo ou domnio de uma varivel define a rea de aplicao na qual a varivel pode ser utilizada, ou seja, em qual rea ela pode ser acessada. Existem 3 nveis de escopo para as variveis: Escopo de Procedimento/Funo Escopo de Mdulo Escopo de Projeto ESCOPO DE PROCEDIMENTO/FUNO uma varivel que foi inicialmente declarada dentro de um procedimento ou funo, sendo que esta varivel somente pode ser utilizada dentro deste procedimento ou funo. So variveis criadas no momento da execuo do procedimento ou funo e destrudas automaticamente ao trmino da execuo do procedimento ou funo. Assim sendo, qualquer tentativa de se acessar uma varivel dentro de um procedimento que foi declarada no corpo de um outro procedimento, esta no ter xito. Para melhor entendermos a utilizao das variveis com escopo de procedimento/funo, proceda da seguinte maneira: 1. Abra uma nova pasta de trabalho. 2. Abra o Editor do VBA. 3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute a sub-rotina proc1. Com isso ir surgir uma caixa de mensagem com o valor da varivel var.
5. Clique o boto OK. Em seguida, surgir uma nova caixa de mensagem em branco.
Neste exemplo, dentro do procedimento proc1, declaramos uma varivel do tipo Integer chamada var, e atribumos a ela o valor 5. Logo em seguida mostramos o valor desta varivel na tela usando a funo msgbox. Depois, ainda no procedimento proc1, chamamos o procedimento proc2 que tambm mostra o valor da varivel var1 na tela atravs da funo msgbox, mas perceba que na segunda caixa de mensagem o valor da varivel no aparece, ou seja, a varivel no contm valor. Isso acontece pelo fato da varivel esta declarada dentro do procedimento proc1. ESCOPO DE MDULO uma varivel que foi inicialmente declarada na seo de declaraes do mdulo, fora de qualquer procedimento. Com isso a varivel pode ser utilizada dentro de todos os procedimentos e funes existentes dentro do mdulo. Para melhor entendermos a utilizao das variveis com escopo de mdulo, proceda da seguinte maneira: 1. Abra uma nova pasta de trabalho. 2. Abra o Editor do VBA. 3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute a sub-rotina proc1. Com isso ir surgir uma caixa de mensagem com o valor da varivel var.
5. Clique o boto OK. Em seguida, surgir uma nova caixa de mensagem novamente com o valor da varivel var.
Neste exemplo, dentro seo de declarao do mdulo, declaramos uma varivel do tipo Integer chamada var. Dentro do procedimento proc1 atribumos a varivel o valor 5. Logo em seguida mostramos o valor desta varivel na tela usando a funo msgbox. Depois, ainda no procedimento proc1, chamamos o procedimento proc2 que tambm mostra o valor da varivel var1 na tela atravs da funo msgbox. Perceba com isso que tanto no proc1 quanto no proc2, conseguimos ter acesso ao valor da varivel var, justamente pelo fato de esta ser de escopo modular. ESCOPO DE PROJETO uma varivel que foi inicialmente declarada na seo de declaraes do mdulo, fora de qualquer procedimento, muito parecido com a declarao das variveis de escopo modular com a diferena que antes do nome da varivel deve-se utilizar a palavra chave Public. Com isso a varivel pode ser utilizada dentro de qualquer mdulo da pasta de trabalho, ou seja, do projeto. Para melhor entendermos a utilizao das variveis com escopo de projeto, proceda da seguinte maneira: 1. Abra uma nova pasta de trabalho. 2. Abra o Editor do VBA. 3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Em seguida, insira um novo mdulo, digitando o seguinte cdigo:
5. Retorne ao mdulo anterior e execute o procedimento proc1. Com isso ir surgir uma caixa de mensagem com o valor da varivel var.
6. Clique o boto OK. Em seguida, surgir uma nova caixa de mensagem com o novo valor da varivel var.
Pronto! Com isso aprendemos sobre a declarao, utilizao e escopo de variveis.
MDULO 4 SUB-ROTINAS E FUNES Como visto em mdulos anteriores, quando se grava uma macro no Excel, este tem um comportamento em background que realiza a respectiva codificao para Visual Basic for Applications, onde cada macro criada d origem a um procedimento ou rotina. Existem dois tipos de rotinas: 1. Sub-rotinas ou rotinas Sub. 2. Funes. SUB-ROTINAS Um grupo de comandos que podem ser executados, atravs da chamada do nome da sub-rotina, cuja definio delimitada pelas palavras-chave Sub e End Sub. As sub-rotinas podem possuir ou no argumentos, que so valores passados para a sub-rotina, os quais sero utilizados internamente para a realizao de clculos, por exemplo, se voc vai criar um sub-rotina para clculo do desconto do cliente com base no seu valor de compra, voc poderia definir um argumento para esta sub-rotina que ir inform-la o salrio do cliente. Para criao de uma sub-rotina, devemos seguir a seguinte sintaxe: Sub <nome_da_sub-rotina> (<lista_de_argumentos>) <bloco_de_comandos> End Sub Na <lista_de_argumentos>, cada argumento que compor esta sub-rotina, deve estar associado a um tipo de dados, caso essa informao seja omitida, ser considerado o tipo default para o argumento, no caso Variant. As sub-rotinas so designadas pelo nome que lhe atribumos, onde este nome pode ser qualquer, desde que no contenham espaos, nem comecem por caracteres numricos. Como visto anteriormente, as sub-rotinas podem ou no conter argumentos. Caso sejam necessrios, estes devem ser passados quando a sub-rotina for chamada e devem estar na mesma ordem em que foram definidos. Para ter a noo do que so parmetros lembre-se do funcionamento das funes do Excel, que para executarem determinada funo necessitam de receber parmetros que colocamos entre parnteses separados por vrgulas. Quando criar sub-rotinas, procure utilizar nomes que descrevem a funo da sub- rotina. Com isso tornamos o cdigo mais fcil de ser entendido.
Uma vez criada a sub-rotina, sempre que fomos cham-la dentro de um cdigo, devemos digitar o nome da sub-rotina precedido da palavra Call. Para melhor entendermos o funcionamento de uma sub-rotina, vamos ao um exemplo prtico: 1. Abra uma nova pasta de trabalho. 2. Abra o Editor do VBA. 3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Execute o procedimento proc1. Com isso, surgir na tela a seguinte caixa de mensagem:
No exemplo anterior, temos dois procedimentos, o primeiro chamado de proc1, onde temos duas variveis declaradas. Em seguida, atribumos valores a estas variveis e as passamos como argumentos para o procedimento concatena, que esta declarada logo abaixo. No procedimento concatena, pegamos os valores das duas variveis e mostramos na tela usando a funo msgbox, EXERCICIO 1. Em uma nova pasta de trabalho, abra o Editor do VBA e crie dois procedimentos: Calcula_Desc: Este procedimento dever receber como parmetro, duas variveis do tipo Currency chamadas respectivamente de Salario e Desconto. Dentro do procedimento devera ser declarada uma varivel local do tipo Currency chamada Sal_Final, esta varivel devera receber o valor do salrio com desconto. Em seguida o valor da varivel Sal_final deve ser mostrado na tela. Proc1: Neste procedimento deve-se declarar duas variveis locais do tipo Currency chamadas respectivamente de Salario e Desconto. Em seguida, atribua um valor qualquer a varivel Salario, exemplo (2000), e outro valor a varivel Desconto, exemplo (0.1) e passe estas duas variveis como parmetro para a funo Calcula_Desc. 2. Por fim execute a funo Proc1. Com isso dever ser exibida na tela uma caixa de mensagem informando o salrio j descontado.
FUNES Um grupo de comandos que podem ser executados, atravs da chamada do nome da funo, cuja definio delimitada pelas palavras-chave Function e End Function. Toda funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e tem como objetivo executar um conjunto de instrues e produzir um valor final. Isto , toda vez que se executar uma funo, esta sempre produzir um valor. Recorde-se como exemplo a funo SUM, esta recebe por parmetro um conjunto de valores que se pretende somar e sabe-se que o resultado da aplicao dessa funo ao conjunto de valores ser o respectivo somatrio. As funes podem ou no conter argumentos. Caso sejam necessrios, estes devem ser passados quando a funo for chamada e devem estar na mesma ordem em que foram definidos. Para definir o valor produzido por uma funo basta no seu interior, atribuir ao nome da funo um determinado valor ou expresso. Quando criar funes, procure utilizar nomes que descrevem a funo da sub-rotina. Com isso tornamos o cdigo mais fcil de ser entendido.
CUIDADO! No confundir Sub-rotina com funo. Apesar de suas sintaxes serem parecidas, uma funo sempre retorna um ou mais valores para o comando que a chamou. Para criao de uma funo, devemos seguir a seguinte sintaxe: Sub <nome_da_funo> (<lista_de_argumentos>) As <Tipo> <bloco_de_comandos> End Function Observe que alm da <lista_de_argumentos>, onde cada argumento que compor esta funo deve estar associado a um tipo de dados, temos tambm um <tipo>. Este <tipo> esta associado funo e serve para especificar o tipo de dados que a funo ir retornar, caso esteja omitido, ser considerado o tipo default, no caso Variant. Considere o exemplo a seguir:
No exemplo anterior, declaramos uma funo chamada converte_dolar, que espera receber dois argumentos do tipo Currency (valor_real, cotao_dolar) e definimos tambm que a funo ir retornar um valor do mesmo tipo Currency. No momento em que formos chamar esta funo em algum cdigo, devemos utilizar o operador de atribuio, isto , o valor que a funo ir retornar, deve ser atribudo a uma varivel, ou exibido na tela atravs da funo msgbox. No prximo exemplo, estamos atribuindo a varivel valor_dolar, o valor retornado pela funo converte_dolar.
Ao invs de atribuir o valor de retorno da funo a uma varivel, poderamos exibi-lo na tela usando a funo msgbox.
Para melhor entendermos o funcionamento de uma funo, vamos ao um exemplo prtico: 1. Abra o arquivo Exerccio 6.xls localizado na pasta da turma.
2. Abra o Editor do VBA. 3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:
4. Salve e feche o Editor do VBA. Com isso, sua funo j esta pronta. Vamos agora test-la em uma clula dentro do Excel.
EXECUTANDO A FUNO CRIADA, NO EXCEL Para utilizar a funo criada no VBA, dentro de uma clula em uma das planilhas do Excel, proceda da seguinte maneira: 1. Selecione a clula D4. 2. Clique o menu Inserir. 3. Clique a sub-opo Funo. Com isso, surgir janela Inserir Funo.
4. Selecione a categoria Definida pelo usurio. 5. Selecione o nome da funo calcula_desconto. 6. Clique o boto OK. Com isso, surgir a tela Argumentos da funo.
7. No campo Salrio, digite B4. 8. No campo Desconto, digite C4. 9. Clique o boto OK. 10. Copie a frmula no intervalo de clulas D4:D10. A planilha dever ser exibida conforme a figura abaixo.
MDULO 5 FUNES INTERNAS DO VBA Neste mdulo apresentaremos algumas funes internas do VBA, funes estas que sero de extrema importncia para a soluo de algumas situaes que encontraremos mais adiante no curso, pois diminuiro muito o tempo para solucionar tais problemas. Para isto, dividiremos estas funes por categorias para melhor entendimento. FUNES DE TIPO Aqui veremos algumas funes para determinar o tipo de dados de uma varivel. FUNO ISDATE Esta funo recebe uma varivel como argumento e determina se esta contm uma data vlida. Caso o argumento passado seja uma data vlida, a funo retornar Verdadeiro, caso contrrio, retornar Falso. A sintaxe desta funo a seguinte: IsDate(<varivel>) Abaixo, segue um exemplo que ilustra o uso desta funo:
FUNO ISNUMERIC Esta funo recebe uma varivel como argumento e determina se o valor atribudo a ela um valor numrico. Caso o valor seja numrico, a funo retornar Verdadeiro, caso contrrio, retornar Falso. A sintaxe desta funo a seguinte: IsNumeric(<varivel>) Abaixo, segue um exemplo que ilustra o uso desta funo:
FUNES PARA TRATAMENTO DE TEXTO Aqui veremos algumas funes para tratamento de texto, via programao VBA. FUNO LEN Esta funo determina o tamanho da String que foi passada como parmetro para a funo. A sintaxe desta funo a seguinte: Len(<varivel>) Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir, mostrando o nmero de caracteres existente na varivel.
Espaos em branco tambm contam para o tamanho da string.
FUNO LCASE Esta funo converte para minsculas, a string que foi passada como parmetro para a funo. A sintaxe desta funo a seguinte: Lcase(<varivel>) Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir.
FUNO UCASE Esta funo converte para maisculas, a string que foi passada como parmetro para a funo. A sintaxe desta funo a seguinte: Ucase(<varivel>) Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir.
FUNO MID Esta funo retorna um nmero especificado de caracteres, a partir de uma posio especificada dentro de uma string.Lembre-se que espaos em branco tambm devem ser considerados. A sintaxe desta funo a seguinte: Mid(<string>, <pos_inicial>, <num_caract>) Abaixo, segue um exemplo que ilustra o uso desta funo:
Na execuo deste procedimento, uma caixa de mensagem surgir. ERROR: stackunderflow OFFENDING COMMAND: ~ STACK: