Você está na página 1de 74

Curso de Excel Avanado Mdulo 5

Lio 01:
Introduo: Nesse e no prximo mdulo veremos assuntos relacionados a automao de tarefas no Excel. Existem situaes onde no conseguimos resolver o problema proposto, simplesmente utilizando os comandos e frmulas do Excel. Nessas situaes temos que fazer o 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: Word, Excel, Access e Power Point. Nas lies desse mdulo aprenderemos sobre Macros. Veremos o que uma Macro, para que serve, quando devemos usar Macros, como criar e alterar Macros. Em seguida aprenderemos os fundamentos bsicos da linguagem VBA. Nas lies desse mdulo veremos os conceitos tericos da linguagem VBA. Nas lies do prximo mdulo, veremos exemplos de aplicao do VBA para a soluo de problemas prticos, os quais no poderiam ser solucionados sem o uso de programao. O que so Macros?? Nesse tpico apresentaremos uma viso geral sobre Macros. Nas prximas lies iremos detalhar os vrios aspectos relacionados Macros. Caso voc execute uma tarefa vrias vezes no Microsoft Excel, possvel automatiz-la com uma macro. Uma macro uma seqncia de comandos e funes armazenados em um mdulo do Visual Basic for Applications - VBA e pode ser executada sempre que voc precisar executar a tarefa. Quando voc grava uma macro, o Excel armazena informaes sobre cada etapa realizada medida que voc executa uma seqncia de comandos. Em seguida, voc executa a macro para repetir, ou "reproduzir", os comandos. Por exemplo, vamos supor que, seguidamente, voc precisa formatar uma clula com Negrito, cor de fonte Vermelha, Itlico, Fonte Verdana de Tamanho 13 com quebra automtica de linha. Ao invs de ter que executar todos os comandos de formatao em cada clula, voc pode criar uma Macro que aplica todos os comandos de formatao. Aps criada a Macro, cada vez que voc tiver que aplicar o conjunto de comandos de formatao, basta executar a Macro, o que normalmente feito atravs da associao de uma combinao de teclas com a Macro, como por exemplo Ctrl+L. No nosso exemplo, cada vez que voc quisesse formatar uma clula com os formatos descritos, bastaria clicar na clula e pressionar Ctrl+L. Bem mais fcil do que aplicar cada comando individualmente. Voc pode Gravar uma macro para realizar uma tarefa em uma etapa: Antes de gravar uma macro, planeje 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 so gravadas. Ao gravar macros, o VBA armazena cada uma em um novo mdulo anexado a uma pasta de trabalho. Por exemplo, se voc insere com freqncia seqncias de caracteres de texto extensas nas clulas, voc pode gravar uma macro para formatar essas clulas de maneira que o texto retorne automaticamente. Selecione a clula em que deseja inserir o retorno automtico de texto e inicie a gravao. Clique em Clulas no menu Formatar, clique na guia Alinhamento, marque a caixa de seleo Retorno automtico de texto, clique em OK e, em seguida, clique em

Introduo e Contedo do Mdulo 5

Parar gravao . Como gravar uma macro. Nos veremos exemplos detalhados de macros nas prximas lies. Como Tornar uma macro fcil de ser executada: Voc pode executar uma macro escolhendo-a de uma lista na caixa de dilogo Macro. Para que uma macro seja executada sempre que voc clicar em um boto especfico ou pressionar determinada combinao de teclas, voc pode atribuir a macro a um boto da barra de ferramentas, um atalho no teclado ou um objeto grfico em uma planilha. Veremos como fazer essas atribuies nas prximas lies. Como Exibir e alterar macros: Depois de gravar uma 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 de cdigo de macro para principiantes e fornece bastante Ajuda online. Voc no precisa aprender a programar ou a usar a linguagem do Visual Basic para fazer alteraes simples nas suas macros. Nas prximas lies veremos como exibir e editar macros. Na Figura a seguir temos um exemplo de cdigo associado com uma Macro. Esse um exemplo de cdigo VBA:

Como Gerenciar suas macros Com o Editor do VBA: Voc pode editar macros, copiar macros de um mdulo para outro, copiar macros entre pastas de trabalho diferentes, renomear os mdulos que armazenam as macros ou renomear as macros. Por exemplo, se voc quisesse que a macro de retorno automtico de texto, do exemplo anterior, tambm deixasse o texto em negrito, voc poderia gravar outra macro para aplicar negrito a uma clula e copiar as instrues dessa macro para a macro de retorno automtico de texto. Segurana da macro: O Microsoft Excel 2000 fornece proteo contra vrus que podem ser transmitidos atravs das macros. Se voc compartilha macros com outros usurios, voc pode certific-las com uma assinatura digital de forma que os outros usurios possam verificar que as macros so de origem confivel. Sempre que voc abrir uma pasta de trabalho que contenha macros, poder verificar a origem das macros antes de ativ-las. Aprenda sobre como evitar vrus de macro. Programao no Excel A linguagem VBA: As Macros so uma excelente soluo quando queremos automatizar uma tarefa que realizada atravs de uma srie de cliques de mouse ou digitaes no teclado. Porm existem situaes mais complexas, que envolvem clculos ou uma

lgica mais apurada, onde no possvel encontrar a soluo do problema, simplesmente usando os comandos ou frmulas prontas do Excel. Nessas situaes temos que fazer uso de programao. Um programa (ou mdulo como chamado no Excel) uma seqncia de comandos VBA, onde cada comando executa um passo especfico, necessrio resoluo do problema. Nota: Para um melhor aproveitamento e entendimento do VBA importante que o amigo leitor j tenha uma noo bsica de Lgica de Programao. Voc encontra um excelente curso de Lgica de Programao no seguinte endereo: www.webaula.com.br. O curso gratuito, apenas necessrio fazer um cadastro no site, cadastro esse que tambm gratuito. Por exemplo, vamos supor que voc precisasse fazer a verificao do CPF que digitado em uma clula. O clculo do DV do CPF, o qual de domnio pblico, envolve uma srie de operaes aritmticas. Para implementar uma funo que faz a verificao do DV do CPF, voc ter que fazer uso de programao. Por isso que, conforme descrito anteriormente, nas lies desse mdulo veremos os comandos bsicos da linguagem VBA, para aplica-los em alguns exemplos prticos nas lies dos prximo mdulo. Nota: Os conceitos vistos nesse e no prximo mdulo, de maneira alguma, esgotam o assunto programao VBA no Excel. O assunto bastante extenso. No decorrer de 2003, teremos um curso especfico, somente sobre programao VBA e criao de aplicativos com o Excel.

Lio 02: O que so Macros?


Conforme descrito anteriormente, uma macro uma seqncia de comandos (cliques de mouse ou toques de teclado) que so gravados em um Mdulo VBA e podem ser executados, sempre que necessrio. A grande vantagem de gravarmos uma seqncia de comandos que poderemos utiliza-la sempre que necessrio. Para isso basta executar a macro na qual foi gravada a seqncia de comandos. 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. Existem duas maneiras distintas para a criao de uma macro: Podemos usar o gravador de Macros: Nesse caso o Excel grava cada uma das aes que faro parte da Macro e transforma essas 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. Criar a Macro usando VBA: A partir do momento em que voc domina a linguagem VBA, poder criar a macro digitando os comandos VBA necessrios. Isso feito usando o Editor de VBA, conforme veremos nas prximas lies. Melhor do que definies a prtica!!

Melhor do que uma srie de definies ver uma Macro em ao. Vamos a um exemplo simples, onde criaremos uma Macro. Em seguida vamos executa-la . Na prxima lio analisaremos o cdigo VBA criado pelo gravador de macros. Exemplo 1: Criar uma macro usando o Gravador de Macros. A macro dever formatar a clula atual com Negrito, cor de fonte Vermelha, com fundo cinza. Gravar a macro com o nome de FormataVermCinza. 1. 2. 3. 4. 5. 6. 7. Abra o Excel. Abra a Planilha C:\ExcelAvancado\Mdulo 5 Exerccio 01.xls. Clique na clula A4. Agora vamos iniciar a gravao da Macro. Selecione o comando Ferramentas -> Macro -> Gravar nova macro. Ser exibida a janela Gravar Macro. No campo Nome da macro digite: FormataVermCinza.

8. No campo Tecla de atalho digite L. Observe que o Excel troca para Ctrl+Shift+L. Isso acontece porque a combinao Ctrl+L j deve estar associada com algum comando do Excel. Com isso estamos associando a combinao Ctrl+Shift+L com a macro FormataVermCinza, ou seja, cada vez que quisermos executar essa macro basta pressionar Ctrl+Shift+L. 9. O campo descrio simplesmente uma descrio da funcionalidade da macro. Digite o texto indicado na Figura 5.2:

Figura 5.2 Definio do nome e da tecla de atalho da Macro. 10. Clique em OK. A gravao da Macro ser iniciada. Todos os comandos que voc executar, durante a gravao da Macro, faro parte da Macro.

11. Uma nova barra ( ) exibida na planilha do Excel. Essa barra utilizada para parar a gravao da Macro. Agora devemos escolher os comandos que faro parte da macro. Aps ter executado os comandos que faro parte da macro, basta clicar no boto ( Macro. 12. Clique no boto ( ) para encerrar a gravao da

) para aplicar Negrito.

13. 14. 15.

Na lista de Cores da fonte ( Na lista de Cores de fundo ( Clique no boto (

) selecione Vermelho. ) selecione Cinza.

) para encerrar a gravao da Macro. foi criada e podemos utiliza-la

16. Agora a macro sempre que necessrio.

FormataVermCinza

Para executar a macro FormataVermCinza faa o seguinte: 1. 2. Clique na Clula B7. Pressione Ctrl+Shift+L.

3. A macro FormataVermCinza executada e as formataes definidas pela macro (Negrito, fonte Vermelha e fundo Cinza) so automaticamente aplicadas na Clula B7. Veja que com um simples comando de teclado, executo uma srie de comandos (nesse exemplo: trs comandos de formatao). Esse exemplo nos d uma pequena idia do poder e facilidade do uso das macros. 4. Tambm possvel executar a macro usando o comando Ferramentas -> Macro -> Macros. 5. 6. Clique na clula B5. Selecione o comando Ferramentas -> Macro -> Macros.

7. Ser exibida a janela Macro, onde so listadas todas as macros existentes na pasta de trabalho atual (no arquivo carregado no Excel), conforme indicado na Figura 5.3:

Figura 5.3 A janela Macro. 8. 9. Clique na Macro FormataVermCinza para seleciona-la. Clique no boto Executar.

10. A Macro ser executada e as respectivas formataes sero aplicadas clula B5. 11. A sua planilha deve estar conforme indicado na Figura 5.4:

Figura 5.4 Formataes aplicadas com a macro FormataVermCinza. 12. lio. Mantenha a planilha aberta, pois iremos utiliza-la na prxima

Lio 03: Conhecendo do que feita uma Macro


Na Lio anterior podemos ver uma macro em ao. Criamos uma macro chamada FormataVermCinza. Essa macro composta por trs comandos de formatao. Cada vez que a macro executada, os trs comandos de formatao so novamente executados e aplicados clula onde esta o cursor. At aqui tudo OK. Nenhuma novidade. A pergunta que pode surgir : Como que o Excel faz isso? Ou de outra forma: Do que feita uma macro? Conforme veremos nessa lio, uma macro gravada no Excel como uma seqncia de comandos VBA. Por exemplo, ao clicarmos no boto ( ), para a aplicao de negrito, o Excel gera um comando VBA que faz a formatao em negrito. Nessa lio aprenderemos a acessar o cdigo VBA gerado pelo Excel (embora ainda no sejamos capazes de entender esse cdigo). Para acessar os comandos VBA associado com uma macro, siga os seguintes passos: 1. Voc deve estar com a planilha C:\ExcelAvancado\Mdulo Exerccio 01.xls aberta, se no estiver, abra-a. 2. 3. 4. Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro FormataVermCinza para seleciona-la. 5

5.

Clique no boto Editar. do VBA ser carregado e sero exibidas as seguintes

6. O Editor linhas de cdigo:

Sub FormataVermCinza() ' ' FormataVermCinza Macro ' Macro que faz a formatao em fonte Vermelha, Negrito e ' fundo Cinza. ' ' Atalho do teclado: Ctrl+Shift+L ' Selection.Font.Bold = True Selection.Font.ColorIndex = 3 With Selection.Interior .ColorIndex = 15 .Pattern = xlSolid End With End Sub Esses so os comandos VBA (que por enquanto no entendemos o que significam) que formam a macro FormataVermCinza. Apenas para adiantar um pouco o assunto, a seguir descrevo o que faz cada um dos principais comandos dessa Macro: Selection.Font.Bold = True Esse comando aplica a formatao em Negrito para a clula onde est o cursor (ou no conjunto de clulas selecionadas), quando a macro executada. Selection.Font.ColorIndex = 3 Esse comando aplica cor de fonte Vermelha para a clula onde est o cursor (ou no conjunto de clulas selecionadas), quando a macro executada. With Selection.Interior .ColorIndex = 15 .Pattern = xlSolid End With Esses comandos aplicam a cor de fundo cinza, na clula onde est o cursor (ou no conjunto de clulas selecionadas), quando a macro executada.

Esses so comandos da linguagem VBA. Com o uso do VBA temos acesso a todos os comandos e funes do Microsoft Excel. Tudo o que voc faz usando o teclado e o mouse, tambm possvel de ser feito com o uso do VBA, porm de uma maneira automatizada. O uso de macros especialmente indicado naquelas situaes em que temos um conjunto de comandos que precisam ser executados, repetidamente, em diferentes situaes. Nesses casos muito mais prtico criar uma macro composta pelo conjunto de comandos e, cada vez que os comandos precisarem ser executados, executar a macro. Na Figura 5.5 temos uma viso do Editor do Visual Basic. Veremos mais detalhes sobre esse editor nas prximas lies, quando comearmos a trabalhar com o VBA.

Figura 5.5 O Editor de VBA 7. Excel. Selecione o comando Arquivo -> Fechar e Voltar para o Microsoft

8. Voc estar Exerccio 01.xls. 9.

de

volta

planilha

C:\ExcelAvancado\Mdulo

Salve e feche a planilha.

Lio 04:

Operaes com Macros

Nessa lio aprenderemos a renomear, excluir e fazer outras alteraes em macros. Tambm aprenderemos a alterar outras opes associadas com a Macro, tal como o comando de teclado para executar a macro. Existem algumas operaes que podem ser feitas com uma macro, aps a sua criao. A mais bvia (e o motivo pelo qual uma macro criada) para executar a macro. Alm da execuo possvel executar outras operaes com uma macro, conforme descrito a seguir: Para renomear uma macro siga os seguintes passos: 1. 2. 3. 4. 5. Abra o arquivo onde est a macro a ser renomeada. Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro a ser renomeada para seleciona-la. Clique no boto Editar.

6. Ser aberto o editor do VBA. O nome da macro vem logo aps o comando Sub da primeira linha, conforme destacado na Figura 5.6:

Figura 5.6 Renomeando uma Macro. 7. Para renomear a macro basta alterar o nome aps o comando Sub e ) para salvar as alteraes.

depois clicar no boto ( 8.

Em seguida s fechar o Editor de VBA.

Para excluir uma macro siga os seguintes passos: 1. Abra o arquivo onde est a macro a ser excluda.

2. 3. 4. 5.

Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro a ser excluda para seleciona-la. Clique no boto Excluir.

6. O Excel emite um aviso solicitando que voc confirme a excluso, conforme indicado na Figura 5.7:

Figura 5.7 Confirmando a excluso da macro. 7. Clique em Sim para confirmar a excluso ou em No para cancelar a excluso da macro. Para alterar a tecla de atalho e o comentrio associado com uma macro, siga os seguintes passos: 1. 2. 3. 4. 5. Abra o arquivo onde est a macro a ser alterada. Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro a ser alterada para seleciona-la. Clique no boto Opes...

6. Ser exibida a janela Opes de Macro, onde voc pode alterar a tecla de atalho e o comentrio associado com a macro, conforme indicado na Figura 5.8:

Figura 5.8 Confirmando a excluso da macro. 7. Faa as alteraes desejadas e clique em OK.

Lio 05:

Associando botes com macros

Nessa lio criaremos mais uma macro de exemplo. Alm da criao da macro aprenderemos a criar um novo boto, na Barra de Ferramentas e a associar esse boto com a macro. Dessa forma toda vez que precisarmos executar a macro, bastar clicar no boto associado com a macro. Exemplo 2: Criar uma macro usando o Gravador de Macros. A macro dever formatar As clulas selecionadas com formato Contbil, com duas casas decimais, cor de fonte Vermelha e Itlico. Gravar a macro com o nome deFormataContbil. Criar um boto de comando na Barra de Ferramentas padro e associar esse boto com a macro FormataContbil. 1. 2. 3. 4. 5. 6. 7. 8. trabalho. Abra o Excel. Abra a Planilha C:\ExcelAvancado\Mdulo 5 Exerccio 02.xls. Clique na clula F2. Agora vamos iniciar a gravao da Macro. Selecione o comando Ferramentas -> Macro -> Gravar nova macro. Ser exibida a janela Gravar Macro. No campo Nome da macro digite: FormataContbil. Na lista Armazenar macro em, selecione a opo Esta pasta de

9. O campo descrio simplesmente uma descrio da funcionalidade da macro. Digite o texto indicado na Figura 5.9:

Figura 5.9 Definio do nome e da descrio da macro FormataContbil. 10. Clique em OK. A gravao da Macro ser iniciada. Todos os comandos que voc executar, durante a gravao da Macro, faro parte da Macro.

11. Uma nova barra ( ) exibida na planilha do Excel. Essa barra utilizada para parar a gravao da Macro. Agora devemos escolher os comandos que faro parte da macro. Aps ter executado os comandos que faro parte da macro, basta clicar no boto ( Macro. 12. 13. Clique no boto ( ) para encerrar a gravao da

)) para aplicar Itlico. ) selecione Vermelho.

Na lista de Cores da fonte (

14. Selecione o comando Formatar -> Clulas. Clique na opo Contbil e selecione duas casas decimais, conforme indicado na Figura 5.10:

Figura 5.10 Formatao Contbil com duas casas decimais. 15. 16. Clique em OK. Clique no boto ( ) para encerrar a gravao da Macro. foi criada e podemos utiliza-la

17. Agora a macro sempre que necessrio.

FormataContbil

Agora vamos aprender como associar um boto com a macro FormataContbil. Para associar um boto com uma macro siga os seguintes passos: 1. Clique com o boto direito do mouse em uma das barras de ferramentas do Excel. Por exemplo, clique com o boto direito do mouse na rea cinza, ao lado do boto ( ).

2. 3. 4.

No menu que exibido clique na opo Personalizar. Ser exibida a janela Personalizar. Clique na guia Comandos.

5. Na lista de Categorias que exibida d um clique na opo Macros conforme indicado na Figura 5.11:

Figura 5.11 A opo Macros da guia Comandos. 6. Clique no boto ( ) e arraste-o para a barra de ferramentas ), conforme indicado na Figura 5.12:

padro, ao lado esquerdo do boto (

Figura 5.12 Arrastando o boto que ser associado com a Macro. 7. A janela Personalizar ser fechada adicionado barra de ferramentas padro. 8. D um clique no boto ( ). e o boto ( ) ser

9. Ser exibida a janela Atribuir macros. Nessa janela voc pode selecionar a macro que ser associada com o boto, isto , a macro que ser executada quando voc clicar no boto. 10. Clique na macro indicado na Figura 5.13. FormataContbil para seleciona-la, conforme

11.

Clique em OK. agora o boto ( ) est associado com a macro

12. Pronto, FormataContbil.

Figura 5.13 Associando a macro FormataContbil com o boto. 13. 14. 15. 16. Vamos testar se o boto est funcionando. Clique na clula F10. Clique no boto ( ).

Observe que a macro executada e as respectivas formataes so ) est associado

aplicadas clula F10. Isso comprova que o boto ( macro FormataContbil. 17. Salve e Feche a planilha.

Lio 06:

Introduo ao VBA

Nas lies iniciais desse mdulo aprendemos a criar macros simples, as quais reproduzem uma srie de comandos de mouse e teclado. Para que possamos criar macros mais sofisticadas e resolver problemas mais complexos com o Excel, precisamos utilizar programao. Conforme descrito anteriormente, a linguagem de programao do Excel (e de todos os aplicativos do Office) o VBA: Visual Basic for Application. Uma linguagem de programao, basicamente, um conjunto de comandos, rotinas e funes que executam tarefas especficas. Considere o exemplo genrico a seguir, onde so utilizados comandos para acessar uma tabela do access a partir de uma planilha do Excel:

Comentrios iniciais do Programa. Acessa dados da tabela pedidos do banco de dados C:\Meus documentos\vendas.mdb Acessar o banco de dados Acessar a tabela Pedidos Aplicar um filtro para Pas=Brasil Exibir os dados obtidos na planilha atual Formatar a primeira linha com negrito Formatar a primeira linha com fonte azul Encerrar a macro Por que eu preciso aprender a usar o VBA? A utilizao de Macros em conjunto com os recurso do VBA nos oferece um grande nmero de opes na busca por solues para os problemas mais complexos. Porm existem situaes em que, por mais que saibamos utilizar todos os recursos, comandos e funes do Excel, essa utilizao no capaz de solucionar o problema proposto. Nestas situaes temos que utilizar programao. A linguagem de programao utilizada pelo Microsoft Excel o VBA Visual Basic for Applications. Conforme veremos a partir de agora esta uma linguagem, ao mesmo tempo, extremamente simples e poderosa. Com o VBA temos acesso completo a todos os elementos de todos os objetos de uma planilha do Excel. Tambm temos acesso a elementos externos, tais como bancos de dados do Access. Com cdigo VBA podemos criar uma rotina para validao do dgito verificador de uma clula de CPF, CNPJ ou de um campo NmeroDoProcesso; podemos criar cdigo que percorre todas as linhas de uma planilha, alterando os valores de uma ou mais colunas, com base em uma ou mais condies, podemos automatizar rotinas para importao e exportao de dados e assim por diante. Nesta introduo a linguagem VBA, trataremos dos seguintes assuntos: 1.Programao com o Microsoft Excel. 2.Introduo a linguagem VBA - Visual Basic For Applications. 3.Aprendendo VBA: Uma viso geral. O Ambiente de Programao. Anatomia dos Mdulos do VBA. Tipos de dados. Variveis. Escopo de Variveis. Estruturas de controle, etc. 4.Exerccios e Exemplos. 5.Funes e procedimentos. 6.Funes de Data e Hora. 1.Programao com o Microsoft Excel - Por que utilizar? O VBA nos oferece possibilidades de controle e personalizao para criar aplicativos que vo alm das aes de macro.

O VBA uma linguagem de programao interna do Microsoft Excel (na prtica a linguagem de programao para todos os aplicativos do Office: Access, Word, Excel e Power Point). Usamos o VBA pelo mesmo motivo que utilizamos macros - para automatizar tarefas e rotinas repetitivas, envolvendo os diversos elementos do banco de dados (tabelas, consultas, formulrios, relatrios, folhas de dados, macros e mdulos). No entanto, o VBA oferece maior poder e controle mais detalhado do que as aes de macro. Na prtica as aes de macro duplicam as operaes que podemos realizar manualmente, usando menus e teclas de atalho. O VBA vai alm da simples automao de seqncias de aes. Ele oferece um conjunto de ferramentas que lhe permite criar aplicaes personalizadas com base nos elementos do Excel e nos objetos de planilha do Excel. Por exemplo, podemos criar uma rotina em VBA em uma planilha do Excel. Esta rotina pode acessar dados em ums segunda planilha que est na rede, por exemplo. A mesma rotina alm de acessar os dados pode fazer clculos, consolidaes, gerar os resultados no formato de uma planilha do Excel e salvar a planilha na rede. Este apenas um pequeno exemplo do que pode ser feito como o VBA. Vantagens em utilizarmos o VBA: J utilizamos macros e aprendemos a automatizar algumas tarefas como a aplicao de formatos personalizados. O VBA apresenta, em relao as macros, as seguintes vantagens: Acessando dados de uma ou mais planilhas: Com aes de macros estamos limitados a operar com os registro ou com o conjunto de registros atualmente sendo exibido na pasta de trabalho atual O VBA permite trabalhar com qualquer conjunto de dados, quer seja da pasta de trabalho atual, quer seja de outra pasta de trabalho na rede ou com outros formatos de dados, como por exemplo de arquivos .txt ou bancos de dados do Microsoft Access. Manipulao de objetos: O VBA oferece mtodos de criao e modificao dos objetos de uma planilha no Excel (assunto que ser abordado nas lies do Mdulo 6). Chamamos de objeto qualquer elemento do Microsoft Excel, por exemplo: uma planilha, uma faixa de clulas, um grfico, etc. Criao de funes definidas pelo usurio: Este um dos maiores benefcios do VBA. Podemos criar funes que executam clculos repetitivos. Por exemplo, vrios planilhas podem conter um campo CPF ou CNPJ. Poderamos criar, em cada planilha, o cdigo necessrio para a validao do DV do CPF ou CNPJ. Porm este procedimento no o mais indicado, pois alm da duplicao do cdigo necessrio a validao, teramos dificuldades para fazer atualizaes neste cdigo, pois cada alterao necessria ter que ser feita em vrios locais. O ideal criarmos uma funo para validao do DV (uma funo deve ser criada dentro de um mdulo. Trataremos disso mais adiante.). Em cada planilha, onde for necessria, chamamos a funo, passando o valor do CPF como parmetro. A funo calcula o DV e retorna o resultado para a planilha. Desta maneira precisamos criar uma nica funo. Quando forem necessrias alteraes, basta alterar a funo (em um nico local, ou seja, no mdulo onde a funo foi criada) e todos os formulrios passaro a utilizar a verso atualizada da funo. Definio de condies e controle de fluxo: O VBA oferece uma variedade de comandos e estruturas para a realizao de testes condicionais e para a repetio de um conjunto de comandos. Aprenderemos a utilizar todas as estruturas de controle de fluxo e testes condicionais, mais adiante. Realizao de clculos complexos e soluo de problemas que envolvem uma lgica complexa: Com macros impossvel a realizao

de clculos mais complexos, simplesmente atravs da automao de comandos de teclado e mouse. Tambm no possvel a resoluo de problemas que envolvem uma lgica complexa, como por exemplo clculo do imposto de renda, recolhimentos de tributos, etc.

Lio 07: O Ambiente de Programao o Editor VBA


O Microsoft Excel fornece um ambiente de programao bastante poderoso, com uma srie de recursos que facilitam a criao de cdigo VBA. Neste tpico vamos aprender a utilizar os aspectos bsicos do Ambiente de Programao do VBA. Se no tivssemos disponvel um Ambiente de Programao, teramos que lembrar da sintaxe de todos os comandos, dos mtodos e propriedades dos objetos. Convenhamos que isso praticamente impossvel, pois com o VBA temos acesso a milhares de objetos ( isso mesmo: milhares de objetos, comandos e funes. Por enquanto estou utilizando bastante o termo objeto, sem t-lo ainda explicado. Mais adiante detalharei o conceito de classes, mdulos e objetos). Cada objeto pode ter dezenas de propriedades, mtodos e colees. O ambiente de Desenvolvimento fornece uma srie de facilidades para a criao de cdigo VBA. Por exemplo, ao digitar o nome de um objeto e um ponto ser aberta, automaticamente, uma lista com todos os mtodos e propriedades deste objeto. Ao invs de lembrar do nome dos mtodos/propriedades, basta selecion-los em uma lista. Se selecionarmos um mtodo, ao digitarmos o parnteses de abertura, ser exibida uma lista com os argumentos esperados pelo mtodo, bem como o tipo (texto, nmero, data, etc) de cada argumento. Se digitarmos um comando incorretamente, o Ambiente de Desenvolvimento emite uma mensagem e coloca em destaque o comando que foi digitado incorretamente. Estas so apenas algumas das facilidades fornecidas pelo Ambiente de Desenvolvimento do VBA. Para conhecermos melhor o referido ambiente, vamos a um exemplo prtico. Vamos abrir uma planilha, que contm uma macro chamada AplicaNegrito e editar essa macro. Lembre que para editar uma macro, temos que acessar o cdigo VBA associado macro. Isso feito no Editor do VBA. Exemplo 3: Acessar o Editor VBA para alterar a macro planilha C:\ExcelAvancado\Mdulo 5 Exerccio 03.xls. 1. 2. Abra o Excel. Abra a Planilha C:\ExcelAvancado\Mdulo 5 Exerccio 03.xls. AplicaNegrito, da

3. Como existem macros j criadas, o Excel pede uma confirmao, perguntando se voc deseja ativar as macros existentes, conforme indicado na Figura 5.14. Essa confirmao solicitada devido ao perigo representado pelos vrus de Macro, que podem afetar os aplicativos do Microsoft Office. 4. 5. Clique no boto Ativar Macros. A planilha ser aberta.

6. Nessa planilha existe uma macro chamada AtivaNegrito. Vamos editar essa macro. O nosso objetivo conhecer alguns detalhes sobre o Editor do VBA.

Figura 5.14 Confirmao para ativao de macros, na abertura da planilha. 7. 8. 9. 10. Selecione o comando Ferramentas -> Macro -> Macros... Ser exibida a janela Macro. Clique na macro AplicaNegrito para seleciona-la. Clique no boto Editar. aberto o editor do VBA e o cdigo associado macro

11. Ser AplicaNegrito.

12. Na Figura 5.15 temos a descrio de algumas partes da janela do editor VBA.

Figura 5.15 O Editor VBA.

No lado esquerdo da tela

temos duas janelas:

Project VBA Project: Nessa janela so exibidos os vrios elementos que fazem parte da Pasta de trabalho atual. Aqui so exibidas as planilhas e mdulos da pasta de trabalho (arquivo .xls) carregado no Excel. Ao criarmos uma macro podemos cria-la em uma determinada planilha. Os mdulos so utilizados para criar funes e procedimentos que podem ser chamados em todas as planilhas da pasta de trabalho atual. Aprenderemos mais sobre funes e procedimentos nas prximas lies. Janela na parte de baixo: A janela abaixo da janela Project, exibe as propriedades do elemento selecionado na janela Project. Por exemplo, ao selecionar Plan1, na janela Project, na janela de baixo sero exibidas as propriedades de Plan1, conforme indicado na Figura 5.16:

Figura 5.16 Propriedades da Planilha. 13. Feche o Editor do VBA e a planilha.

Nas prximas lies veremos mais algumas funcionalidades do Editor VBA.

Lio 08:

VBA Declarao de Variveis

Agora vamos iniciar o estudo de uma srie de comandos e conceitos bsicos da linguagem VBA. Esses comandos sero utilizados nas lies do Mdulo 6, onde apresentaremos alguns exemplos prticos do uso do VBA para soluo de problemas com o Excel. Iniciaremos o nosso estudo de VBA pela definio do conceito de variveis a aprendendo a declarar variveis no VBA. Nota: A medida que os conceitos forem sendo apresentados, faremos alguns testes. Para os testes utilizarei a macro AplicaNegrito. Para testar um determinado comando vamos acessar o cdigo VBA da macro AplicaNegrito (conforme descrito na lio anterior) e inserir os comandos a serem testados. Em seguida voltaremos para a planilha e executaremos a Macro para testar os comandos. Para facilitar o processo de execuo da Macro usaremos a combinao de teclas Ctrl+Shift+K, a qual est associada macro. Declarao de variveis e tipos de dados: Uma varivel um espao na memria do computador, reservado para armazenar um ou mais valores. Fazemos referncia a este espao utilizando nomes. Como o valor armazenado pode variar, a medida que o cdigo VBA executado, estas estruturas so chamadas de variveis. No VBA, no obrigatrio a declarao de variveis. Porm recomendvel que declaremos todas as variveis, de tal forma que o cdigo fique mais claro e de fcil compreenso. Para declararmos uma varivel, utilizamos o comando Dim, conforme exemplificado abaixo: Dim x Dim nome Dim teste Neste caso estamos apenas declarando o nome da varivel, sem declarar de que tipo (texto,inteiro, data, etc) a varivel. Uma varivel declarada sem tipo considerada do tipo Variant, o que na prtica significa que a varivel pode conter qualquer tipo de valor. Pode parecer uma prtica interessante a no declarao do tipo da varivel, porm isso altamente desaconselhvel. Se no declararmos o tipo, conforme descrito anteriormente, a varivel poder conter qualquer valor. Neste caso o que impede de um campo numrico conter valores de texto ou vice-versa?? A sintaxe para o comando Dim a seguinte: Dim nome_da_varivel As tipo_da_varivel Tambm podemos declarar mais do que uma varivel, com um nico comando Dim. Para isto, basta separar as variveis, com vrgula, conforme exemplificado abaixo: Dim x,y,z As String Dim nome as Double Dim teste1, teste2 As Integer

IMPORTANTE: Observe que definimos o tipo de cada varivel. O Tipo define quais dados podem ser armazenados em uma varivel. Por exemplo, variveis que armazenam valores numricos, no devem aceitar caracteres de texto. Variveis que armazenam datas, no devem aceitar datas invlidas, como por exemplo 30/02/2001. Toda varivel no VBA, do tipo Variant, isto significa que a varivel pode ser de qualquer tipo. O que define o tipo da varivel o valor que est armazenado no momento. Existem funes que converso de tipo, conforme veremos mais adiante. 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. Para fazer com que toda varivel tenha que ser, explicitamente, declarada, antes de ser utilizada, devemos utilizar o seguinte comando na seo de declarao do mdulo: Option Explicit Ao colocarmos este comando na seo de declarao do mdulo, estamos definindo que toda varivel deve ser declarada, antes de ser utilizada em uma expresso. Se tentarmos utilizar uma varivel no declarada, ser gerado um erro de compilao e a execuo dos comandos suspensa. Na Listagem 1, temos um exemplo simples de utilizao de variveis no declaradas explicitamente. Listagem 1 Utilizao de variveis no declaradas. Dim a As Integer Dim b As Integer a=5 b=2 c=a+b Msgbox "A varivel C vale: " & c

Ao tentarmos executar este cdigo, tendo sido definida a opo "Option Explicit", obteremos a mensagem de erro indicada na prxima figura. Este erro acontece porque tentamos utilizar uma varivel c, varivel esta que no foi declarada.

O tipo Variant formado de pequenas unidades, chamadas subtipos. Cada subtipo, identifica de que maneira os dados so armazenados em uma varivel do tipo Variant Por exemplo, variveis do subtipo Integer so armazenadas de uma maneira diferente de variveis do subtipo Long. Na Tabela a seguir temos uma descrio dos principais subtipos. Tabela - Subtipos do tipo Variant disponveis no VBA:

Subtipo Empty Null Boolean Byte Integer Currency Long Date(Time)

String Object Error

Subtipo O Valor zero para variveis numricas ou uma String de tamanho zero ( ), para variveis de texto. A varivel no contm dados vlidos. Contm variveis que somente podem assumir dois valores:Verdadeiro ou Falso (True ou False). Valor inteiro, na faixa de 0 at 255. Valor inteiro, na faixa de -32768 at 32767. Valores na faixa de 923.337.203.685.447,5808 at 922.337.203.685.447,5807 Valor inteiro, na faixa de 2.147.483.648 at 2.147.483.647. um nmero que representa a data entre 01 de Janeiro do ano 100, at 31 de Dezembro de 9999 (Olha o bug do ano 10000 chegando). Texto de tamanho varivel, pode conter, aproximadamente, 2 bilhes de caracteres. Pode conter um objeto qualquer, como um Controle Activex, ou um Objeto COM+ Pode conter um nmero de erro.

Antes de fazermos alguns exemplos prticos, vamos aprender um pouco mais sobre o uso de variveis no VBA. Vamos falar sobre operadores aritmticos e de comparao. Mas isso j assunto para a prxima lio.

Lio 09: VBA - Clculos, Operadores Aritmticos e Exemplos


Fazendo clculos e comparaes com o VBA Operadores Aritmticos. Para realizarmos clculos e comparaes entre variveis, podemos utilizar operadores. Neste item trataremos sobre operadores aritmticos e operadores de comparao. Fazendo clculos com os Operadores aritmticos: Podemos realizar clculos no VBA, utilizamos operadores aritmticos. Tabela a seguir, temos uma descrio dos operadores que podemos utilizar: Operadores Aritmticos do VBA: Operador Smbolo + Adio Subtrao * Multiplicao / Diviso \ Inteiro da Diviso entre dois nmeros ^ Exponenciao Modulo Mod Descrio Soma o valor de duas ou mais variveis. Subtrao entre duas ou mais variveis. Multiplica os valores de duas ou mais variveis. Divide o valor de duas ou mais variveis. Retorna a parte inteira, da diviso entre dois nmeros. x^y -> o valor do nmero x, elevado na potncia y Retorna o resto de uma diviso de 2 nmeros. Na

Considere o pequeno trecho de cdigo a seguir, onde declaramos as variveis x, y e z. Atribumos valores a essas variveis e em seguida fazemos algumas operaes. As linhas que iniciam com um apstrofe so simplesmente comentrios. Toda linha que iniciar com um apstrofe ser desconsiderada pelo VBA. Os comentrios so importantes para documentao do cdigo. Listagem Exemplo de uso de operadores aritmticos: Dim x = y = z = Exemplo de utilizao de variveis e operadores aritmticos Curso: Excel Avanado em 120 Lies. Autor: Jlio Battisti Site: www.juliobattisti.com.br Declarao x, y, z As Integer 10 25 x*y das variveis.

Nesse exemplo a varivel z conter o valor 250 Vamos fazer um pequeno teste com os comandos para declarao de variveis. Exemplo: Acessar o Editor VBA para alterar a macro AplicaNegrito, da planilha C:\ExcelAvancado\Mdulo 5 Exemplo VBA.xls. 1. 2. Abra o Excel. Abra a Planilha C:\ExcelAvancado\ Mdulo 5 Exemplo VBA.xls.

3. Como existem macros j criadas, o Excel pede uma confirmao, perguntando se voc deseja ativar as macros existentes. Essa confirmao solicitada devido ao perigo representado pelos vrus de Macro, que podem afetar os aplicativos do Microsoft Office. 4. 5. Clique no boto Ativar Macros. A planilha ser aberta.

6. Nessa planilha existe uma macro chamada AtivaNegrito. Vamos editar essa macro. O nosso objetivo utilizar o comando Dim para declarar algumas variveis e os operadores aritmticos para fazer alguns clculos. Os valores dos clculos sero exibidos quando a macro for executada. 7. 8. 9. 10. Selecione o comando Ferramentas -> Macro -> Macros... Ser exibida a janela Macro. Clique na macro AplicaNegrito para seleciona-la. Clique no boto Editar. aberto o editor do VBA e o cdigo associado macro

11. Ser AplicaNegrito. 12. seguir:

Altere o cdigo, para que fique conforme indicado na listagem a

Exemplo de utilizao de variveis e operadores aritmticos Curso: Excel Avanado em 120 Lies. Autor: Jlio Battisti Site: www.juliobattisti.com.br

Declarao das variveis. Selection.Font.Bold = True Dim a As Integer Dim b As Integer Dim som, subtr,

divis,

mult,

intdivs,

expo,

modul

As

Double

a = 25 b = 3 Uso os operadores aritmticos para efetuar clculos som=a+b subtr=a-b divis=a/b mult=a*b intdivs=a\b expo=a^b modul= a mod b 'Uso de MsgBox para exibir os resultados. MsgBox "Os nmeros so: " & a & " e " & b & Chr(13) MsgBox "Soma: " & som & Chr(13)& "Subtrao: " & subtr & Chr(13) MsgBox "Diviso: " & divis & Chr(13)& "Multiplicao: " & mult & Chr(13) MsgBox "Diviso inteira: " & intdivs & Chr(13)& "Exponenciao: " & expo & Chr(13) MsgBox "Resto da diviso: " & modul 13. 14. 15. 16. 17. Aps digitar o cdigo feche o Editor do VBA. Salve a Planilha. Clique na clula F2. Pressione Ctrl+Shift+K para executar a macro AtivaNegrito. Ser exibida a seguinte mensagem:

18. 19.

D um clique no boto OK. Ser exibida a seguinte mensagem:

20. 21.

D um clique no boto OK. Ser exibida a seguinte mensagem:

22; 23.

D um clique no boto OK. Ser exibida a seguinte mensagem:

24. 25.

D um clique no boto OK. Ser exibida a seguinte mensagem:

26. 27. Negrito.

D um clique no boto OK. Voc estar de volta planilha e a clula F2 estar formatada com

28. Mantenha a planilha aberta pois iremos utiliza-la nas demais lies desse mdulo. Neste exemplo utilizamos os operadores aritmticos, para realizar uma srie de operaes com os valores atribudos s variveis a e b. Depois utilizamos a funo MsgBox (que um comando interno do prprio VBA), para exibir os resultados obtidos. O uso da funo MsgBox, merece alguns comentrios. Primeiro, utilizamos a funo MsgBox, para exibir mensagens em uma pequena janela, chamada de Janela Pop-Up (que a janela exibida nas figuras desse exemplo). Podemos exibir

texto e tambm valores de variveis. Quando temos que exibir diversos componentes, como um pouco de texto, em seguida o valor de uma varivel, depois mais texto, e assim por diante, devemos utilizar o operador de concatenao: &. Este operador permite que as diversas partes sejam exibidas como uma nica mensagem. Considere o exemplo da seguinte linha de cdigo: MsgBox "Os nmeros so: " & a & " e " & b & Chr(13) Neste exemplo, primeiro exibido o texto: "Os nmeros so:" , logo em seguida o valor da varivel a. Observe que as duas partes so concatenadas com o operador &. Depois concatenamos o valor da varivel b, e finalmente utilizamos a funo Chr(13). A funo Chr(nmero), envia o caractere correspondente ao nmero digitado entre parnteses. Este nmero, o nmero do caractere no padro ASCII (American Standard Caracter Interchange Information). No cdigo ASCII, cada caracter possui um nmero associado. No caso o nmero 13, associado ao <ENTER>. Com isso estamos enviando um <ENTER>, para a caixa de mensagem, o que equivale a uma troca de linha. Assim utilizamos o Chr(13), para simular um <ENTER>, de tal maneira que os dados no saiam todos emendados, na mesma linha. Com o uso dos operadores aritmticos , realizamos uma srie de operaes sobre as variveis existentes no cdigo da macro AplicaNegrito. Vamos avanar um pouco mais no nosso estudo sobre operadores. Vamos tratar dos operadores de comparao. Esse justamente o assunto daprxima lio.

Lio 10: Estrutura If...Then e os Operadores de Comparao


Comparando valores com os Operadores de comparao.

Em determinadas situaes, existe a necessidade de efetuarmos comparaes entre os valores de duas ou mais variveis ou expresses. Com base no resultado da comparao Verdadeiro ou Falso -, a execuo do cdigo VBA pode seguir caminhos diferentes. Normalmente utilizamos comparaes, nas estruturas de controle do cdigo, tambm conhecidas como laos de controle. Para que possamos estudar os operadores de comparao, vamos apresentar uma das estruturas de controle mais simples que existem no VBA, a estrutura If Then Else. Abaixo temos um exemplo do funcionamento da estrutura If Then Else:

If x>y Then Comandos a serem executados quando x for maior do que y Comando 1 Comando 2 ... Comando n Else Comandos a serem executados quando x for menor ou igual a y

Comando 1 Comando 2 ... Comando n End If

Conforme podemos ver, a estrutura If Then Else, bastante simples. Fazemos um teste no incio da estrutura. Se o valor do teste for verdadeiro, executamos os comandos na seqncia, caso contrrio, executamos os comandos aps o Else. Note que utilizamos o operador de comparao maior do que: >, no caso x>y, estamos testando se x maior do que y. Logo em seguida apresentaremos detalhes sobre os operadores de comparao disponveis no VBA. Podemos utilizar laos If Then Else mais complexos, como os do exemplo:

If x>y Then Comandos a serem executados quando x for maior do que y Comando 1 Comando 2 ... Comando n ElseIf x=y Then Comandos a serem executados quando x for igual a Comando 1 Comando 2 ... Comando n Else Comandos a serem executados quando x for menor do que y Comando 1 Comando 2 ... Comando n End If Podemos utilizar tantos ElseIf, quantos utilizado para fazer um teste adicional. forem necessrios. Cada ElseIf y

Na Tabela a seguir temos uma descrio dos operadores de comparao.

Operadores de comparao do VBA: Operador Igualdade Diferente Maior que Menor que Maior ou igual a Menor ou igual a Smbolo = <> > < >= <= Descrio igual . diferente de. maior do que. menor do que. maior ou igual a. menor ou igual a.

Exemplo: Acessar o Editor VBA para alterar a macro AplicaNegrito, da planilha C:\ExcelAvancado\Mdulo 5 Exemplo VBA.xls.

1. 2. 3.

Abra o Excel. Abra a Planilha C:\ExcelAvancado\ Mdulo 5 Exemplo VBA.xls. Como existem macros j criadas, o Excel pede uma confirmao,

perguntando se voc deseja ativar as macros existentes. Essa confirmao solicitada devido ao perigo representado pelos vrus de Macro, que podem afetar os aplicativos do Microsoft Office. 4. 5. 6. Clique no boto Ativar Macros. A planilha ser aberta. Nessa planilha existe uma macro chamada AtivaNegrito. Vamos editar

essa macro. O nosso objetivo utilizar as estruturas If...Then...Else e os operadores de comparao. 7. 8. 9. 10. 11. Selecione o comando Ferramentas -> Macro -> Macros... Ser exibida a janela Macro. Clique na macro AplicaNegrito para seleciona-la. Clique no boto Editar. Ser aberto o editor do VBA e o cdigo associado macro

AplicaNegrito.

12. seguir:

Altere o cdigo, para que fique conforme indicado na listagem a

Exemplo de utilizao de estruturas If e operadores de comparao. Curso: Excel Avanado em 120 Lies. Autor: Jlio Battisti Site: www.juliobattisti.com.br

Selection.Font.Bold = True

Declarao das variveis.

Dim x,y,z,k As Integer

x=12 y=15 z=20 k=15

If x<y Then MsgBox "x menor do que y." Else MsgBox "x maior do que y." End If

If y<x Then MsgBox "Y menor do que x" Else MsgBox "Y maior do que x" End If

If y<=k Then MsgBox "y menor ou igual k"

Else MsgBox "Y maior do que k" End If

If x<>z Then MsgBox "x e z so diferentes" End If

13. 14. 15. 16. 17.

Aps digitar o cdigo feche o Editor do VBA. Salve a Planilha. Clique na clula F3. Pressione Ctrl+Shift+K para executar a macro AtivaNegrito. Ser exibida a seguinte mensagem:

18. 19.

D um clique no boto OK. Ser exibida a seguinte mensagem:

20. 21.

D um clique no boto OK. Ser exibida a seguinte mensagem:

22. 23.

D um clique no boto OK. Ser exibida a seguinte mensagem:

24. 25. 26.

D um clique no boto OK. Voc estar de volta planilha. Mantenha a planilha aberta pois iremos utiliza-la nas demais lies

desse mdulo.

O uso de Operadores de comparao, amplia o leque de possibilidades para nossos programas em VBA. Devemos ter alguns cuidados quando comparamos variveis que possuem valores de tipos diferentes, como por exemplo, nmero e texto. A Tabela a seguir descreve o que acontece, quando comparamos variveis com valores de tipos diferentes.

Comparando valores de tipos diferentes. Comparao Resultado

Entre duas variveis com valores Comparao normal. numricos. Entre duas variveis com valores efetuada uma comparao entre valores de texto. Por exemplo Xuxa do tipo texto. maior do que Abel (X vem depois do A). Uma das variveis possui um valor O valor numrico ser sempre numrico e outra possui um valor considerado menor do que o valor de de texto texto. Uma das variveis possui um valor Efetua uma numrico e a outra est vazia. atribuindo 0 vazia. comparao (zero) para a numrica, varivel

Uma varivel possui um valor de Efetua uma comparao de texto, texto e a outra est vazia, sem atribuindo texto de comprimento zero valor. (" ")para a varivel vazia. As duas variveis valor vazio. possuem um So consideradas iguais.

Com a utilizao dos operadores aritmticos e de comparao, ampliamos bastante o leque de opes, na criao de cdigos com o VBA. Na prxima lio, veremos alguns detalhes sobre Escopo de variveis.

Lio 11: Escopo de Variveis e Variveis do tipo Array


O Escopo das variveis, no VBA.
O escopo de uma varivel, define em que partes do cdigo a varivel pode ser utilizada. Em VBA, podemos ter os seguintes escopos para as variveis:

Escopo de Mdulo: Uma varivel declarada dentro do Mdulo (um mdulo pode conter um ou mais procedimentos ou funes, cada procedimento funo comea com um Sub ou Function e termina com um End Sub ou End Function, respectivamente. Veremos mais sobre funes e procedimentos, nas prximas lies), mas fora de qualquer Procedimento. Com isso a varivel pode ser utilizada dentro de todo o bloco de cdigo do Mdulo, inclusive dentro dos Procedimentos, caso exista algum. Um mdulo de uma planilha pode conter uma ou mais macros, sendo que cada macro um procedimento, isto , inicia com um Sub e termina com um End Sub. Tudo o que estiver entre Sub e End Sub, faz parte da respectiva macro. Uma varivel declarada ao nvel de Mdulo, existe enquanto o Mdulo estiver sendo executado.So as variveis declaradas na seo de Declaraes do Mdulo. Uma varivel declarada ao nvel de Mdulo, poder ser utilizada em todos os procedimentos/funes do mdulo, isto , em todas as macros que fazem parte do respectivo mdulo.

Escopo de procedimento/funo/macro: A varivel somente pode ser utilizada, dentro do procedimento onde esta declarada. Aqui o conceito de procedimento praticamente se confunde com o de macro, ou seja, cada macro criada como um procedimento separado, dentro do mdulo de cdigo da planilha. Se tentarmos utilizar a varivel fora do procedimento onde a ela foi declarada, no teremos acesso ao valor da varivel. Uma varivel declarada ao nvel de procedimento, existe enquanto o procedimento estiver sendo executado. NOTA: Um procedimento um bloco de cdigo que pode ser chamado em qualquer ponto do Mdulo. Ao chamarmos um procedimento, a execuo deslocada para dentro do procedimento. Aps concludo o procedimento, a execuo segue com a linha seguinte que chamou o procedimento. Veremos maiores detalhes sobre procedimentos e funes nas prximas lies.

Vamos considerar alguns trechos de conceito de escopo de uma varivel.

cdigo

para

entendermos

melhor

este

Considere o seguinte planilha do Excel:

trecho

de

cdigo,

dentro

de

um

mdulo

VBA

de

uma

Seo geral do mdulo. Variveis declaradas nessa seo tem o escopo de mdulo, isto , podem ser utilizadas em qualquer procedimento dentro do mdulo.

Dim x, y,aux1 As Integer

Call proc1

' Agora vamos tentar utilizar os valores de a e b ' Fora do procedimento proc1. ' Observe que a varivel aux1 no calculada ' corretamente, uma vez que os valores de a e b ' no esto disponveis, fora do procedimento proc1

Aux1 = a + b MsgBox "aux1= " & Aux1

'Agora vamos criar um procedimento 'E declarar duas variveis dentro deste procedimento. 'Estas variveis somente sero visveis, 'Dentro deste procedimento.

Sub proc1() Dim a, b

x=10 y=20

a=5 b=7 MsgBox "x= " & x & " y= " & y & " a= " & a & " b= " & b End Sub O comando Call faz o chamado ao procedimento proc1. Este procedimento deve ser definido no mesmo mdulo, caso contrrio um erro ser gerado. Ao encontrar esse comando o Excel desloca a execuo para o procedimento proc1, executa os comandos deste procedimento e aps encerrar continua a execuo a partir do comando seguinte ao comando Call. Ao executar esse cdigo ser exibida a janela indicada na Figura a seguir:

O comando Call Proc1 executado. O excel executa os comandos dentro de Proc1. As variveis x e y foram declarados com escopo de mdulo, por isso podem ser utilizadas corretamente dentro do procedimento Proc1, embora no tenham sido declaradas dentro desse procedimento. As variveis x e y tem escopo de mdulo, ou seja, podem ser utilizadas em qualquer procedimento, dentro do mdulo. Os valores definidos para x e y, dentro do procedimento Proc1, permanecero disponveis, mesmo se usarmos x e y em outros procedimentos desse mdulo.

Como a e b esto declaradas dentro de Proc1, o seu escopo est ativo, isso , o Excel tem acesso aos valores de a e b. Porm observe que x e y apresentam valores nulos. Isso ocorre porque a e b foram declarados. Por isso os valores de a e b tambm so exibidos corretamente. Agora vamos fazer uma tentativa de usar as variveis a e b fora do procedimento Proc1. Como elas foram declaradas dentro de Proc1, somente so visveis, isto , mantm o seu valor quando Proc1 estiver sendo executada. Fora de Proc1, as variveis a e b tero valores nulos, conforme comprovaremos logo a seguir:

D um clique no boto OK. Ser exibida a janela indicada na figura a seguir:

Como possvel se aux1= a + b e a=5 e b=7, logo aux1 deveria ser igual a 12. O que est acontecendo?? Observe que o valor da varivel aux1 (foi calculado incorretamente), pois a varivel aux1 depende dos valores de "a" e "b". Como as variveis a e b foram declaradas dentro do procedimento Proc1, elas no podem ser acessadas de fora do procedimento proc1, ou seja, aps a execuo do procedimento ter sido encerrada.

D um clique no boto OK e mantenha a planilha aberta.

Com esse exemplo, foi possvel verificar, na prtica, o conceito de escopo (algumas vezes chamado de visibilidade) das variveis. Na prxima lio, trataremos das Estruturas e laos de controle, que so elementos muito importantes na criao de programas VBA.

Lio 12: Estruturas If...Then...Else If e Select Case


Em um primeiro grupo, temos as chamadas estruturas de deciso. So estruturas que realizam um teste lgico, e executam determinados comandos quando o teste resultar verdadeiro, ou um conjunto diferente de comandos, quando o teste resultar falso. Agora passaremos a analisar as estruturas de deciso, disponveis no VBA.

A estrutura If ... Then

A estrutura If...Then, uma das estruturas de deciso mais conhecidas. Toda linguagem de programao implementa esta estrutura. utilizada para executar determinados comandos, caso uma condio seja verdadeira. A forma geral desta estrutura a seguinte:

If condio Then Comando1 Comando2 ... Comandon End IF.

Uma condio testada, caso a condio seja verdadeira, um ou mais comandos podem ser executados. Considere o exemplo a seguir:

Dim x, y

x=10 y=15

If x<y Then MsgBox x menor do que y End If

Neste exemplo, a mensagem x menor do que y, ser exibida, uma vez que o teste x<y verdadeiro, conforme podemos constatar pelos valores atribudos as variveis x e y.

A estrutura If ... Then...Else

A estrutura If...Then...Else, acrescenta mais uma possibilidade a estrutura If...Then. utilizada para executar determinados comandos, caso uma condio seja verdadeira, ou um conjunto diferente de comandos, caso a condio seja falsa. A forma geral desta estrutura a seguinte:

If condio Then Comando1 Comando2 ... Comandon Else Comando1 Comando2 ... Comandon End IF

Uma condio testada, caso a condio seja verdadeira, um determinado comando, ou conjunto de comandos ser executado; caso a condio seja falsa,

um comando, ou conjunto de comandos diferentes, ser executado. Considere o exemplo a seguir:

Dim x, y

x=15 y=10

If x<y Then MsgBox x menor do que y Else MsgBox x maior do que y End If

Neste exemplo, a mensagem x maior do que y, ser exibida, uma vez que o teste x<y falso, conforme podemos constatar pelos valores atribudos as variveis x e y.

A estrutura If ... Then...ElseIf...Else

A estrutura If...Then...ElseIf, nos d uma poder maior, para testarmos diversas possibilidades. utilizada quando precisamos realizar mais do que um teste lgico. Neste caso, para cada novo teste que se faa necessrio, utilizamos um ElseIf. A forma geral desta estrutura a seguinte:

If condio Then Comandos a serem executados, caso a condio seja verdadeira. Comando1 Comando2 ... Comandon ElseIf condio-2 Comandos a serem executados, caso a condio2 seja verdadeira. Comando1 Comando2 ...

Comandon ElseIf condio-3 Comandos a serem executados, caso a condio3 seja verdadeira. Comando1 Comando2 ... Comandon

...

ElseIf condio-n Comandos a serem executados, caso a condio n seja verdadeira. Comando1 Comando2 ... Comandon Else Comandos a serem executados, caso nenhuma das condies anteriores seja verdadeira. Comando1 Comando2 ... Comandon End IF.

Uma condio testada, caso a condio seja verdadeira, um determinado comando, ou conjunto de comandos ser executado; caso a condio seja falsa, podemos fazer um segundo teste (condio-2). Caso a segunda condio seja verdadeira, um determinado comando, ou conjunto de comandos ser executado, a assim por diante, para n condies. Caso nenhuma das condies seja verdadeira, os comandos aps a clusula Else, sero executados. importante observar que somente um dos conjuntos de comandos ser executado. Quando uma condio verdadeira for encontrada, o conjunto de comandos associado a essa condio ser executado e a execuo segue a partir do End If, isto , as demais condies da estrutura no sero testadas. Considere o exemplo a seguir:

Dim x, y Dim z, k Dim w, p

x=35 y=30 z=25 k=20 w=15 p=10

If x<y Then MsgBox ElseIf x menor do que y x<z Then x menor do que z Then x menor do que k Then x menor do que w Then x menor do que p

MsgBox ElseIf x<k

MsgBox ElseIf x<w

MsgBox ElseIf x<p

MsgBox Else MsgBox End If

x o maior dos nmeros

Neste exemplo, a mensagem x maior dos nmeros, ser exibida, uma vez que todos os testes anteriores falham (pois x o maior nmero), com isso somente ser executado o ltimo MsgBox, que faz parte do Else.

Mas o que acontece, quando um dos ElseIf verdadeiro?

Os teste vo sendo feitos. Quando o teste de um dos ElseIf for verdadeiro, os comandos abaixo do ElseIf verdadeiro, sero executados e o lao ser encerrado. Em resumo, quando um dos ElseIf apresentar um teste verdadeiros,

os comandos relacionados sero executados, e os demais no sero avaliados, seguindo a execuo para o primeiro comando, aps o End If.

A estrutura Select...Case

Quando precisamos realizar uma srie de testes, mais eficiente utilizarmos uma nica estrutura Select...Case, do que utilizarmos uma srie de testes utilizando a estrutura If...Then...ElseIf.

O funcionamento da estrutura Select...Case, bastante intuitivo.

Considere o exemplo a seguir: Dim x x=10

Select Case x Case 2 MsgBox X vale 2 ! Case 4 MsgBox X vale 4 ! Case 6 MsgBox X vale 6 ! Case 8 MsgBox X vale 8 ! Case 10 MsgBox X vale 10 ! Case Else MsgBox X no um nmero par, menor do que 12 End Select A estrutura Select Case x, vai testar o valor de x. Em cada um dos Case, o valor de x est sendo testado. Quando for encontrado um valor coincidente com o de x, os comandos abaixo deste Case sero executados. No nosso exemplo, o comando MsgBox X vale 10 !, abaixo de Case 10, ser executado. O comando abaixo do Case Else somente ser executado, se todos os testes anteriores falharem.

O uso da estrutura Select...Case, torna o cdigo mais eficiente e de mais fcil leitura.

Na prxima lio veremos mais algumas estruturas de controle, disponveis no VBA.

Lio 13: Estruturas For...Next, Do...While e Do...Until


Estruturas de repetio.

Em determinadas situaes, precisamos repetir um ou mais comandos, um nmero especfico de vezes, ou at que uma determinada condio torne-se verdadeira ou falsa. Por exemplo, pode ser que haja a necessidade de percorrer todos os registros de uma determinada tabela, at que o ltimo registro seja alcanado. Para isso, utilizamos as chamadas estruturas de repetio, ou Laos. A partir de agora, aprenderemos as estruturas de repetio disponveis.

A estrutura For...Next.

Utilizamos o lao For...Next, para repetir um segmento de cdigo, um nmero determinado de vezes. Utilizamos esta estrutura, quando j sabemos o nmero de vezes que uma determinada seo de cdigo deve ser repetida. Neste tipo de estrutura, normalmente, utilizamos uma varivel como contador. Este contador varia de um valor inicial at um valor final. O Formato geral desta estrutura o seguinte:

For contador = inicio to fim incremento Comando1 Comando2 ... Comandon Next

No incio a varivel contador tem o valor definido. Em cada passagem do lao, a varivel contador incrementada pelo valor definido em incremento. Caso no seja definido o incremento, ser utilizado o padro 1.

Considere o exemplo a seguir:

Dim x x=10 Soma=0

Faz a soma dos 10 primeiros nmeros maiores do que zero

For i=1 to x Soma = Soma +i Next

MsgBox Valor da Soma = & Soma

Neste exemplo, a varivel i inicia com o valor 1. Em cada passo, o valor de i acrescentado varivel Soma. Como o incremento no foi definido, ser utilizado o padro que 1. Com isso, ao final do lao For...Next, a varivel Soma, ter armazenado o valor da soma dos 10 primeiros nmeros inteiros.

Poderamos utilizar um valor de incremento diferente de 1, para, por exemplo, obter a soma somente dos nmeros mpares menores do que 10:

Dim x x=10 Soma=0

' Faz a soma dos 10 primeiros nmeros mpares

For i=1 to x

Step 2

Soma = Soma +i Next

MsgBox Valor da Soma = & Soma

Com este cdigo, obtemos o resultado indicado na Figura a seguir:

A estrutura Do...Loop.

Esta estrutura pode ser utilizada para repetir um trecho de cdigo, enquanto uma determinada condio for verdadeira, ou at que uma determinada condio torne-se verdadeira. Podemos utilizar dois operadores condicionais diferentes: While ou Until. Os operadores While ou Until, podem ser utilizados de duas maneiras diferentes: No incio do lao, ou no final do lao. Com isso temos quatro situaes distintas, vamos analisar cada uma delas, a partir de agora.

A estrutura Do While Condio...Loop.

Neste caso, estamos utilizando o operador condicional While, no incio do lao. O formato geral, neste caso o seguinte:

Do While condio/teste Comando1 Comando2 ... Comandon Loop

Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado. Quando a condio tornar-se falsa, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for falsa j na primeira vez, o lao no ser executado nenhuma vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de alterar a condio para que essa se torne Falsa, pois caso contrrio a condio ser sempre verdadeira, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir:

Dim x x=10 Contador=1 Soma=0

' Faz a soma dos 10 primeiros nmeros maiores do que zero

Do While Contador <= x Soma = Soma + Contador Contador = Contador + 1 Loop

MsgBox Valor da Soma = & Soma

Observe que dentro do lao, vamos Incrementando o valor da varivel Contador, uma unidade para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do incio do lao torna-se falso, e o lao encerrado.

A estrutura Do... Loop While Condio.

Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao, o cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no final, e continuar sendo executado, enquanto a condio for verdadeira. O formato geral, neste caso o seguinte:

Do Comando1 Comando2 ... Comandon Loop While condio/teste

Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado. Quando a condio tornar-se falsa, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for falsa j na primeira vez, o lao ser executado uma nica vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de alterar a condio para Falso, quando for necessrio, pois caso contrrio a condio ser sempre verdadeira, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir: Dim x x=10 Contador=1 Soma=0

Faz a soma dos 10 primeiros nmeros maiores do que zero

Do Soma = Soma + Contador Contador = Contador + 1 Loop While Contador <= x

MsgBox Valor da Soma = & Soma

Vamos modificar um pouco o nosso exemplo. Considere o exemplo mostrado a seguir:

Dim x x=10 Contador=11 Soma=0

O lao ser executado uma nica vez, pois a condio Contador < x falsa.

Do Soma = Soma + Contador Contador = Contador + 1

Loop While Contador <= x

MsgBox Valor da Soma = & Soma

Qual o valor ser exibido para a varivel Soma ?

Muito simples. A condio Contador < x falsa, pois x=10 e Contador=12 (Lembre que o Contador foi incrementado de uma unidade dentro do lao, antes do teste ser realizado). Neste caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao. Quando o lao executado, atribudo o valor 11 para a varivel Soma. Com isso, o valor exibido para a varivel Soma, ser 11.

A estrutura Do Until Condio...Loop.

Neste caso, estamos utilizando o operador condicional Until, no incio do lao. O formato geral, neste caso o seguinte:

Do Until condio Comando1 Comando2 ... Comandon Loop

Nesta estrutura, enquanto a condio for falsa, o cdigo dentro do lao executado. Quando a condio tornar-se verdadeira, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for verdadeira, j na primeira vez, o lao no ser executado nenhuma vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio, pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir:

Dim x x=10 Contador=1 Soma=0

Faz a soma dos 10 primeiros nmeros maiores do que zero

Do Until Contador > x Soma = Soma + Contador Contador = Contador + 1 Loop

MsgBox Valor da Soma = & Soma

Observe que dentro do lao, vamos Incrementando o valor da varivel Contador, uma unidade para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do incio do lao torna-se Verdadeiro, e o lao encerrado.

A estrutura Do... Loop Until Condio.

Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao, o cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no final, e continuar sendo executado, enquanto a condio for Falsa. O formato geral, neste caso o seguinte:

Do Comando1 Comando2 ... Comandon Loop Until condio

Nesta estrutura, enquanto a condio for Falsa, o cdigo dentro do lao executado. Quando a condio tornar-se Verdadeira, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for Verdadeira, j na primeira vez, o lao ser executado uma nica vez.

IMPORTANTE: O Cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio, pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos.

Considere o exemplo a seguir: Dim x x=10 Contador=1 Soma=0

Faz a soma dos 10 primeiros nmeros maiores do que zero

Do Soma = Soma + Contador Contador = Contador + 1 Loop Until Contador > x

MsgBox Valor da Soma = & Soma

Vamos modificar um pouco o nosso exemplo. Considere o exemplo a seguir:

Dim x x=10 Contador=11 Soma=0

O lao ser executado uma nica vez, pois a condio Contador >= x verdadeira.

Do Soma = Soma + Contador Contador = Contador + 1 Loop Until Contador >= x

MsgBox Valor da Soma = & Soma

Qual o valor ser exibido para a varivel Soma ?

Muito simples. A condio Contador>= x falsa, pois x=10 e Contador=12 (Lembre que o Contador foi incrementado de uma unidade, na linha 11, na primeira passagem do lao). Neste caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao. Quando o lao executado, atribudo o valor 11 para a varivel Soma. Com isso, o valor exibido para a varivel Soma, ser 11.

Lio 14: Funes do VBA Funes de Tipo Parte 1


A partir dessa lio veremos uma srie de aspectos que vo alm do bsico do VBA. Iniciaremos falando um pouco mais sobre tipos de dados e funes para converso de tipos. Este tpico de grande importncia, principalmente quando criamos cdigo que efetua clculos, tais como uma folha e pagamentos ou clculos de impostos.

Depois passaremos a analisar uma srie de funes internas do VBA. So funes que fazem parte do Microsoft Excel, como por exemplo a funo Date(), que retorna a data do sistema. Nas lies do prximo mdulo, aprenderemos a criar nossas prprias funes e Sub-rotinas. Aprenderemos as diferenas entre uma Sub-rotina e uma funo, e quando utilizar uma ao invs da outra.

Tipos de dados e funes para converso de tipos

Neste item, aprenderemos a determinar qual o tipo de dado que est armazenado em uma varivel, bem como a converter valores de um tipo para outro, utilizando as funes para converso de tipos.

Determinando o Tipo de Dados contido em uma varivel. Existem diversas funes, que permitem que seja determinado o tipo de valor contido em uma varivel. Existem diversas aplicaes para este tipo de funo. Por exemplo, ao digitar dados em um formulrio do Excel (no curso sobre Programao VBA e Criao de Aplicativos com o Excel, aprenderemos a criar formulrios), podemos utilizar uma funo para determinar se os valores digitados pelo usurio, no apresentam problemas. Por exemplo, o usurio pode ter digitado, por engano, texto em um campo que deve conter valores numricos.

A funo IsArray.

Um Array um tipo especial de varivel, a qual pode armazenar diversos valores em uma nica varivel. De uma forma simples, um Array um conjunto ou como aprendi nos bons e velhos tempos da faculdade de Engenharia Eltrica na UFSM: Um vetor. Por exemplo, poderamos ter uma varivel Array na qual so armazenados todos os cdigos de tributo, vlidos para o recolhimento de impostos. Cada valor armazenado no Array um elemento do conjunto. Um outro exemplo: Poderamos criar um Array para armazenar os nomes dos meses do ano. Com isso teramos um Array de 12 elementos.

Cada elemento de um Array, acessado atravs do nome da varivel Array e de um ndice. O ndice inicia em zero e no em um. Por isso se tivermos um Array de 10 elementos, teremos o elemento 0, o elemento 1, o elemento 2, e assim por diante, at o elemento 9. O fato do ndice comear com 0, influencia na hora que formos declarar um Array. Para declarar um Array chamado produtos, com 20 elementos, utilizaramos o seguinte comando:

Dim produtos(19)

O 19 significa que temos 20 elementos (sempre um a mais do que o nmero que aparece na declarao), isto , do elemento 0, indicado por produtos(0), at o elemento 20, indicado por produtos(19).

No exemplo a seguir, temos um exemplo simples de utilizao de Array:

'Declara um Array de 7 posies 'Como a primeira posio a posio zero, 'Indicamos o tamanho como 6, o que significa 'da posio 0 at a posio 6 = 7 elementos.

Dim Dias(6)

'Atribumos valores para os dias da semana

Dias(0)= "Segunda-feira" Dias(1)= "Tera-feira" Dias(2)= "Quarta-feira" Dias(3)= "Quinta-feira" Dias(4)= "Sexta-feira"

Dias(5)= "Sbado" Dias(6)= "Domingo"

'Agora utilizamos um lao For...Next 'Para criar uma String, com o contedo 'Do Array Dias.

For i=0 to 6 mensagem = mensagem & "Dia: " & i+1 & " " & Dias(i)& Chr(13) Next

'Utilizamos uma MsgBox, para exibir a mensagem 'com o contedo do Array Dias.

MsgBox mensagem

Esse trecho de cdigo, ao ser executado, produziria a seguinte sada:

Utilizamos a funo IsArray, para determinar se uma varivel do tipo Variant (lembre que todas as variveis do VBA, so do tipo Variant), est armazenando um Array.

Utilizamos a seguinte sintaxe:

IsArray(NomeDaVarivel)

A funo IsArray retorna verdadeiro se a varivel for um Array, e falso caso contrrio.

Vamos alterar um pouco o exemplo anterior, adicionando o seguinte comando, ao final da listagem.:

MsgBox IsArray(Dias)

o resultado seria o indicado na Figura a seguir:

A funo VarType.

Podemos utilizar a funo VarType, para determinar o subtipo de uma varivel. Como todas as variveis so do tipo Variant, o subtipo pode ser utilizado para determinar o tipo de dado armazenado na varivel. Passamos para a funo, o nome de uma varivel ou expresso. A funo retorna um nmero inteiro que indica o subtipo da varivel.

A sintaxe da funo a seguinte:

VarType(NomeDaVarivel) ou

VarType(expresso)

Na Tabela a seguir temos os cdigos de retorno da funo VarType.

Tabela - Valores de retorno da funo VarType.

Valor 0

Descrio Vazio (no inicializado)

1 2 3 4 5 6 7 8 9 10 11 12 13 17 8192

Nulo (dados no vlidos) Inteiro Inteiro longo Nmero de preciso simples Nmero de preciso dupla Monetrio. Data Texto Objeto de automao Erro Boleano Variant (somente utilizado com Arrays de variantes) Um objeto para acesso a dados. Byte Array

No exemplo a seguir, temos um exemplo de utilizao da funo VarType.

Dim x,y,z Dim a, b Dim c(20) Dim mensagem As String

x=12 y=23.456 y=123456789 a="Este um valor de texto !"

Utilizamos a funo Date( ), para capturar a data do sistema.

b=Date()

mensagem = "Tipo da varivel x: " & Vartype(x) & Chr(13)

mensagem = mensagem & "Tipo da varivel y: " & Vartype(y) & Chr(13) mensagem = mensagem & "Tipo da varivel z: " & Vartype(z) & Chr(13) mensagem = mensagem & "Tipo da varivel a: " & Vartype(a) & Chr(13) mensagem = mensagem & "Tipo da varivel b: " & Vartype(b) & Chr(13) mensagem = mensagem & "Tipo da varivel c: " & Vartype(c) & Chr(13)

MsgBox mensagem

Ao executar este exemplo, obteremos o resultado indicado na Figura a seguir:

Observe, principalmente, no tipo da varivel z, o qual retornou 0. Isto significa que a varivel z est vazia, ou seja, no foi inicializado. Este resultado est coerente com a Tabela anterior. Tambm podemos salientar o retorno para a varivel b, o qual retornou 7, indicando que o valor armazenado nesta varivel do tipo Data, o que tambm est coerente com a Tabela anterior, uma vez que usamos a funo Date() , para armazenar a data do sistema, na varivel b. Finalmente observe o valor de retorno para a varivel c, o qual retornou 8192, indicando que a varivel c um Array. Este resultado est coerente com a Tabela anterior, e com a declarao: Dim c(20), a qual declarou a varivel c como sendo um Array.

Muitas so as aplicaes prticas para a funo VarType, dentre as quais podemos destacar a validao dos dados digitados em um formulrio.

Lio 15: Funes do VBA Funes de Tipo Parte 2


A funo IsDate. A funo IsDate recebe uma varivel ou expresso como argumento, e determina se a varivel ou expresso uma data vlida, ou pode ser convertida para uma data vlida. Caso o argumento passado seja uma data vlida, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Podemos utilizar esta funo, por

exemplo, para verificar se o usurio digitou uma data vlida, em um campo de um formulrio.

A sintaxe da funo IsDate a seguinte:

IsDate(NomeDaVarivel)

ou IsDate(expresso)

A seguir temos um exemplo de utilizao da funo IsDate.

If IsDate(x) Then MsgBox "Voc digitou uma data vlida !" Else MsgBox "Data invlida, digite novamente !" End If

A funo IsEmpty.

A funo IsEmpty recebe uma varivel ou expresso como argumento, e determina se, em algum momento, foi atribudo algum valor para a varivel ou expresso. Caso tenha sido atribudo algum valor, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Podemos utilizar esta funo, por exemplo, para verificar se um campo de digitao obrigatria, como por exemplo o nome, no foi deixado em branco.

A sintaxe da funo IsEmpty a seguinte:

IsEmpty(NomeDaVarivel) ou

IsEmpty(expresso)

A seguir temos um exemplo de utilizao da funo IsEmpty.

Vamos declarar uma varivel x, que nunca Ser utilizada no nosso Script

Dim a, b, c Dim x

a=10 b=23 c=a+b

If IsEmpty(x) Then MsgBox "A varivel x, no foi utilizada !" End If

A varivel x foi declarada porm no foi inicializada, com isso est vazia, logo a funo IsEmpty(x) ir retornar Verdadeiro.

A funo IsNull.

A funo IsNull recebe uma varivel ou expresso como argumento, e determina se, em algum momento, foi atribudo o valor Null para a varivel ou expresso. Caso tenha sido atribudo o valor Null, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Para atribuirmos Null para uma varivel, utilizamos a seguinte sintaxe:

NomeDaVarivel = Null

IMPORTANTE: Uma varivel com valor Null, no a mesma coisa que uma varivel com valor zero, ou uma varivel de texto com tamanho zero. Quando atribudo o valor Null para a varivel, esta continua existindo na memria, porm sem nenhum valor definido.

A sintaxe da funo IsNull a seguinte:

IsNull(NomeDaVarivel)

ou

IsNull(expresso)

A seguir temos um exemplo de utilizao da funo IsNull.

' Vamos declarar uma varivel x, e atribuir ' Null, para a varivel.

Dim x

x = Null

If IsNull(x) Then MsgBox "A varivel x Nula !" End If

Este exemplo produz o seguinte resultado:

A funo IsNumeric.

A funo IsNumeric recebe uma varivel ou expresso como argumento, e determina se o valor atribudo varivel ou expresso numrico, ou pode ser convertido para numrico. Caso o valor seja numrico, ou possa ser convertido, a funo retorna Verdadeiro, caso contrrio, retorna Falso.

A sintaxe da funo IsNumeric a seguinte:

IsNumeric(NomeDaVarivel)

ou

IsNumeric(expresso)

A seguir

temos um exemplo de utilizao da funo IsNumeric.

Dim x,y,z

x=123

'Atribuo um valor que no pode ser convertido 'para numrico

y = "Riachuelo - 80"

z = Date()

mensagem = "Valor de x: " & x &" numrico ? " & IsNumeric(x)& Chr(13) mensagem = mensagem & "Valor de y: " & y &" numrico ? " & IsNumeric(y)& Chr(13) mensagem = mensagem & "Valor de z: " & z &" numrico ? " & IsNumeric(z) MsgBox mensagem

Cabe salientar a utilizao da funo Date(), para capturar a data do sistema, e atribuir esta data varivel z. Observe que esta data no foi considerada um valor numrico para a funo IsNumeric.

Lio 16: VBA Funes para converso de Tipos Parte 1


Nesta lio aprenderemos a utilizar as principais funes para converso de tipos. Existem situaes em que um determinado tipo de dado, deve ser convertido para outro. Por exemplo, se tivermos um nmero, armazenado na forma de texto, precisamos convert-lo para inteiro ou double, para que possamos realizar clculos. Em um dos exemplos do Mdulo 6, faremos um exemplo de clculo do DV do CPF, onde o CPF um valor do tipo texto. Ao extrairmos cada dgito do CPF, estes sero extrados como caracteres de texto. Precisaremos utilizar uma funo de converso, para convert-los para nmeros, a fim de que possamos efetuar os clculos necessrios.

Na seqncia, apresento as principais funes de converso, bem como um pequeno fragmento de cdigo, exemplificando a utilizao de cada uma delas.

Funo Cbool
A funo Cbool converte uma varivel ou resultado de um expresso, para o subtipo Boolean. Qualquer nmero, com exceo do zero, automaticamente convertido para Verdadeiro. O valor zero sempre convertido para Falso. O argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro em tempo de execuo. Observe este linha de cdigo: MsgBox cbool(10>25) & chr(13) & cbool(3) Esta linha gera a mensagem indicada na Figura a seguir:

A expresso 10>25 avaliada, como a expresso falsa, a funo Cbool retorna Falso. J no segundo uso da funo Cbool, foi passado o parmetro 3 para a funo. Qualquer valor diferente de zero (com exceo de texto), a funo interpreta como Verdadeiro, o que comprovado pela Figura anterior.

Funo CByte
A funo CByte converte uma varivel ou resultado de um expresso, para o subtipo Byte. O valor a ser convertido, deve estar na faixa aceitvel para o tipo byte, que vai de 0 255. Caso o nmero esteja fora desta faixa, ser gerada uma mensagem de erro, em tempo de execuo. O argumento desta funo, no pode ser Texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo.

Observe este linha de cdigo: MsgBox CByte(10+34) & chr(13) & CByte(35) Esta linha gera a mensagem indicada na Figura a seguir:

A expresso 10+34 calculada, e o resultado (44), convertido para o tipo byte. A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, pois o valor a ser convertido para byte, est fora da faixa de 0 255. MsgBox CByte(100+200)

Essa linha de cdigo ir gerar a seguinte mensagem de erro:

Funo CCur
A funo CCur converte uma varivel ou resultado de um expresso, para o subtipo Currency (semelhante ao formato Moeda, porm sem o smbolo do real: R$). O argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro. Observe este linha de cdigo: MsgBox CCur(250.335677+324.3333) & chr(13) & CCur(1250.326582) Esta linha gera a mensagem indicada na Figura a seguir:

A expresso 250.335677+324.3333 calculada, e o resultado convertido para o tipo Currency. Se passarmos um argumento de texto para a funo CCur, ser gerado um erro de execuo, conforme indicado na Figura a seguir:

Funo CDate
A funo CDate converte uma varivel ou resultado de um expresso, para o subtipo Date. O argumento desta funo deve estar em um formato que seja aceitvel para datas, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo.

Observe este linha de cdigo: MsgBox CDate(31/10/1980) & chr(13) & CDate(23-01-2007)

Esta linha gera a mensagem indicada na Figura a seguir:

A linha de cdigo abaixo, ir gerar uma mensagem execuo, conforme indicado na prxima figura: MsgBox CDate(31/02/1980)

de

erro,

em

tempo

de

Funo CDbl
A funo CDbl converte uma varivel ou resultado de um expresso, para o subtipo Double. O tipo Doubl utilizado para nmeros grandes com casas decimais. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CDbl("4.940651247E-17") Esta linha gera a mensagem indicada na Figura a seguir:

Na prxima lio estudaremos mais algumas funes para converso de tipos.

Lio 17: VBA Funes para converso de TiposParte 2


Vamos apresentar mais algumas funes do VBA, para a converso de tipos de dados. Funo CInt A funo CInt converte uma varivel ou resultado de um expresso, para o subtipo Integer. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CInt(32.36) & Chr(13) & CInt(20.35+40.45) Esta linha gera a mensagem indicada na Figura a seguir:

A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo. Funo CLng A funo CLng converte uma varivel ou resultado de um expresso, para o subtipo Long. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida pelo subtipo Long, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CLng("3462315") Esta linha gera a mensagem indicada na Figura a seguir:

Funo CSng A funo CSng converte uma varivel ou resultado de um expresso, para o subtipo Single. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida pelo subtipo Single, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo:

MsgBox CSng("3.1418256927") Esta linha gera a mensagem indicada na Figura a seguir:

Funo CStr A funo CStr converte uma varivel ou resultado de um expresso, para o subtipo String. Observe este linha de cdigo: MsgBox CStr("12345" & " hectares de terra") Esta linha gera a mensagem indicada na Figura a seguir:

Funo Int A funo Int retorna somente a parte inteira de um determinado nmero. A linha de cdigo a seguir: MsgBox Int(-7.35) & Chr(13) & Int(10.35)

Esta linha gera a mensagem indicada na Figura a Seguir:

Com isso, terminamos a nossa apresentao sobre as principais funes para a converso de tipos de dados. Na prxima lio, analisaremos mais algumas funes do VBA, para operaes com dados do tipo String e do tipo Data/Hora.

Lio 18: VBA Funes para tratamento de Texto

Nessa lio veremos as principais funes para tratamento de String.

Funo Asc
A funo Asc, retorna o valor numrico do cdigo ASCII, para a primeira letra de uma String. Considere o exemplo: Asc(Ainda chovia) Este exemplo de uso da funo retorna o valor 65, o qual o cdigo ASCII, para a letra A maiscula. Caso fosse a letra "a" minscula, o cdigo retornado seria 97 e assim por diante.

Funo Chr
A funo Chr(nmero), recebe um nmero como parmetro, e retorna o caractere ASCII, associado ao nmero passado como parmetro. Considere o exemplo: Chr(65) Este exemplo de uso da funo retorna o caractere "A" maisculo. NOTA: At agora, utilizamos a funo Chr em diversos exemplos. Utilizamos o Chr(13), para simular um ENTER, o que faz uma quebra de linha, nas mensagens montadas com o MsgBox.

Funo Len
Esta funo determina o tamanho da String que foi passada como parmetro para a funo. Considere o exemplo: MsgBox Len(Este um exemplo de uso da funo Len !!) Este exemplo de uso da funo, retorna 41, conforme indicado na Figura a seguir:

importante observar que os 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. Considere o exemplo: MsgBox Lcase(ESTE UM EXEMPLO DE USO DA FUNO LCASE!!) Este exemplo de uso da funo, converte o parmetro passado, para letras minsculas, conforme indicado na Figura a seguir:

Funo UCase
Esta funo converte para MAISCULAS, a String que foi passada como parmetro para a funo. Considere o exemplo: MsgBox Lcase(este um exemplo do uso da funo ucase !!) Este exemplo de uso da funo, converte o parmetro passado, para letras maisculas, conforme indicado na Figura a seguir:

Funo Left
Esta funo retorna um nmero especificado de caracteres, a partir do incio (Left Esquerda) de uma String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Left(String, n) onde n o nmero de caracteres a retornar. Considere o exemplo: MsgBox Left(Jlio Cesar Fabris Battisti,5) Este exemplo de uso da funo, retorna as cinco primeiras letras da String passada, neste caso, retornar Jlio. Vamos alterar um pouco o nosso exemplo: MsgBox Left(Jlio Cesar Fabris Battisti,7) Ir retornar: Jlio C Observe que o espao em branco tambm considerado.

Funo Right
Esta funo retorna um nmero especificado de caracteres, a partir do final (Right Direita) de uma String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Right(String, n) onde n o nmero de caracteres a retornar. Considere o exemplo: MsgBox Right(Jlio Cesar Fabris Battisti,6)

Este exemplo de uso da funo, retorna as seis ultimas letras da String passada, neste caso, retornar ttisti. Vamos alterar um pouco o nosso exemplo: MsgBox Right(Jlio Cesar Fabris Battisti,10) Ir retornar: s Battisti Observe que o espao em branco tambm considerado.

Funo Mid
Esta funo retorna um nmero especificado de caracteres, a partir de uma posio especificada, dentro da String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Mid(String, posicao_inicio, n) onde: posicao_inicio a posio a partir da qual devem ser retornados caracteres n o nmero de caracteres a retornar. Considere alguns exemplos: Mid(Jlio Cesar Fabris Battisti,7,5) Este exemplo de uso da funo, retorna, a partir da posio 7, 5 caracteres, neste caso, retornar Cesar. Mid(SANTA MARIA,3,7) , ir retornar NTA MAR. Observe que o espao em branco tambm considerado. Um detalhe interessante, que podemos utilizar o valor retornado por uma funo, como parmetro para outra funo. Considere o seguinte exemplo: LCase(Mid(SANTA MARIA,3,7)) Este exemplo retorna nta mar. A funo Mid retira os caracteres NTA MAR, os quais so passados parmetros para a funo LCase, a qual converte os caracteres minsculos. como para

Funo String
Esta funo vezes. retorna um determinado caractere, um nmero especificado de

O formato geral da funo o seguinte: String(n, Caracter) onde n o nmero de vezes que Caractere deve ser repitido. Considere o exemplo: MsgBox String(35,*)

A Figura a seguir mostra o resultado deste comando:

Lio 19: VBA Funes de Data/Hora e Matemticas


Funes para tratamento de Data e Hora
Veremos as principais funes para tratamento de Data e Hora. Funo Date Retorna a data corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo: MsgBox Data do Sistema: & Date() O resultado deste comando, est indicado na Figura a seguir:

Funo Time Retorna a hora corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo: MsgBox Hora do Sistema: & Time( ) O resultado deste comando, est indicado na Figura a seguir:

Funo Day Recebe como parmetro uma data, e retorna um nmero entre 1 e 31, indicando o dia do ms. O formato geral o seguinte: Day(data)

Considere o exemplo abaixo: MsgBox Dia do ms: & Day(Date( )) O resultado deste comando, est indicado na Figura a seguir: A funo Date() captura a data do sistema e passa como parmetro para a funo Day, a qual por sua vez, retorna apenas o dia do ms.

Funo Month Recebe como parmetro uma data, e retorna um nmero entre 1 e 12, indicando o ms do ano. O formato geral o seguinte: Month(data) Considere o exemplo abaixo: MsgBox Ms do ano: & Month(Date( )) O resultado deste comando, est indicado na Figura a seguir:

A funo Date() captura a data do sistema e passa como parmetro para a funo Month, a qual por sua vez, retorna apenas o ms do ano Funo Now Retorna a hora e a data corrente do sistema. No parmetros para esta funo. Considere o exemplo abaixo: MsgBox Data e Hora do Sistema: & Now( ) O resultado deste comando, est indicado na Figura a seguir: precisamos passar

Funo MonthName Recebe como parmetro um nmero, indicativo do ms do ano (1 Janeiro, 2 Fevereiro, e assim por diante), e um segundo parmetro que pode ser

Verdadeiro ou Falso. Se o segundo parmetro for verdadeiro, o nome do ms ser exibido abreviadamente. O formato geral o seguinte: MonthName(nmero_do_ms, abreviar) Considere o exemplo abaixo: MsgBox "Ms do ano: " & MonthName(Month(Date)) O resultado deste comando, est indicado na Figura a seguir:

A funo Date() captura a data do sistema e passa como parmetro para a funo Month. A funo Month retorna o nmero do ms retornado pela data. Este nmero passado como primeiro parmetro para a funo MonthName. Funo Hour Recebe como parmetro uma hora, e retorna um nmero entre 0 e 23, indicando o hora do dia. O formato geral o seguinte: Hour(horrio) Considere o exemplo abaixo: MsgBox Hora do dia: & Hour(Time( )) O resultado deste comando, est indicado na Figura a seguir:

A funo Time() captura a hora do sistema e passa como parmetro para a funo Hour(), a qual por sua vez, retorna apenas o hora do dia. A funo DateDiff Esta funo pode ser utilizada para determinar o nmero de intervalos (em dias, trimestres, semestres, anos, etc), entre duas datas. A sintaxe desta funo o seguinte: DateDiff(intervalo, data1, data2) O parmetro intervalo uma String que diz que tipo de intervalo vamos calcular. Por exemplo, este parmetro que define se queremos calcular o nmero de dias, ou o nmero de meses entre duas datas. Na Tabela a seguir, temos os valores possveis para o parmetro intervalo. Valores para o parmetro intervalo Valor Descrio

yyyy q m y d w ww h n s

Anos Trimestres Meses Dias do ano (o mesmo que dias) Dias Semanas Semanas do ano (o mesmo que semanas) Horas Minutos Segundos

A ttulo de exemplo, vamos calcular o nmero de meses, desde o descobrimento do Brasil, at 31 de Dezembro de 1999. Para isso, utilizaramos o seguinte comando MsgBox Meses desde o DateDiff(m,22/04/1500,31/12/1999) descobrimento: &

O resultado deste comando, pode ser conferido na Figura a seguir:

Vamos modificar um pouco o nosso exemplo, e calcular o nmero de horas desde o descobrimento. Para isto, podemos utilizar o seguinte comando: MsgBox Meses desde o DateDiff(h,22/04/1500,31/12/1999) descobrimento: &

O resultado deste comando, pode ser conferido na Figura a seguir:

A funo DateAdd Esta funo pode ser utilizada para determinar uma data futura, com base em uma data fornecida, o tipo de perodo a ser acrescentado (dias, meses, anos, etc), e o nmero de perodos a serem acrescentados. A sintaxe desta funo o seguinte: DateAdd(intervalo, nmero_de_intervalos, data) O parmetro intervalo uma String que diz que tipo de intervalo vamos acrescentar. Por exemplo, este parmetro que define se queremos acrescentar um nmero especificado de dias, meses, anos, etc. Na Tabela a seguir, temos os valores possveis para o parmetro intervalo. Valores para o parmetro intervalo. Valor yyyy q Descrio Anos Trimestres

m y d w ww h n s

Meses Dias do ano (o mesmo que dias) Dias Semanas Semanas do ano Horas Minutos Segundos

A ttulo de exemplo, vamos calcular a data em que tivemos um perodo de 1000 meses, aps o descobrimento do Brasil. Para isso, utilizaramos o seguinte comando: MsgBox Mil meses aps DateAdd(m,1000,22/04/1500) o descobrimento foi em : &

O resultado deste comando, pode ser conferido na Figura a seguir:

Vamos modificar um pouco o nosso exemplo, e calcular em que data teremos passado um milho de dias aps o descobrimento. MsgBox Um milho de dias DateAdd(d,1000000,22/04/1500) aps o descobrimento em : &

O resultado deste comando, pode ser conferido na Figura a seguir:

Funo Year Recebe como parmetro uma data, e retorna um nmero indicativo do ano. O formato geral o seguinte: Year(data) Considere o exemplo abaixo: MsgBox Ano atual: & Year(Date( )) O resultado deste comando, est indicado na Figura a seguir:

A funo Date() captura a data do sistema e passa como parmetro para a funo Year, a qual por sua vez, retorna apenas o ano. Funo WeekDay Recebe como parmetros uma data, e um parmetro opcional, que indica qual o primeiro dia da semana. Se este parmetro for omitido, o primeiro dia da semana ser considerado Domingo. O valor para o primeiro dia da semana numrico: 1 Domingo, 2 Segunda-feira, e assim por diante. WeekDay(data, prim_dia_semana.) Considere o exemplo abaixo: MsgBox Dia da semana: & WeekDay(31/12/1999) O resultado deste comando, est indicado na Figura a seguir:

O valor 6, indica que foi uma Sexta-feira, o que confere com o calendrio. Poderamos determinar que o primeiro dia da semana a Segunda-feira (2 para o ltimo parmetro). Com isso o nosso exemplo, ficaria assim: MsgBox Dia da semana: & WeekDay(31/12/1999,2) O resultado deste comando, est indicado na Figura a seguir:

O valor 5, indica que foi uma Sexta-feira, pois agora a Segunda-feira passou a ser o dia 1, a Tera-feira o dia 2, e assim por diante. Novamente confere com o calendrio. Funo WeekDayName Recebe como parmetro um nmero, indicativo do dia da semana, e um segundo parmetro que pode ser Verdadeiro ou Falso. Se o segundo parmetro for verdadeiro, o nome do dia da semana ser exibido abreviadamente. O formato geral o seguinte: WeekDayName(nmero_do_dia, abreviar) Considere o exemplo abaixo: MsgBox Dia da semana: & WeekDayName(6,False) O resultado deste comando, est indicado na Figura a seguir:

Funes para Clculos matemticos


Veremos as principais funes para efetuar clculos matemticos. Na Tabela a seguir, temos a descrio das principais funes matemticas, disponveis no VBA. Funes para clculos matemticos. Funo Abs(n) Atn(n) Cos(n) Exp(n) Log(n) Rnd(n) Sgn(n) Descrio Retorna o valor absoluto (sem sinal), do nmero n. Retorna o valor do arco, cuja tangente o nmero n. O nmero n deve ser fornecido em radianos. Retorna o coseno do nmero n. O nmero n deve ser fornecido em radianos. Retorna o nmero e (logaritmo neperiano e=2,7183), elevado no nmero n. Retorna o logaritmo natural de um nmero n. Retorna um nmero aleatrio entre 0 e 1. Retorna um nmero inteiro, indicando o sinal do nmero n. Retorna 1 para nmeros negativos e 1 para nmeros positivos. Retorna o seno do nmero n. O nmero n deve ser fornecido em radianos Retorna a Raiz quadrada do nmero n. Retorna a tangente do nmero n. O nmero n deve ser fornecido em radianos.

Sin(n) Sqr(n) Tan(n)

NOTA: Para converter graus para radianos, multiplique o valor em graus por pi (3.14), e divida o resultado por 180. Na Tabela a seguir matemticas do VBA. temos alguns exemplos de utilizao das funes

Alguns exemplos de utilizao das funes matemticas. Exemplo Abs(-2350) Atn(2) Cos(0) Exp(1) Log(1000) Rnd*10 Sgn(-235) Sin(0) Sqr(400) Tan(0) Valor de retorno. 2350 1,1071487177 1 2,71828182845905 6,90775527898214 Gera um nmero aleatrio entre 0 e 10 Retorna 1, pois o nmero negativo Retorna 0 Retorna 20 Retorna 0

Lio 20: Resumo do Mdulo 5


Concluso: Nesse mdulo aprendemos a criar, editar e utilizar Macros. Tambm aprendemos os fundamentos da linguagem de programao VBA. Os fundamentos aprendidos nas lies desse mdulo sero utilizados em exemplos prticos, das lies do Mdulo 6.

Mdulo 5 Macros e programao VBA no Excel


Lio 01: Introduo e contedo do Mdulo 5 Lio 02: O que so Macros? Lio 03: Conhecendo do que feita uma Macro Lio 04: Operaes com Macros Lio 05: Associando botes com macros Lio 06: Introduo ao VBA Lio 07: O Ambiente de programao o Editor VBA Lio 08: VBA Declarao de Variveis Lio 09: VBA - Clculos, Operadores Aritmticos e Exemplos Lio 10: Estrutura If...Then e os Operadores de Comparao Lio 11: Escopo de Variveis e Variveis do tipo Array Lio 12: Estruturas If...Then...Else If e Select Case Lio 13: Estruturas For...Next, Do...While e Do...Until Lio 14: Funes do VBA Funes de Tipo Parte 1 Lio 15: Funes do VBA Funes de Tipo Parte 2 Lio 16: Funes do VBA Funes para converso de Tipos Parte 1 Lio 17: Funes do VBA Funes para converso de TiposParte 2 Lio 18: Funes do VBA Funes para tratamento de Texto Lio 19: Funes do VBA Funes de Data/Hora e Matemticas Lio 20: Resumo do Mdulo 5 Bibliografia recomendada: Confira as dicas de livros de Excel no seguinte endereo: http://www.juliobattisti.com.br/livrosdeexcel.asp
Todos os direitos reservados: Jlio Battisti, 2002

Bibliografia:

http://www.juliobattisti.com.br/excel120avancado/modulo5/licao20.htm