VistaVirtual INFOR MÁT ICA
Vista                                                          Virtual                                                    ...
Vista                                     Virtual                                       INFOR MÁT ICA        Introdução a ...
Vista                                    Virtual                                      INFOR MÁT ICAgravadas em Módulos do ...
Vista                                      Virtual                                       INFOR MÁT ICAObjetos da hierarqui...
Vista                                      Virtual                                       INFOR MÁT ICA                    ...
Vista                                   Virtual                                     INFOR MÁT ICAPara criar o formulário T...
Vista                                   Virtual                                     INFOR MÁT ICA          Dê um clique no...
Vista                                   Virtual                                     INFOR MÁT ICAPara cada evento é criado...
Vista                                    Virtual                                     INFOR MÁT ICAIsto não é feito, pois c...
Vista                                        Virtual                                          INFOR MÁT ICAVamos começar a...
Vista                                        Virtual                                          INFOR MÁT ICAEsta sem dúvida...
Vista                                    Virtual                                      INFOR MÁT ICA        Clique no botão...
Vista                                        Virtual                                         INFOR MÁT ICAsimplesmente exe...
Vista                                    Virtual                                      INFOR MÁT ICA fazer a documentação d...
Vista                                      Virtual                                        INFOR MÁT ICA              Dim x...
Vista                                   Virtual                                    INFOR MÁT ICAO tipo Variant é formado d...
Vista                                        Virtual                                          INFOR MÁT ICA Tabela - Subti...
Vista                                               Virtual                                                  INFOR MÁT ICA...
Vista                                            Virtual                                               INFOR MÁT ICAMsgBox...
Vista                                    Virtual                                      INFOR MÁT ICA        Dê um clique no...
Vista                                     Virtual                                       INFOR MÁT ICA Com o uso de operado...
Vista                                    Virtual                                     INFOR MÁT ICAPodemos utilizar laços I...
Vista                                      Virtual                                        INFOR MÁT ICAExecute         Vam...
Vista                                  Virtual                                   INFOR MÁT ICA        Dê um clique no botã...
Vista                                  Virtual                                    INFOR MÁT ICACom a utilização dos operad...
Vista                                    Virtual                                      INFOR MÁT ICA NOTA= Um procedimento ...
Vista                                     Virtual                                         INFOR MÁT ICA              Dim x...
Vista                                   Virtual                                     INFOR MÁT ICA         Observe que o va...
Vista                                           Virtual                                            INFOR MÁT ICA          ...
Vista                                                  Virtual                                                    INFOR MÁ...
Vista                                      Virtual                                       INFOR MÁT ICA Considere o exemplo...
Vista                                      Virtual                                       INFOR MÁT ICA Considere o exemplo...
Vista                                       Virtual                                         INFOR MÁT ICA                 ...
Vista                                     Virtual                                       INFOR MÁT ICACom este Script, obte...
Vista                                        Virtual                                         INFOR MÁT ICA Considere o exe...
Vista                                        Virtual                                         INFOR MÁT ICA Considere o exe...
Vista                                        Virtual                                         INFOR MÁT ICA A estrutura Do ...
Vista                                        Virtual                                          INFOR MÁT ICA A estrutura Do...
Vista                                    Virtual                                      INFOR MÁT ICAVamos modificar um pouc...
Vista                                   Virtual                                     INFOR MÁT ICAFunções, procedimentos e ...
Vista                                       Virtual                                         INFOR MÁT ICACada elemento de ...
Vista                                     Virtual                                       INFOR MÁT ICAUtilizamos a função I...
Vista                                      Virtual                                       INFOR MÁT ICATabela - Valores de ...
Vista                                     Virtual                                      INFOR MÁT ICAObserve, principalment...
Vista                                       Virtual                                        INFOR MÁT ICA A função IsDate. ...
Vista                                       Virtual                                         INFOR MÁT ICA A função IsEmpty...
Vista                                        Virtual                                           INFOR MÁT ICAIMPORTANTE: Um...
Vista                                            Virtual                                              INFOR MÁT ICA A segu...
Vista                                    Virtual                                     INFOR MÁT ICAFunções para conversão d...
Vista                                    Virtual                                       INFOR MÁT ICAFunção CByte.A função ...
Vista                                     Virtual                                       INFOR MÁT ICAFunção CDate.A função...
Vista                                    Virtual                                     INFOR MÁT ICAA linha de código abaixo...
Vista                                      Virtual                                       INFOR MÁT ICA Função CInt.A funçã...
Vista                                     Virtual                                       INFOR MÁT ICAFunção CSng.A função ...
Vista                                      Virtual                                        INFOR MÁT ICAOutras funções do V...
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
1214 visual basic
Upcoming SlideShare
Loading in...5
×

1214 visual basic

2,474

Published on

Como utilizar o visual basic

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,474
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
137
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

1214 visual basic

  1. 1. VistaVirtual INFOR MÁT ICA
  2. 2. Vista Virtual INFOR MÁT ICAIntrodução a linguagem VBA - Visual Basic For Applications.............................................. 3 Onde podemos utilizar o VBA?.......................................................................................... 3 Como resposta a um evento: .......................................................................................... 3 Criação de funções e procedimentos em módulos separados: ....................................... 3 Aprendendo VBA:.......................................................................................................... 4 Os comandos do VBA são divididos, basicamente, em três tipos: ................................. 4O Ambiente de Programação.................................................................................................. 6 Para criar o formulário Teste faça o seguinte: .................................................................... 7 Anatomia dos Módulos do VBA. ..................................................................................... 13Principais comandos do VBA.............................................................................................. 15 Tipos de dados.................................................................................................................. 15 Declaração e “tipo” de variável: ................................................................................... 15 Fazendo cálculos e comparações com o VBScript – Operadores. ................................ 18 Fazendo cálculos com os Operadores aritméticos. ....................................................... 18 Comparando valores com os Operadores de comparação............................................. 22 O Escopo das variáveis, no VBA. ................................................................................ 26 Estruturas para controle de fluxo em VBScript........................................................... 29Funções, procedimentos e eventos com VBScript. .............................................................. 41 Introdução......................................................................................................................... 41 Tipos de dados e funções para conversão de tipos. .......................................................... 41 Determinando o Tipo de Dados contido em uma variável. .......................................... 41 Funções para conversão de tipos. ................................................................................. 50 Outras funções do VBScript – Tratamento de String, Datas e Funções matemáticas...... 56 Funções para tratamento de String. .............................................................................. 56 Função Len. .................................................................................................................. 56 Função LCase. .............................................................................................................. 57 Função UCase............................................................................................................... 57 Função Left................................................................................................................... 57 Função Right. ............................................................................................................... 58 Função Mid................................................................................................................... 58 Função String................................................................................................................ 59 Funções para tratamento de Data e Hora. ......................................................................... 60 Função Date.................................................................................................................. 60 Função Time................................................................................................................. 60 Função Day................................................................................................................... 61 Função Month............................................................................................................... 61 Função Now.................................................................................................................. 61 Função MonthName. .................................................................................................... 62 Função Hour. ................................................................................................................ 62 A função DateDiff. ....................................................................................................... 63 A função DateAdd. ....................................................................................................... 64 Função Year.................................................................................................................. 65 Funções para Cálculos matemáticos. ................................................................................ 67 Criando suas próprias funções e procedimentos. .............................................................. 68 Criando e utilizando Sub-rotinas. ................................................................................. 69 Criando e utilizando Funções ........................................................................................... 71 Cálculo do Dígito Verificador: CPF, CNPJ e Processos.................................................. 74 Como calcular o DV do CPF........................................................................................ 74 Juntando Tudo: ................................................................................................................. 76
  3. 3. Vista Virtual INFOR MÁT ICA Introdução a linguagem VBA - Visual Basic For Applications O VBA é derivado do Visual Basic. O Visual Basic é um ambiente dedesenvolvimento completo, onde podemos criar programas para o ambiente Windows. Um programa comercial para controlar estoque de mercadorias pode ser criadoutilizando-se o Visual Basic. Um aplicativo como o f o l h a d e p a g a m e n t o tambémpoderia ser criado utilizando o Visual Basic. Já o VBA é uma linguagem bastante poderosa, embora não seja tão poderosaquanto o Visual Basic, para criação de aplicativos e automação de tarefas, baseados nosaplicativos do Microsoft Office: Access, Word, Excel,Power Point e Outlook.Onde podemos utilizar o VBA? Existem, basicamente, duas situações/locais diferentes onde podemos utilizar oVBA:Como resposta a um evento: Conforme descrito anteriormente, o modelo deprogramação do ambienteWindows é baseado em Eventos. Um Evento é uma ação do usuário ao utilizar o tecladoou o mouse.Por exemplo, quando o usuário clica em um botão de comando é gerado oevento "Ao clicar" associado com este botão. Quando o usuário altera o valorem umcampo de dados e pressiona a tecla TAB para ir para o próximo campo são geradosdois eventos associados com o campo que foi atualizado: "Após atualizar" e "Aoperder o foco". Quando o usuário dá um clique duplo em um determinado elemento,é disparado o evento "Ao clicar duas vezes", e assim por diante. Por padrãonenhuma ação é programada para responder aos eventos que são disparados.Conforme já vimos anteriormente é possível criar macros que serão executadas emresposta a um determinado evento. Podemos utilizar o VBA para criar um procedimento(um procedimento é formado por um ou mais comandos) que será executado emresposta ao evento. Por exemplo, podemos criar um procedimento para validar umnúmero de CPF (calcular o DV do CPF). Este procedimento pode ser configuradopara ser executado em resposta ao evento. Após atualizar do campo CPF.O código criadopara ser executado em resposta a um evento, é gravada juntamente com o formulário (ourelatório), onde está o elemento que dispara o evento.Criação de funções e procedimentos em módulos separados: Se quisermos criar procedimentos ou funções que não estejam ligados um eventoespecífico em um formulário ou relatório (podendo, porém serem chamados em diversoseventos diferentes, conforme aprenderemos mais adiante),podemos criar funções
  4. 4. Vista Virtual INFOR MÁT ICAgravadas em Módulos do Access. Um Módulo é um objeto do Access cuja únicafinalidade é armazenar código de procedimentos e funções do VBA. Quando umprocedimento ou função é definido e armazenado em um módulo, podemos usá-lo emqualquer expressão, como se fosse uma função interna do Microsoft Access. Noscriaremos, mais adiante, a título de exemplo, uma função chamada MêsPorExtenso.Esta função receberá um valor numérico entre 1 e 12 e irá retornar o nome do mêscorrespondente, por extenso. Agora que já falei bastante e fiz uma boa propaganda das vantagens em seutilizar o VBA, é hora de aprendermos os fundamentos básicos desta linguagem deprogramação.Aprendendo VBA: Um procedimento, função ou módulo do VBA é uma seqüência de comandosque são executados para a realização de uma ou mais tarefas. Por exemplo, possoescrever um grupo de comandos que acessa os dados da tabela pedidos e aumentao valor de um determinado campo de acordo com determinadas condições. Observe o comando a seguir: Me![NúmeroDoPedido].SetFocus Este é um comando que, simplesmente, coloca o cursor no campoNúmeroDoPedido,no formulário atual. Não se preocupe em entender este comando,agora. Todo comando em VBA deve seguir algumas regras de sintaxe. A sintaxe tem aver com a maneira como o comando é escrito. Por exemplo, se você for utilizar afunção Day() em um comando e ao invés de Day(), utilizar Dai(), você terá cometido umerro de sintaxe e o comando não poderá ser executado. Os erros de sintaxe são osmais fáceis de serem identificados e corrigidos.Os comandos do VBA são divididos, basicamente, em três tipos:Comandos básicos do VBA:São aqueles comandos que estão presentes em toda equalquer lingüagem que se preze. São comandos para declaração de variáveis,operadores aritméticos e lógicos, struturas de controle e operadores para a realizaçãode testes condicionais. Por exemplo, qual a linguagem que não possui uma funçãoIFpara a realização de testes condicionais?Funções internas do Microsoft Access:Existem centenas de funções prontas,fornecidas pelo Microsoft Access e que podem ser utilizadas em qualquer comando doVBA. Por exemplo,para armazenar mas em uma variável x, o valor numérico do anoda data do sistema, poderíamos utilizar o seguinte comando: x =Year(Date()). Durantea primeira semana utilizamos uma série destas funções, tais como: Esquerda(),Direita(), Meio(), Ano(), Dia(), Mês, etc.IMPORTANTE: Ao utilizar funções em comandos do VBA devemos,sempre,utilizar afunção em inglês.Por exemplo, ao invés de Ano() devemos utilizar Year(); ao invés deMês() devemos utilizar Month()e assim por diante.
  5. 5. Vista Virtual INFOR MÁT ICAObjetos da hierarquia de objetos do Microsoft Office: Um objeto é umaentidade que possui propriedades (que descrevem as características do objeto) emétodos (que descrevem os comportamentos do objeto). Cada aplicativo doMicrosoft Office disponibiliza uma hierarquia de objetos bem definida. Estesobjetos podem ser acessados através de programação. Podemos utilizar osmétodos dos objetos para realizar determinadas ações sobre o objeto e suaspropriedades para obter informações sobre suas características. Esta hierarquia deobjetos é que torna o VBA tão poderoso. É graças a hierarquia de objetos doOffice que, de dentro de um banco de dados do Access, por exemplo, podemosacessar dados de uma planilha do Excel, gravada em um drive de rede e combinartais dados com dados obtidos a partir de um banco de dados , por exemplo, doDbase (.dbf), gravado na máquina local. Falaremos mais sobre objetos adiante.Agora, apenas a título de exemplo, alguns comandos do VBA que utilizam umobjeto do tipo RecordSet para descobrir o número de registros da tabela Pedidos: Dim db As DAO.Database Dim rs As DAO.Recordset Dim numreg As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("Pedidos") numreg = rs.RecordCount MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS: " & numregQuando o Microsoft Access executa estes comandos é emitida a seguinte mensagem:Importante: Não se preocupe em entender os comandos utilizados no exemploanterior. Vamos estudar em detalhes, uma série de objetos, inclusive os objetosDatabase e RecordSet, utilizados no exemplo anterior.
  6. 6. Vista Virtual INFOR MÁT ICA O Ambiente de Programação. O Microsoft Access fornece um ambiente de programação bastante poderoso,com uma série de recursos que facilitam a criação de código VBA. Neste tópico vamosaprender a utilizar os aspectos básicos do Ambiente de Programação do VBA: Se não tivéssemos disponível um Ambiente de Programação, teríamos quelembrar da sintaxe de todos os comandos, dos métodos e propriedades dosobjetos. Convenhamos que isso é praticamente impossível, pois com o VBA temosacesso a milhares de objetos (é isso mesmo: milhares de objetos). Cada objeto podeter dezenas de propriedades, métodos e coleções. O ambiente de Desenvolvimentofornece uma série de facilidades enquanto estamos criando nosso código VBA. Porexemplo, ao digitar o nome de um objeto e um ponto será aberta, automaticamente,uma lista com todos os métodos e propriedades deste objeto. Ao invés de lembrardo nome dos métodos/propriedades, basta selecioná-los em uma lista. Seselecionarmos um método, ao digitarmos o parênteses de abertura, será exibidauma lista com os argumentos esperados pelo método, bem como o tipo (texto,número, data, etc) de cada argumento. Se digitarmos um comando incorretamente,o Ambiente de Desenvolvimento emite uma mensagem e coloca em destaque ocomando que foi digitado errado. Estas são apenas algumas das facilidadesfornecidas pelo Ambiente de Desenvolvimento do VBA. Para conhecermos melhor o referido ambiente, vamos a um exemploprático. Vamos abrir o banco de dados Nwind.mdb, que está na pasta Semana2.Vamos fazer o logon como usuário AdmCaxias e senha abc12345. Criaremos um novoformulário chamado Teste, formulário este que não será baseado em nenhumatabela/consulta, ou seja: um formulário em branco. Vamos adicionar um botão decomando. Quando for aberto o assistente de comando vamos clicar no botão Cancelar.Criaremos, manualmente, código VBA associado ao evento Ao clicar do botão decomando. Ao criar o código veremos os principais Elementos/Vantagens do ambientede desenvolvimento. Utilizaremos o seguinte código: Dim db As DAO.Database Dim rs As DAO.Recordset Dim numreg As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("Pedidos") numreg = rs.RecordCount MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg Importante: Não se preocupe em entender os comandos utilizados no exemplo anterior. Vamos estudar em detalhes, uma série de objetos, inclusive os objetos Database e RecordSet, utilizados no exemplo anterior.
  7. 7. Vista Virtual INFOR MÁT ICAPara criar o formulário Teste faça o seguinte:Execute Abra o Microsoft Access. Abra o banco de dados nwind.mdb que está na Semana2. Faça o logon como usuário AdmCaxias e senha abc12345. No painel da esquerda clique em Formulários. Dê um clique no botão Novo. Na janela "Novo Formulário" dê um clique na opção Modo estrutura,certifique-se de que a lista de Tabelas/Colunas esteja em branco e dê um clique nobotão OK, conforme indicado na figura a seguir: Será aberto um formulário em branco. Localize a "Caixa de Ferramentas" e adicione um controle do tipo Botão deComando (para maiores informações sobre os controles de formulário, inclusive ocontrole Botão de Comando, consulte os exercícios da primeira seman). Será aberto o "Assistente de botão de comando". Dê um clique no botão Cancelar, para fechar o assistente. Abra as Propriedades do botão de comando e altere o seu nome para:BotaoEx. Ainda com as propriedades abertas, dê um clique na guia Evento. Clique no evento "Ao clicar". Dê um clique no botão (...) que aparece ao lado do evento Ao abrir. Na lista de opções que é exibida selecione Construtor de código, conformeindicado na figura a seguir:
  8. 8. Vista Virtual INFOR MÁT ICA Dê um clique no botão OK. Será aberto o ambiente de desenvolvimento do VBA, conforme indicado nafigura a seguir:
  9. 9. Vista Virtual INFOR MÁT ICAPara cada evento é criado um procedimento separado. Um procedimento é um"pedaço de código" que é executado em resposta ao evento. O nome dosprocedimentos associados a eventos segue um padrão bem definido. O padrão é onome do controle (no nosso caso é BotaoEx) seguido de um sinal de sublinhado eo nome interno do evento (para o Access o evento "Ao clicar" é reconhecido comoClick). Por isso, associado ao evento Ao clicar, do controle BotaoEx, temos oseguinte procedimento: Private Sub BotaoEx_Click() End SubA palavra Private significa que o procedimento é Privado, ou seja, somente pode seracessado de dentro do formulário Teste. Por exemplo, não teríamos como chamareste procedimento lá no formulário Pedios ou Clientes. O nome do procedimento écomo se fosse uma função, por isso o abre e fecha parênteses após o nome. Oprocedimento poderia receber um ou mais parâmetros de entrada e retornar um oumais parâmetros de saída. Aprenderemos a trabalhar com parâmetros mais adiante. Ofinal do procedimento é indicado pelo comando: End Sub.O nosso código de exemplo deve ser digitado dentro dos limites do procedimento(entre as linhas Private... e End Sub).IMPORTANTÍSSIMO: ANTES DE COMEÇARMOS A DIGITAR O CÓDIGOPROPOSTO, VAMOS ABRIR UM PEQUENO PARÊNTESES PARA FALAR SOBREREFERÊNCIAS.REFERÊNCIAS: Conforme descrito anteriormente, com o VBA temos acessoa milhares de objetos. Por exemplo, de dentro de um formulário podemosexibir dados gravados em uma planilha do Excel, ou em um arquivo doDBase III. Para acessarmos, de dentro do Access, dados de uma planilhado Excel, precisamos usar os objetos adequados. Os diversos objetosdisponíveis são disponibilizados através de Bibliotecas de Objetos. Porexemplo, todos os objetos para acesso ao Excel, estão agrupados em umbiblioteca de objetos, todos os objetos para acesso a dados do próprioAccess, estão agrupados em uma outra Biblioteca de objetos e assim pordiante. Existem dezenas de bibliotecas, cada uma com centenas de objetos.Para que possamos utilizar, no código VBA, objetos de uma determinadabiblioteca, precisamos, antes, fazer uma REFERÊNCIA a bibliotecacorrespondente. Ao fazer uma REFERÊNCIA a uma biblioteca, passamos a teracesso a todos os objetos da biblioteca. Você pode perguntar: Então porquenão é feita referência, automaticamente, a todas as bibliotecas disponíveis?
  10. 10. Vista Virtual INFOR MÁT ICAIsto não é feito, pois cada referência causa um gasto adicional de memória. Sefizéssemos referência a todas as bibliotecas disponíveis, teríamos sérios problemasde desempenho.Para o nosso exemplo temos que fazer referência a biblioteca DAO - Data AccessObjetct. Essa biblioteca contém uma série de objetos para acesso a dados.Utilizaremos, intensamente, esta biblioteca durante a terceira semana de treinamento.Para fazer referência a um biblioteca utilizamos o comando: Ferramentas ->Referências. Surge uma janela com todas as bibliotecas disponíveis. Localize abiblioteca "Microsoft DAO x.x Object Library", onde para x.x selecione a versão demaior número que você encontrar na listagem, conforme indicado na figura a seguir:Nota: Pode ser que a versão da biblioteca DAO instalada no seu computador sejadiferente. Selecione a versão disponível.Dê um clique no botão OK e pronto, você terá feito referência a biblioteca DAO,necessária ao nosso exemplo. Fizemos referência a esta biblioteca, pois os objetosDataBase e RecordSet que utilizaremos, fazem parte desta biblioteca. Aprenderemosa utilizar estes objetos, em maiores detalhes, durante a terceira semana dotreinamento. Aqui fechamos o nosso pequeno parênteses sobre REFERÊNCIAS.
  11. 11. Vista Virtual INFOR MÁT ICAVamos começar a digitar o código do nosso exemplo, para que possamos observarmais algumas funcionalidades do Ambiente de Desenvolvimento.Abaixo da linha Private..., digite o seguinte: Dim db As DAO.DatabaseObserve que após digitar a palavra As e pressionar a barra de espaços é aberta umalistagem com todas as opções disponíveis. Você digita D e a listagem é posicionada noprimeiro elemento que começa com a letra D. Selecione DAO, conforme indicado nafigura a seguir:Após selecionar DAO digite um ponto. Observe que, novamente, é aberta umalistagem com todos os objetos disponíveis na biblioteca DAO. Na lista de objetosselecione Database, conforme indicado na próxima figura.É importante salientar que não pode haver espaço entre o ponto (.) e o nome do objeto.Essa é uma regra geral: Não existe espaço entre dois nomes separados por ponto (.) oupor ponto de exclamação (!).
  12. 12. Vista Virtual INFOR MÁT ICAEsta sem dúvida é uma das maiores vantagens do Ambiente de Desenvolvimento. Aodigitar o nome do objeto e um ponto, automaticamente é exibida uma lista dosmétodos/propriedades disponíveis. Essa facilidade é importantíssima, pois evita quetenhamos que decorar o nome dos métodos/propriedades que mais utilizamos.Digite o restante do código, indicado a seguir: Dim rs As DAO.Recordset Dim numreg As Integer Set db = CurrentDb() Set rs = db.OpenRecordset("Pedidos") numreg = rs.RecordCount MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS: " & numregObserve que a medida que você vai digitando o nome dos objetos, as listascom o nome das propriedades/métodos vão sendo exibidas.O Ambiente de Desenvolvimento também oferece uma série de menus e botõesde comando. A medida que formos utilizando estes comandos iremos explicandocada um deles.Agora vamos salvar o procedimento BotaoEx_Click(). Dê um clique no botãoSalvar (botão com a figura do disquete). Será aberta uma janela pedindo onome do Formulário: Digite Teste e dê um clique no botão OK,conforme indicado na próxima figura:
  13. 13. Vista Virtual INFOR MÁT ICA Clique no botão "x" de cima para fechar o Ambiente de Desenvolvimento. Você estará de volta ao modo estrutura do formulário Teste. Agora vamos testar o código recém criado. Altere a legenda do botão para Exemplo de VBA! Vá para o modo Formulário. Dê um clique no botão Exemplo de VBA. Será exibida a mensagem indicada na figura a seguir: Dê um clique no botão OK para fechar essa mensagem. Feche o formulário Teste. Feche o Microsoft Access.Nesse tópico abordamos os aspectos básicos do Ambiente de Desenvolvimento. Norestante deste treinamento utilizaremos, em diversos momentos, o Ambiente deDesenvolvimento. A medida que formos utilizando este Ambiente, aprenderemos sobreas demais funcionalidades do Ambiente.Anatomia dos Módulos do VBA.O código VBA é escrito em unidades chamadas subrotinas ou funções que sãoarmazenadas em módulos. Os módulos do Microsoft Access podem ser de dois tipos: Módulos Padrão (Standard modules). Módulos de Classes (Class modules).Módulos padrão: são criados a partir da opção Módulos do banco de dados. Osprocedimentos e funções criados neste tipo de módulo podem ser utilizados a partir deoutros módulos, em formulários e relatórios. Por exemplo, posso criar um módulopadrão chamado "Funções de Validação". Neste módulo crio uma função paravalidação do CPF, outra para validação do CNPJ e uma terceira para validação donúmero de processos. A partir de qualquer formulário ou relatório posso "chamar" asfunções contidas no módulo "Funções de Validação". Esta é uma maneira de"reaproveitar" as funções que criamos, ou seja, criamos uma única vez eutilizamos nos vários locais onde a função for necessária.Módulos de classe: Podem ser criados como Módulos padrão ou podem serassociados a um formulário ou relatório. Ao criarmos código associado com umevento em um formulário ou relatório, o Microsoft Access, automaticamente, cria ummódulo associado com o formulário/relatório.Anatomia de um módulo VBA: Um módulo VBA é formado por uma seção dedeclarações e uma série de funções/procedimentos. A diferença básica entre funçãoe procedimento é que a função retorna um ou mais valores e o procedimento
  14. 14. Vista Virtual INFOR MÁT ICAsimplesmente executa uma série de comandos, sem retornar valores. Na seção dedeclarações podemos declarar variáveis e outros comandos especiais que terão efeitosobre todos os componentes do módulo.Quando criamos um módulo associado a um formulário, temos uma série deprocedimentos. Cada vez que criamos código em resposta a um evento, é criado umnovo procedimento no modo associado ao formulário.Na próxima página temos um exemplo de uma estrutura genérica de um módulo. ANATOMIA DE UM MÓDULO DO VBA. Seção de declarações, as opções/variáveis desta seção são acessíveis em qualquer parte do módulo. Option Compare Database Option Explicit Início do procedimento 1 - Sub1 Private Sub Sub1() Comando1 do Sub1 Comando2 do Sub1 ... Comandon do Sub1 End Sub Final do procedimento 1 - Sub1 Início do procedimento 2 - Sub2 rivate Sub Sub2() Comando1 do Sub2 Comando2 do Sub2 ... Comandon do Sub2 End Sub Final do procedimento 2 - Sub2 ... Início do procedimento n - Subn Private Sub Subn() Comando1 do Subn Comando2 do Subn ... Comandon do Subn End Sub Final do procedimento n - Subn Obs.: As linhas que iniciam com um apóstrofe são linhas de comentário, isto é, não serão executadas pelo Microsoft Access. O uso de comentários é uma forma de
  15. 15. Vista Virtual INFOR MÁT ICA fazer a documentação do código VBA, o que facilita a compreensão e manutenção de nossas rotinas. Agora chegou o momento de estudarmos os principais comandos do VBA. Principais comandos do VBATipos de dadosDeclaração e “tipo” de variável:Uma variável é um espaço na memória do computador, reservado para armazenarum ou mais valores. Fazemos referência a este espaço utilizando nomes. Como ovalor armazenado pode variar, a medida que o código VBA é executado, estasestruturas são chamadas de variáveis.No VBA, não é obrigatório a declaração de variáveis. Porém é recomendável quedeclaremos todas as variáveis, de tal forma que o código fique mais claro e de fácilcompreensão. Para declararmos uma variável, utilizamos o comando Dim, conforemexemplificado abaixo: Dim x Dim nome Dim testeNeste caso estamos apenas declarando o nome da variável, sem declarar de que tipo(texto,inteiro, data, etc) é a variável. Uma variável declarada sem tipo é consideradado tipo Variant, o que na prática significa que a variável pode conter qualquer tipode valor. Pode parecer uma prática interessante a não declaração do tipo davariável, porém isso é altamente desaconselhável. Se não declararmos o tipo,conforme descrito anteriormente, a variável poderá conter qualquer valor. Neste casoo que impede de um campo numérico conter valores de texto ou vice-versa??Nota: Para exemplificar os diversos comandos básicos da linguagem VBA, vamosutilizar o formulário Teste. Para cada comando que será exemplificado, criaremos umnovo botão de comando e atribuiremos, ao evento Ao clicar do botão, o código doExemplo. Para facilitar o estudo, nomearemos o botão com um nome relacionado como exemplo que este representa. Por exemplo, ao criarmos o botão para exemplificar ouso de operadores aritméticos, chamaremos este botão de ExOperAritméticos. Paramaiores informações sobre como criar código associado ao evento Ao clicar de umbotão, consulte o exemplo anterior:"Para criar o formulário Teste faça o seguinte:"O formato geral para o comando Dim é: Dim nome_da_variável As tipo_da_variávelTambém podemos declarar mais do que uma variável, com um único comando Dim.Para isto, basta separar as variáveis, com vírgula, conforme exemplificado abaixo:
  16. 16. Vista Virtual INFOR MÁT ICA Dim x,y,z As String Dim nome as Double Dim teste1, teste2 As IntegerIMPORTANTE: Observe que definimos o “tipo” de cada variável. O Tipo define quaisdados podem ser armazenados em uma variável. Por exemplo, variáveis quearmazenam valores numéricos, não devem aceitar caracteres de texto. Variáveisque armazenam datas, não devem aceitar datas inválidas, como por exemplo30/02/2001. Toda variável no VBScript, é do tipo Variant, isto significa que avariável pode ser de qualquer tipo. O que define o tipo da variável é o valor que estáarmazenado no momento. Existem funções que conversão de tipo, conforme veremosmais adiante.Também podemos utilizar variáveis que não foram, explicitamente, declaradas como comando Dim. Com isso, a variável é criada na memória, no momento da suautilização. Para fazer com que toda variável tenha que ser, explicitamente, declarada,antes de ser utilizada, devemos utilizar o seguinte comando na seção de declaraçãodo módulo: Option Explicit Ao colocarmos este comando na seção de declaração do módulo, estamos definindo que toda variável deve ser declarada, antes de ser utilizada em uma expressão. Se tentarmos utilizar uma variável não declarada, será gerado um erro de compilação. Falaremos mais sobre erros e o tratamento de erros, na terceira semana do treinamento. Na Listagem 1, temos um exemplo simples de utilização de variáveis não declaradas explicitamente. Listagem 1 – Utilização de variáveis não declaradas. Dim a As Integer Dim b As Integer a=5 b=2 c=a+b Msgbox "A variável C vale: " & c Ao tentarmos executar este código, tendo sido definida a opção "Option Explicit", obteremos a mensagem de erro indicada na próxima figura. Este erro acontece porque tentamos utilizar uma variável c, variável esta que não foi declarada.
  17. 17. Vista Virtual INFOR MÁT ICAO tipo Variant é formado de pequenas unidades, chamadas subtipos. Cada subtipo,identifica de que maneira os dados são armazenados em uma variável do tipoVariant Por exemplo, variáveis do subtipo Integer são armazenadas de uma maneiradiferente de variáveis do subtipo Long. Na Tabela a seguir temos uma descrição dosprincipais subtipos.
  18. 18. Vista Virtual INFOR MÁT ICA Tabela - Subtipos do tipo Variant.Empty O Valor é zero para variáveis numéricas ou uma String de tamanho zero (“ “), para variáveis de texto.Null A variável não contém dados válidos.Boolean Contém variáveis que somente podem assumir dois valores:Verdadeiro ou Falso (True ou False).Byte Valor inteiro, na faixa de 0 até 255.Integer Valor inteiro, na faixa de -32768 até 32767.Currency Valores na faixa de –923.337.203.685.447,5808 até 922.337.203.685.447,5807Long Valor inteiro, na faixa de –2.147.483.648 até 2.147.483.647.Date(Time) É um número que representa a data entre 01 de Janeiro do ano 100, até 31 de Dezembro de 9999String Texto de tamanho variável, pode conter, aproximadamente, 2 bilhões de caracteres.Object Pode conter um objeto qualquer, como um Controle Activex, ou um Objeto COM+Error Pode conter um número de erro.Fazendo cálculos e comparações com o VBScript – Operadores.Para realizarmos cálculos e comparações entre variáveis, podemos utilizaroperadores. Neste item trataremos sobre operadores aritméticos e operadores decomparação.Fazendo cálculos com os Operadores aritméticos.Podemos realizar cálculos no VBA, utilizamos operadores aritméticos. Na Tabela aseguir, temos uma descrição dos operadores que podemos utilizar:
  19. 19. Vista Virtual INFOR MÁT ICATABELA - Operadores Aritméticos do VBAAdição + Soma valor de duas ou mais variáveisSubtração - Subtração entre duas ou mais variáveisMultiplicação * Multiplica os valores de duas ou mais variáveis.Divisão / Divide o valor de duas ou mais variáveisInteiro Retona a parte inteira, da divisão entre dois númerosExponenciação ^ x^y É o valor do número x, elevado na potência YModulo mod Retona o resto de uma divisão de 2 números Execute Vamos abrir o formulário Teste, do banco de dados Nwind.mdb e criar um botão chamado ExOperadores. Vamos criar um procedimento associado a esse botão, onde exemplificamos o uso dos diversos operadores aritméticos. Abra o banco de dados nwind.mdb que está na pastaSemana2. Abra, no mode estrutura, o formulário Teste. Crie um botão de comando com o nome de ExOperadores. Associe o seguinte código ao evento Ao abrir, deste botão de comando: Dim a As Integer Dim b As Integer Dim som, subtr, divis, mult, intdivs, expo, modul As Double a=25 b=3 som=a+b subtr=a-b divis=a/b mult=a*b intdivs=ab expo=a^b modul= a mod b Uso de MsgBox para exibir os resultados.
  20. 20. Vista Virtual INFOR MÁT ICAMsgBox "Os números são: " & a & " e " & b & Chr(13)MsgBox "Soma: " & som & Chr(13)& "Subtração: " & subtr & Chr(13)MsgBox "Divisão: " & divis & Chr(13)& "Multiplicação: " & mult & Chr(13)MsgBox "Divisão inteira: " & intdivs & Chr(13)& "Exponenciação: " & expo & Chr(13)MsgBox "Resto da divisão: " & modul Após digitar o código Feche o Ambiente de Desenvolvimento. Salve o Formulário. Vá para o modo Formulário e dê um clique no botão "ExOperadores". Será exibida a seguinte mensagem: Dê um clique no botão OK. Será exibida a seguinte mensagem: Dê um clique no botão OK. Será exibida a seguinte mensagem: Dê um clique no botão OK. Será exibida a seguinte mensagem:
  21. 21. Vista Virtual INFOR MÁT ICA Dê um clique no botão OK. Será exibida a seguinte mensagem: Dê um clique no botão OK. Você estará de volta ao formulário Teste. Mantenha este formulário carregado. Iremos utilizá-lo nos próximosexemplos. Neste exemplo utilizamos os operadores aritméticos, para realizar uma sériede operações com os valores atribuídos às variáveis “a” e “b”. Depois utilizamos afunção MsgBox, para exibir os resultados obtidos. O uso da função MsgBox,merece alguns comentários. Primeiro, utilizamos a função MsgBox, para exibirmensagens em uma pequena janela, chamada de Janela Pop-Up. Podemos exibirtexto e também valores de variáveis. Quando temos que exibir diversoscomponentes, como um pouco de texto, em seguida o valor de uma variável, depoismais texto, e assim por diante, devemos utilizar o operador de concatenação &.Este operador permite que as diversas partes sejam exibidas como uma únicamensagem. Considere o exemplo da seguinte linha de código: MsgBox "Os números são: " & a & " e " & b & Chr(13) Neste exemplo, primeiro é exibido o texto: "Os números são:", logo em seguidao valor da variável a. Observe que as duas partes são concatenadas com o operador &.Depois concatenamos o valor da variável b, e finalmente utilizamos a função Chr(13).A função Chr(número), envia o caracter correspondente ao número digitado entreparênteses. Este número, é o número do caracter no padrão ASCII (American StandardCaracter Interchange Information). No código ASCII, cada caracter possui um númeroassociado. No caso o número 13, é associado ao <ENTER>. Com isso estamosenviando um <ENTER>, para a caixa de mensagem, o que equivale a uma troca delinha. Com isso, utilizamos o Chr(13), para simular um <ENTER>, de tal maneira que osdados não saiam todos “emendados”, na mesma linha.
  22. 22. Vista Virtual INFOR MÁT ICA Com o uso de operadores, podemos realizar uma série de operações sobre as variáveis existentes no Script.Comparando valores com os Operadores de comparação. Em determinadas situações, existe a necessidade de efetuarmos comparaçõesentre os valores de duas ou mais variáveis ou expressões. Com base no resultadoda comparação – Verdadeiro ou Falso -, a execução do código VBA pode seguircaminhos diferentes. Normalmente utilizamos comparações, nas estruturas decontrole do código, também conhecidas como laços de controle. Para que possamosestudar os operadores de comparação, vamos apresentar uma das estruturas decontrole mais simples que existem no VBA, a estrutura If Then Else. Abaixo temosum 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. Fazemosum teste no início da estrutura. Se o valor do teste for verdadeiro, executamos oscomandos na seqüência, caso contrário, executamos os comandos após o Else. Noteque utilizamos o operador de comparação “maior do que: >”, no caso x>y, estamostestando se x é maior do que y.
  23. 23. Vista Virtual INFOR MÁT ICAPodemos utilizar laços 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 nElseIf x=y Then ‘ Comandos a serem executados quando x for igual a y Comando 1 Comando 2 ... Comando nElse ‘ Comandos a serem executados quando x for menor do que y Comando 1 Comando 2 ... Comando nEnd IfPodemos utilizar tantos ElseIf, quantos forem necessários.Na Tabela a seguir temos uma descrição dos operadores de comparação.Tabela - Operadores de comparação do VBA.Operador Símbolo DescriçãoIgualdade = É igual aDiferente <> É diferente deMaior que > É maior do queMenor que < É menor do queMaior ou igual a >= É maior ou igual aMenor ou igual a <= É menor ou igual a
  24. 24. Vista Virtual INFOR MÁT ICAExecute Vamos ir para o modo Estrutura do formulário Teste, do banco de dadosNwind.mdb e criar um botão chamado ExOperadoresComparação. Vamos criar umprocedimento associado a esse botão, onde exemplificamos o uso dos diversosoperadores de comparação do VBA. Vá para o modo estrutura do formulário Teste. Crie um botão de comando com o nome de ExOperadoresComparação. Associe o seguinte código ao evento Ao abrir, deste botão de comando: 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 y são diferentes" End If Após digitar o código Feche o Ambiente de Desenvolvimento. Salve o Formulário. Vá para o modo Formulário e dê um clique no botão "ExOperadoresAritméticos". Será exibida a seguinte mensagem:
  25. 25. Vista Virtual INFOR MÁT ICA Dê um clique no botão OK. Será exibida a seguinte mensagem: Dê um clique no botão OK. Será exibida a seguinte mensagem: Dê um clique no botão OK. Será exibida a seguinte mensagem: Dê um clique no botão OK. Você estará de volta ao formulário teste. Mantenha-o aberto para os próximos exemplos. O uso de Operadores de comparação, amplia o leque de possibilidades paranossos programas em VBA. Devemos ter alguns cuidados quando comparamosvariáveis que possuem valores de tipos diferentes, como por exemplo, número etexto. A Tabela a seguir descreve o que acontece, quando comparamos variáveiscom valores de tipos diferentes.
  26. 26. Vista Virtual INFOR MÁT ICACom a utilização dos operadores aritméticos e de comparação, ampliamos bastante oleque de opções, na criação de códigos com o VBA. No próximo item, veremosalguns detalhes sobre “Escopo” de variáveis.O Escopo das variáveis, no VBA.O escopo de uma variável, define em que partes do código a variável pode serutilizada. Em VBA, podemos ter os seguintes escopos para as variáveis:Escopo de Módulo: Uma variável declarada dentro do Múdulo, mas fora dequalquer Procedimento. Com isso a variável pode ser utilizada dentro de todo obloco de código do Módulo, inclusive dentro dos Procedimentos, caso exista algum.Uma variável declarada em nível de Módulo, existe enquanto o Módulo estiver sendoexecutado.São as variáveis declaradas na seção de Declarações do Módulo. Umavariável declarada em nível de Módulo, poderá ser utilizada em todos osprocedimentos/funções do módulo.Escopo de procedimento: A variável somente pode ser utilizada, dentro doprocedimento onde esta é declarada. Se tentarmos utilizar a variável fora doprocedimento, onde a ela foi declarada, não teremos acesso a ela. Uma variáveldeclarada em nível de procedimento, existe enquanto o procedimento estiver sendoexecutado.
  27. 27. Vista Virtual INFOR MÁT ICA NOTA= Um procedimento é um bloco de código que pode ser chamado em qualquer ponto do Módulo. Ao chamarmos um procedimento, a execução é deslocada para dentro do procedimento. Após concluído o procedimento, a execução segue com a linha seguinte à que chamou o procedimento. Veremos maiores detalhes sobre procedimentos e funções, mais adiante. Vamos a um exemplo prático, para entendermos melhor este conceito de escopo de uma variável. Exemplo: Vamos ir para o modo Estrutura do formulário Teste, do banco de dados Nwind.mdb e criar um botão chamado ExEscopo. Vamos criar um procedimento associado a esse botão, onde exemplificamos o conceito de escopo de variáveis. Execute Abra o banco de dados nwind.mdb que está na pasta Semana2. Faça o logon como usuário AdmCaxias e senha abc12345. Vá para o modo estrutura do formulário Teste. Crie um botão de comando com o nome de ExEscopo. Associe o seguinte código ao evento Ao abrir, deste botão de comando: Dim a,b As Integer x=10 x=20 Call proc1 Agora vamos tentar utilizar os valores de a e b Fora do procedimento proc1. Observe que a variável aux1 não é calculada corretamente, uma vez que os valores de a e b não estão disponíveis, fora do procedimento proc1 Aux1 = a + b MsgBox "aux1= " & Aux1 O comando Call faz o chamado ao procedimento proc1. Este procedimentodeve ser definido no mesmo módulo, caso contrário um erro será gerado. Aoencontrar esse comando o Access desloca a execução para o procedimento proc1,executa os comandos deste procedimento e após encerrar continua a execução apartir do comando seguinte ao comando Call. Vá para a seção de Declarações e declare as seguintes variávies:
  28. 28. Vista Virtual INFOR MÁT ICA Dim x, y,aux1 As Integer Para deslocar-se, rapidamente para a seção de Declarações, utilize a listaindicada na figura a seguir. Nesta lista selecione a opção (Geral). Agora vamos criar o procedimento proc1, procedimento este que é chamadono evento ao clicar do botão ExEscopo. Vá para o final do módulo e digite o seguinte código: Agora vamos criar um procedimento E declarar duas variáveis dentro deste procedimento. Estas variáveis somente serão visíveis, Dentro deste procedimento. Sub proc1() Dim a, b a=5 b=7 MsgBox "x= " & x & " y= " & y & " a= " & a & " b= " & b End Sub Feche o Ambiente de Desenvolvimento. Vá para o modo formulário. Dê um clique no botão ExEscopo. Será exibida a janela indicada na Figura a seguir: Dê um clique no botão OK. Será exibida a janela indicada na figura a seguir:
  29. 29. Vista Virtual INFOR MÁT ICA Observe que o valor da variável aux1 (foi calculado incorretamente), pois avariável aux1 depende dos valores de "a" e "b". Como as variáveis a e b foramdeclaradas dentro do procedimento proc1, elas não podem ser acessadas de fora doprocedimento proc1, ou seja, após a execução do procedimento ter sido encerrada. Dê um clique no botão OK. Mantenha o formulário Teste aberto. Vá para o modo Estrutura do formulário Teste.Com esse exemplo, foi possível verificar, na prática, o conceito de escopo(algumas vezes chamado de visibilidade) das variáveis. No próximo item,trataremos das Estruturas e laços de controle, que são elementos muito importantesna criação de scripts.Estruturas para controle de fluxo em VBScript.Para que possamos criar aplicações com utilidade prática, aplicadas na solução deproblemas reais, precisamos poder controlar o fluxo de execução de um script. NoVBScript, temos diversas “estruturas” que permitem um controle bastante eficaz dofluxo de execução. Neste item, estaremos estudando diversas destas estruturas.Estruturas de decisãoEm um primeiro grupo, temos as chamadas estruturas de decisão. São estruturas querealizam um teste lógico, e executam determinados comandos quando o testeresultar verdadeiro, ou um conjunto diferente de comandos, quando o teste resultarfalso. Agora passaremos a analisar as estruturas de decisão, disponíveis no VBA. A estrutura If ... ThenA estrutura If...Then, é uma das estruturas de decisão mais conhecidas. Todalinguagem de programação implementa esta estrutura. É utilizada para executardeterminados comandos, caso uma condição seja verdadeira. A forma geral destaestrutura é a seguinte: If condição Then Comando1 Comando2 ... Comandon End IF.Uma condição é testada, caso a condição seja verdadeira, um ou mais comandospodem ser executados. Considere o exemplo a seguir:
  30. 30. Vista Virtual INFOR MÁT ICA Dim x, y x=10 y=15 If x<y Then MsgBox “x é menor do que y” End IfNeste exemplo, a mensagem “x é menor do que y”, será exibida, uma vez que oteste x<y é verdadeiro, conforme podemos constatar pelos valores atribuídos asvariáveis x e y. A estrutura If ... Then...ElseA estrutura If...Then...Else, acrescenta mais uma possibilidade a estrutura If...Then.É utilizada para executar determinados comandos, caso uma condição seja verdadeira,ou um conjunto diferente de comandos, caso a condição seja falsa. A forma geraldesta estrutura é a seguinte: If condição Then Comando1 Comando2 ... Comandon Else Comando1 Comando2 ... Comandon End IFUma condição é testada, caso a condição seja verdadeira, um determinado comando,ou conjunto de comandos será executado; caso a condição 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 IfNeste exemplo, a mensagem “x é maior do que y”, será exibida, uma vez que o testex<y é falso, conforme podemos constatar pelos valores atribuídos as variáveis x e y. A estrutura If ... Then...ElseIf...Else
  31. 31. Vista Virtual INFOR MÁT ICAA estrutura If...Then...ElseIf, nos dá uma poder maior, para testarmos diversaspossibilidades. É utilizada quando precisamos realizar mais do que um teste lógico.Neste caso, para cada novo teste que se faça necessário, utilizamos um ElseIf. Aforma geral desta estrutura é a seguinte: If condição Then Comandos a serem executados, caso a condição seja verdadeira. Comando1 Comando2 ... Comandon ElseIf condição-2 Comandos a serem executados, caso a condição2 seja verdadeira. Comando1 Comando2 ... Comandon ElseIf condição-3 Comandos a serem executados, caso a condição3 seja verdadeira. Comando1 Comando2 ... Comandon ... ElseIf condição-n Comandos a serem executados, caso a condição n seja verdadeira. Comando1 Comando2 ... Comandon Else Comandos a serem executados, caso nenhuma das condições anteriores seja verdadeira. Comando1 Comando2 ... Comandon End IF.Uma condição é testada, caso a condição seja verdadeira, um determinado comando,ou conjunto de comandos será executado; caso a condição seja falsa, podemosfazer um segundo teste (condição-2). Caso a segunda condição seja verdadeira, umdeterminado comando, ou conjunto de comandos será executado, a assim por diante,para n condições. Caso nenhuma das condições seja verdadeira, os comandos após acláusula Else, serão executados.
  32. 32. Vista Virtual INFOR MÁT ICA 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 “x é menor do que y” ElseIf x<z Then MsgBox “x é menor do que z” ElseIf x<k Then MsgBox “x é menor do que 4” ElseIf x<w Then MsgBox “x é menor do que w” ElseIf x<p Then MsgBox “x é menor do que p” Else MsgBox “x é o maior dos números” End IfNeste exemplo, a mensagem “x é maior dos números”, será exibida, uma vez quetodos os testes anteriores falham (pois x é o maior número), com isso somenteserá executado o último MsgBox, que faz parte do Else. Mas o que acontece, quando um dos ElseIf é verdadeiro ?Os teste vão sendo feitos. Quando o teste de um dos ElseIf for verdadeiro, oscomandos abaixo do ElseIf verdadeiro, serão executados e o laço será encerrado.Em resumo, quando um dos ElseIf apresentar um teste verdadeiros, os comandosrelacionados serão executados, e os demais não serão avaliados, seguindo a execuçãopara o primeiro comando, após o End If. A estrutura Select...CaseQuando precisamos realizar uma série de testes, é mais eficiente utilizarmos umaúnica estrutura Select...Case, do que utilizarmos uma série de testes utilizando aestrutura If...Then...ElseIf.O funcionamento da estrutura Select...Case, é bastante intuitivo.
  33. 33. Vista Virtual INFOR MÁT ICA 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 não é um número par, menor do que 12 ” End SelectA estrutura Select Case x, vai testar o valor de x. Em cada um dos Case, o valor dex está sendo testado. Quando for encontrado um valor coincidente com o de x, oscomandos abaixo deste Case serão executados. No nosso exemplo, o comandoMsgBox “X vale 10 !”, abaixo de Case 10, será executado. O comando abaixo doCase Else somente será executado, se todos os testes anteriores falharem.O uso da estrutura Select...Case, torna o código mais eficiente e de mais fácil leitura.Estruturas de repetição.Em determinadas situações, precisamos repetir um ou mais comandos, um númeroespecífico de vezes, ou até que uma determinada condição torne-se verdadeira ou falsa.Por exemplo, pode ser que haja a necessidade de percorrer todos os registros de umadeterminada tabela, até que o último registro seja alcançado. Para isso, utilizamos aschamadas estruturas de repetição, ou Laços. A partir de agora, estaremos analisando asestruturas de repetição disponíveis. A estrutura For...Next.Utilizamos o laço For...Next, para repetir um segmento de código, um númerodeterminado de vezes. Utilizamos esta estrutura, quando já sabemos o número devezes que uma determinada seção de código deve ser repetida. Neste tipo deestrutura, normalmente, utilizamos uma variável como contador. Este contador variade um valor inicial até um valor final. O Formato geral desta estrutura é o seguinte:
  34. 34. Vista Virtual INFOR MÁT ICA For contador=inicio to fim incremento Comando1 Comando2 ... Comandon NextNo início a variável contador tem o valor definido para um determinado valor. Em cadapassagem do laço, a variável contador é incrementada pelo valor definido emincremento. Caso não seja definido o incremento, será utilizado o padrão 1.Considere o exemplo a seguir: Dim x x=10 Soma=0 ‘ Faz a soma dos 10 primeiros números maiores do que zero For i=1 to x Soma = Soma +i Next MsgBox “Valor da Soma = “ & SomaNeste exemplo, a variável i inicia com o valor 1. Em cada passo, o valor de i éacrescentado à variável Soma. Como o incremento não foi definido, será utilizado opadrão que é 1. Com isso, ao final do laço For...Next, a variável Soma, teráarmazenado o valor da soma dos 10 primeiros números inteiros.Poderíamos utilizar um valor de incremento diferente de 1, para, por exemplo, obtera soma somente dos números ímpares menores do que 10: Dim x x=10 Soma=0 Faz a soma dos 10 primeiros números ímpares For i=1 to x Step 2 Soma = Soma +i Next MsgBox “Valor da Soma = “ & Soma
  35. 35. Vista Virtual INFOR MÁT ICACom este Script, obtemos o resultado indicado na Figura a seguir: A estrutura Do...Loop.Esta estrutura pode ser utilizada para repetir um trecho de código, enquanto umadeterminada condição for verdadeira, ou até que uma determinada condiçãotorne-se verdadeira. Podemos utilizar dois operadores condicionais diferentes:While ou Until. Os operadores While ou Until, podem ser utilizados de duasmaneiras diferentes: No início do laço, ou no final do laço. Com isso temos quatrosituações distintas, vamos analisar cada uma delas, a partir de agora. A estrutura Do While Condição...Loop.Neste caso, estamos utilizando o operador condicional While, no início do laço. Oformato geral, neste caso é o seguinte: Do While condição/teste Comando1 Comando2 ... Comandon LoopNesta estrutura, enquanto a condição for verdadeira, o código dentro do laço éexecutado. Quando a condição tornar-se falsa, o primeiro comando após o final dolaço, será executado. Neste caso, se a condição for falsa já na primeira vez, o laço nãoserá executado nenhuma vez.IMPORTANTE= O Código dentro do laço deve ser capaz de alterar a condiçãopara Falso, quando for necessário, pois caso contrário a condição será sempreverdadeira, e os comandos dentro do laço ficarão em execução, infinitamente, ou atéo programa travar. A criação de laços infinitos, devido a erros de programação, éuma causa comum de erros e travamentos.
  36. 36. Vista Virtual INFOR MÁT ICA Considere o exemplo a seguir: Dim x x=10 Contador=1 Soma=0 Faz a soma dos 10 primeiros números maiores do que zero Do While Contador <= x Soma = Soma + Contador Contador = Contador + 1 Loop MsgBox “Valor da Soma = “ & SomaObserve que dentro do laço, vamos Incrementando o valor da variável Contador,uma unidade para cada passagem do laço. Com isso, quando o valor de Contador,atingir 11, o teste do início do laço torna-se falso, e o laço é encerrado. A estrutura Do... Loop While Condição.Neste caso, deslocamos o teste de condição para o final do laço. Com o teste nofinal do laço, o código dentro do laço, será executado, pelo menos uma vez, pois oteste somente é feito no final, e continuará sendo executado, enquanto a condiçãofor verdadeira. O formato geral, neste caso é o seguinte: Do Comando1 Comando2 ... Comandon Loop While condição/testeNesta estrutura, enquanto a condição for verdadeira, o código dentro do laço éexecutado. Quando a condição tornar-se falsa, o primeiro comando após o final dolaço, será executado. Neste caso, se a condição for falsa já na primeira vez, o laçoserá executado uma única vez.IMPORTANTE= O Código dentro do laço deve ser capaz de alterar a condiçãopara Falso, quando for necessário, pois caso contrário a condição será sempreverdadeira, e os comandos dentro do laço ficarão em execução, infinitamente, ou atéo programa travar. A criação de laços infinitos, devido a erros de programação, éuma causa comum de erros e travamentos.
  37. 37. Vista Virtual INFOR MÁT ICA Considere o exemplo a seguir: Dim x x=10 Contador=1 Soma=0 ‘ Faz a soma dos 10 primeiros números 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 laço será executado uma única vez, pois a condição ‘ Contador < x é falsa. Do Soma = Soma + Contador Contador = Contador + 1 Loop While Contador <= x MsgBox “Valor da Soma = “ & SomaQual o valor será exibido para a variável Soma ?Muito simples. A condição Contador < x é falsa, pois x=10 e Contador=12 (Lembre queo Contador foi incrementado de uma unidade dentro do laço, antes do teste serrealizado). Neste caso, o laço será executado uma única vez, pois o teste decondição está no final do laço. Quando o laço é executado, é atribuido o valor 11para a variável Soma. Com isso, o valor exibido para a variável Soma, será 11.
  38. 38. Vista Virtual INFOR MÁT ICA A estrutura Do Until Condição...Loop.Neste caso, estamos utilizando o operador condicional Until, no início do laço. Oformato geral, neste caso é o seguinte: Do Until condição Comando1 Comando2 ... Comandon LoopNesta estrutura, enquanto a condição for falsa, o código dentro do laço éexecutado. Quando a condição tornar-se verdadeira, o primeiro comando após o finaldo laço, será executado. Neste caso, se a condição for verdadeira, já na primeira vez,o laço não será executado nenhuma vez.IMPORTANTE= O Código dentro do laço deve ser capaz de tornar a condiçãoVerdadeira, quando for necessário, pois caso contrário a condição será sempreFalsa, e os comandos dentro do laço ficarão em execução, infinitamente, ou até oprograma travar. A criação de laços infinitos, devido a erros de programação, é umacausa comum de erros e travamentos.Considere o exemplo a seguir: Dim x x=10 Contador=1 Soma=0 ‘ Faz a soma dos 10 primeiros números maiores do que zero Do Until Contador > x Soma = Soma + Contador Contador = Contador + 1 Loop MsgBox “Valor da Soma = “ & SomaObserve que dentro do laço, vamos Incrementando o valor da variável Contador,uma unidade para cada passagem do laço. Com isso, quando o valor de Contador,atingir 11, o teste do início do laço torna-se Verdadeiro, e o laço é encerrado.
  39. 39. Vista Virtual INFOR MÁT ICA A estrutura Do... Loop Until Condição. Neste caso, deslocamos o teste de condição para o final do laço. Com o teste no final do laço, o código dentro do laço, será executado, pelo menos uma vez, pois o teste somente é feito no final, e continuará sendo executado, enquanto a condição for Falsa. O formato geral, neste caso é o seguinte: Do Comando1 Comando2 ... Comandon Loop Until condiçãoNesta estrutura, enquanto a condição for Falsa, o código dentro do laço é executado.Quando a condição tornar-se Verdadeira, o primeiro comando após o final do laço,será executado. Neste caso, se a condição for Verdadeira, já na primeira vez, o laçoserá executado uma única vez.IMPORTANTE= O Código dentro do laço deve ser capaz de tornar a condiçãoVerdadeira, quando for necessário, pois caso contrário a condição será sempreFalsa, e os comandos dentro do laço ficarão em execução, infinitamente, ou até oprograma travar. A criação de laços infinitos, devido a erros de programação, é umacausa comum de erros e travamentos. Considere o exemplo a seguir: Dim x x=10 Contador=1 Soma=0 ‘ Faz a soma dos 10 primeiros números maiores do que zero Do Soma = Soma + Contador Contador = Contador + 1 Loop Until Contador > x MsgBox “Valor da Soma = “ & Soma
  40. 40. Vista Virtual INFOR MÁT ICAVamos modificar um pouco o nosso exemplo. Considere o exemplo a seguir: Dim x x=10 Contador=11 Soma=0 ‘ O laço será executado uma única vez, pois a condição ‘ Contador >= x é verdadeira. Do Soma = Soma + Contador Contador = Contador + 1 Loop Until Contador >= x MsgBox “Valor da Soma = “ & SomaQual o valor será exibido para a variável Soma ?Muito simples. A condição Contador>= x é falsa, pois x=10 e Contador=12 (Lembreque o Contador foi incrementado de uma unidade, na linha 11, na primeirapassagem do laço). Neste caso, o laço será executado uma única vez, pois o testede condição está no final do laço. Quando o laço é executado, é atribuido o valor11 para a variável Soma. Com isso, o valor exibido para a variável Soma, será 11.Exercício: Crie um formulário onde são adicionados dois campos para digitação devalores inteiros. Adicione um botão chamado Calcular. O usuário digita um valor noprimeiro campo e outro valor no segundo campo. O valor do segundo campo deveser maior do que o valor do primeiro campo. O sistema deve fazer essa verificação.Deve haver um grupo com dois botões de rádio. Um associado ao valor (Pares) eoutro associado ao valor (Ímpares). O usuário marca uma destas opções e clica nobotão Calcular. O sistema calcula a soma dos números pares ou ímpares (de acordocom a seleção do usuário), dentro do intervalo definido pelos valores digitados pelousuário.
  41. 41. Vista Virtual INFOR MÁT ICAFunções, procedimentos e eventos com VBScript.IntroduçãoNeste tópico, veremos uma série de aspectos que vão além do básico do VBA.Iniciaremos falando um pouco mais sobre tipos de dados e funções para conversãode tipos. Este tópico é de grande importância, principalmente quando criamos códigoque efetua cálculos, como por exemplo o cálculo do imposto em um volume dedados do contribuinte.Depois passaremos a analisar uma série de funções internas do VBA. São funçõesque fazem parte do Microsoft Access, como por exemplo a função Date(), que retornaa data do sistema. Na seqüência, aprenderemos a criar nossas próprias funções eSub-rotinas. Aprenderemos as diferenças entre uma Sub-rotina e uma função, equando utilizar uma ao invés da outra.Tipos de dados e funções para conversão de tipos.Neste item, aprenderemos a determinar qual o tipo de dado que está armazenado emuma variável, bem como a converter valores de um tipo para outro, utilizando asfunções para conversão de tipos.Determinando o Tipo de Dados contido em uma variável.Existem diversas funções, que permitem que seja determinado o tipo de valor contidoem uma variável. Existem diversas aplicações para este tipo de função. Por exemplo,ao digitar dados em um formulário, podemos utilizar uma função para determinar seos valores digitados pelo usuário, não apresentam problemas. Por exemplo, o usuáriopode ter digitado, por engano, texto em um campo que deve conter valoresnuméricos. A função IsArray.Um Array é um tipo especial de variável, a qual pode armazenar diversos valoresem uma única variável. De uma forma simples, um Array é um conjunto. Porexemplo, poderíamos ter uma variável Array na qual são armazenados todos oscódigos de tributo, válidos. Cada valor armazenado no Array é um elemento doconjunto. Um outro exemplo: Poderíamos criar um Array para armazenar os nomesdos meses do ano. Com isso teríamos um Array de 12 elementos.
  42. 42. Vista Virtual INFOR MÁT ICACada elemento de um Array, é acessado através do nome da variável Array e deum índice. O índice inicia em zero e não em um. Por isso se tivermos um Arrayde 10 elementos, teremos o elemento 0, o elemento 1, o elemento 2, e assim pordiante, até o elemento 9. O fato do índice começar com 0, influencia na hora queformos declarar um Array. Para declarar um Array chamado produtos, com 20elementos, utilizaríamos a seguinte declaração: Dim produtos(19)O 19 significa que temos 20 elementos (sempre um a mais do que o número queaparece na declaração), isto é, do elemento 0, indicado por produtos(0), até oelemento 20, indicado por produtos(19).No exemplo a seguir, temos um exemplo simples de utilização de Array:Declara um Array de 7 posiçõesComo a primeira posição é a posição zero,Indicamos o tamanho como 6, o que significada posição 0 até a posição 6 = 7 elementos.Dim Dias(6)Atribuímos valores para os dias da semanaDias(0)= "Segunda-feira"Dias(1)= "Terça-feira"Dias(2)= "Quarta-feira"Dias(3)= "Quinta-feira"Dias(4)= "Sexta-feira"Dias(5)= "Sábado"Dias(6)= "Domingo"Agora utilizamos um laço For...NextPara criar uma String, com o conteúdoDo Array Dias.For i=0 to 6 mensagem = mensagem & "Dia: " & i+1 & " " & Dias(i)& Chr(13)NextUtilizamos uma MsgBox, para exibir a mensagemcom o conteúdo do Array Dias.MsgBox mensagemExercício: Abra o formulário Teste no modo Estrutura, crie um botão chamadoExArray e associe o código deste exemplo, ao evento Ao clicar deste botão. Teste ofuncionamento do código.
  43. 43. Vista Virtual INFOR MÁT ICAUtilizamos a função IsArray, para determinar se uma variável do tipo Variant(lembre que todas as variáveis do VBA, são do tipo Variant), está armazenandoum Array.Utilizamos a seguinte sintaxe: IsArray(NomeDaVariável)A função IsArray retorna verdadeiro se a variável for um Array, e falso casocontrário.Vamos alterar um pouco o exemplo anterior, adicionando o seguinte comando, aofinal da listagem.: MsgBox IsArray(Dias)o resultado seria o indicado na Figura a seguir:A função VarType.Podemos utilizar a função VarType, para determinar o subtipo de umavariável. Como todas as variáveis são do tipo Variant, o subtipo pode serutilizado para determinar o tipo de dado armazenado na variável. Passamospara a função, o nome de uma variável ou expressão. A função retorna umnúmero inteiro que indica o subtipo da variável.A sintaxe da função é a seguinte: VarType(NomeDaVariável)ou VarType(expressão)Na Tabela a seguir temos os códigos de retorno da função VarType.
  44. 44. Vista Virtual INFOR MÁT ICATabela - Valores de retorno da função VarType.Valor Descrição0 Vazio (não inicializado)1 Nulo (dados não válidos)2 Inteiro3 Inteiro longo4 Número de precisão simples5 Número de precisão dupla6 Monetário.7 Data8 Texto9 Objeto de automação10 Erro11 Boleano12 Variant (somente é utilizado com Arrays de variantes)13 Um objeto para acesso a dados.17 Byte8192 ArrayNo exemplo a seguir, temos um exemplo de utilização da função VarType.Dim x,y,zDim a, bDim c(20)Dim mensagem As Stringx=12y=23.456y=123456789a="Este é um valor de texto !"‘Utilizamos a função Date( ), para capturar a data do sistema.b=Date()mensagem = "Tipo da variável x: " & Vartype(x) & Chr(13)mensagem = mensagem & "Tipo da variável y: " & Vartype(y) & Chr(13)mensagem = mensagem & "Tipo da variável z: " & Vartype(z) & Chr(13)mensagem = mensagem & "Tipo da variável a: " & Vartype(a) & Chr(13)mensagem = mensagem & "Tipo da variável b: " & Vartype(b) & Chr(13)mensagem = mensagem & "Tipo da variável c: " & Vartype(c) & Chr(13)MsgBox mensagemAo executar este exemplo, obteremos o resultado indicado na Figura a seguir:
  45. 45. Vista Virtual INFOR MÁT ICAObserve, principalmente, no tipo da variável z, o qual retornou 0. Isto significa que avariável z está vazia, ou seja, não foi inicializado. Este resultado está coerente coma Tabela anterior. Também podemos salientar o retorno para a variável b, o qualretornou 7, indicando que o valor armazenado nesta variável é do tipo Data, o quetambém está coerente com a Tabela anterior, uma vez que usamos a função Date() ,para armazenar a data do sistema, na variável b. Finalmente observe o valor deretorno para a variável c, o qual retornou 8192, indicando que a variável c é umArray. Este resultado está coerente com a Tabela anterior, e com a declaração: Dimc(20), a qual declarou a variável c como sendo um Array.Muitas são as aplicações práticas para a função VarType, dentre as quais podemosdestacar a validação dos dados digitados em um formulário.Exercício: Abra o formulário Teste no modo Estrutura, crie um botão chamadoExVarType e associe o código deste exemplo, ao evento Ao clicar deste botão. Teste ofuncionamento do código.
  46. 46. Vista Virtual INFOR MÁT ICA A função IsDate. A função IsDate recebe uma variável ou expressão como argumento, e determina se a variável ou expressão é uma data válida, ou pode ser convertida para uma data válida. Caso o argumento passado seja uma data válida, a função retorna Verdadeiro, caso contrário, retorna Falso. Podemos utilizar esta função, por exemplo, para verificar se o usuário digitou uma data válida, em um campo de um formulário. A sintaxe da função IsDate é a seguinte: IsDate(NomeDaVariável) ou IsDate(expressão) A seguir temos um exemplo de utilização da função IsDate. If IsDate(Me![DataDeEntrada]) Then MsgBox "Você digitou uma data válida !" Else MsgBox "Data inválida, digite novamente !" Me![DataDeEntrada] = Null Me![DataDeEntrada].SetFocus End IfExercício: Abra o formulário Teste no modo Estrutura, crie um botão chamadoExIsDate e associe o código deste exemplo, ao evento Ao clicar deste botão. Crie umcampo do tipo Caixa de Texto, onde o usuário pode digitar uma data. Nomeie estecampo como DataDeEntrada. Teste o funcionamento do código.
  47. 47. Vista Virtual INFOR MÁT ICA A função IsEmpty.A função IsEmpty recebe uma variável ou expressão como argumento, e determinase, em algum momento, foi atribuído algum valor para a variável ou expressão. Casotenha sido atribuído algum valor, a função retorna Verdadeiro, caso contrário,retorna Falso. Podemos utilizar esta função, por exemplo, para verificar se umcampo de digitação obrigatória, como por exemplo o nome, não foi deixado embranco.A sintaxe da função IsEmpty é a seguinte: IsEmpty(NomeDaVariável) ou IsEmpty(expressão)A seguir temos um exemplo de utilização da função IsEmpty. Vamos declarar uma variável 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 variável x, não foi utilizada !" End IfA variável x foi declarada porém não foi inicializada, com isso possui está vazia,logo a função IsEmpty(x) irá retornar Verdadeiro. A função IsNull.A função IsNull recebe uma variável ou expressão como argumento, e determina se,em algum momento, foi atribuído o valor Null para a variável ou expressão. Casotenha sido atribuído o valor Null, a função retorna Verdadeiro, caso contrário, retornaFalso. Para atribuirmos Null para uma variável, utilizamos a seguinte sintaxe: NomeDaVariável = Null
  48. 48. Vista Virtual INFOR MÁT ICAIMPORTANTE: Uma variável com valor Null, não é a mesma coisa que umavariável com valor zero, ou uma variável de texto com tamanho zero. Quando éatribuído o valor Null para a variável, esta continua existindo na memória, porém semnenhum valor definido.A sintaxe da função IsNull é a seguinte: IsNull(NomeDaVariável) ou IsNull(expressão)A seguir temos um exemplo de utilização da função IsNull. Vamos declarar uma variável x, e atribuir Null, para a variável. Dim x x = Null If IsNull(x) Then MsgBox "A variável x é Nula !" End If Este exemplo produz o seguinte resultado: A função IsNumeric.A função IsNumeric recebe uma variável ou expressão como argumento, e determinase o valor atribuído à variável ou expressão é numérico, ou pode ser convertido paranumérico. Caso o valor seja numérico, ou possa ser convertido, a função retornaVerdadeiro, caso contrário, retorna Falso.A sintaxe da função IsNumeric é a seguinte: IsNumeric(NomeDaVariável) ou IsNumeric(expressão)
  49. 49. Vista Virtual INFOR MÁT ICA A seguir temos um exemplo de utilização da função IsNumeric. Dim x,y,z x=123 Atribuo um valor que não pode ser convertido para numérico y = "Riachuelo - 80" z = Date() mensagem = "Valor de x: " & x &" É numérico ? " & IsNumeric(x)& Chr(13) mensagem = mensagem & "Valor de y: " & y &" É numérico ? " & IsNumeric(y)& Chr(13) mensagem = mensagem & "Valor de z: " & z &" É numérico ? " & IsNumeric(z) MsgBox mensagemExercício: Abra o formulário Teste no modo Estrutura, crie um botão chamadoExIsNumeric e associe o código deste exemplo, ao evento Ao clicar deste botão. Testeo funcionamento do código.Cabe salientar a utilização da função Date(), para capturar a data do sistema, eatribuir esta data à variável z. Observe que esta data não foi considerada um valornumérico para a função IsNumeric. A função IsObject.A função IsObject recebe uma variável como argumento, e determina se o valoratribuído à variável é um Objeto Activex, se for um objeto Activex, a função retornaVerdadeiro, caso contrário, retorna Falso.A sintaxe da função IsObject é a seguinte: IsObject(NomeDaVariável) ou IsObject(expressão)
  50. 50. Vista Virtual INFOR MÁT ICAFunções para conversão de tipos.Neste item aprenderemos a utilizar as principais funções para conversão de tipos.Existem situações em que um determinado tipo de dado, deve ser convertido paraoutro. Por exemplo, se tivermos um número, armazenado na forma de texto,precisamos convertê-lo para inteiro ou double, para que possamos realizar cálculoscom o mesmo. Faremos um exemplo de cálculo do DV do CPF, onde o CPF é umvalor do tipo texto. Ao extrairmos cada dígito do CPF, estes serão extraítos comocaracteres de texto. Precisaremos utilizar uma função de conversão, para convertê-los para números, a fim de que possamos efetuar os cálculos necessários.Na seqüência, apresento as principais funções de conversão, bem como um pequenofragmento de código, exemplificando a utilização de cada uma delas. Função Cbool.A função Cbool converte uma variável ou resultado de um expressão, para o subtipoBoolean. Qualquer número, com exceção do zero, é automaticamente convertidopara Verdadeiro. O valor zero é sempre convertido para Falso. O argumento destafunção, não pode ser Texto, caso contrário será gerado um erro em tempo deexecução.Observe este linha de código: MsgBox cbool(10>25) & chr(13) & cbool(3) Esta linha gera a mensagem indicada na Figura a seguir:A expressão 10>25 é avaliada, como a expressão é falsa, a função Cbool retornaFalso. Já no segundo uso da função Cbool, foi passado o parâmetro 3 para a função.Qualquer valor diferente de zero (com exceção de texto), a função interpreta comoVerdadeiro, o que é comprovado pela Figura anterior.
  51. 51. Vista Virtual INFOR MÁT ICAFunção CByte.A função CByte converte uma variável ou resultado de um expressão, para o subtipoByte. O valor a ser convertido, deve estar na faixa aceitável para o tipo byte, quevai de 0 à 255. Caso o número esteja fora desta faixa, será gerada umamensagem de erro, em tempo de execução. O argumento desta função, não podeser Texto, caso contrário será gerada uma mensagem de erro, em tempo deexecução.Observe este linha de código: MsgBox CByte(10+34) & chr(13) & CByte(35)Esta linha gera a mensagem indicada na Figura a seguir:A expressão 10+34 é calculada, e o resultado (44), é convertido para o tipo byte.A linha de código abaixo, irá gerar uma mensagem de erro, em tempo de execução,pois o valor a ser convertido para byte, está fora da faixa de 0 à 255. MsgBox CByte(100+200)Função CCur.A função CCur converte uma variável ou resultado de um expressão, para osubtipo Currency. O argumento desta função, não pode ser Texto, caso contrárioserá gerado um erro.Observe este linha de código: MsgBox CCur(250.335677+324.3333) & chr(13) & CCur(1250.326582)Esta linha gera a mensagem indicada na Figura a seguir:A expressão 250.335677+324.3333 é calculada, e o resultado é convertido para o tipoCurrency.Se passarmos um argumento de texto para a função CCur, será gerado um erro deexecução, conforme indicado na Figura a seguir:
  52. 52. Vista Virtual INFOR MÁT ICAFunção CDate.A função CDate converte uma variável ou resultado de um expressão, para osubtipo Date. O argumento desta função deve estar em um formato que sejaaceitável para datas, caso contrário será gerada uma mensagem de erro, em tempode execução.Observe este linha de código: MsgBox CDate(“31/10/1980”) & chr(13) & CDate(“23-01-2007”)Esta linha gera a mensagem indicada na Figura a seguir:
  53. 53. Vista Virtual INFOR MÁT ICAA linha de código abaixo, irá gerar uma mensagem de erro, em tempo de execução,conforme indicado na próxima figura: MsgBox CDate(“31/02/1980”)Função CDbl.A função CDbl converte uma variável ou resultado de um expressão, para o subtipoDouble. O argumento desta função não pode ser do tipo texto, caso contrárioserá gerada uma mensagem de erro, em tempo de execução.Observe este linha de código: MsgBox CDbl("4.940651247E-17")Esta linha gera a mensagem indicada na Figura a seguir:
  54. 54. Vista Virtual INFOR MÁT ICA Função CInt.A função CInt converte uma variável ou resultado de um expressão, para o subtipoInteger. O argumento desta função não pode ser do tipo texto, caso contrário serágerada uma mensagem de erro, em tempo de execução.Observe este linha de código: MsgBox CInt(32.36) & Chr(13) & CInt(20.35+40.45)Esta linha gera a mensagem indicada na Figura a seguir:A linha de código abaixo, irá gerar uma mensagem de erro, em tempo de execução. Função CLng.A função CLng converte uma variável ou resultado de um expressão, para o subtipoLong. O argumento desta função não pode ser do tipo texto, caso contrário serágerada uma mensagem de erro, em tempo de execução. O argumento também nãopode estar fora da faixa admitida pelo subtipo Long, caso contrário será gerada umamensagem de erro, em tempo de execução. Observe este linha de código: MsgBox CLng("3462315") Esta linha gera a mensagem indicada na Figura a seguir:
  55. 55. Vista Virtual INFOR MÁT ICAFunção CSng.A função CSng converte uma variável ou resultado de um expressão, para osubtipo Single. O argumento desta função não pode ser do tipo texto, casocontrário será gerada uma mensagem de erro, em tempo de execução. Oargumento também não pode estar fora da faixa admitida pelo subtipo Single, casocontrário será gerada uma mensagem de erro, em tempo de execução.Observe este linha de código: MsgBox CSng("3.1418256927")Esta linha gera a mensagem indicada na Figura a seguir:Função CStr.A função CStr converte uma variável ou resultado de um expressão, para o subtipoString.Observe este linha de código: MsgBox CStr("12345" & " hectares de terra")Esta linha gera a mensagem indicada na Figura a seguir:
  56. 56. Vista Virtual INFOR MÁT ICAOutras funções do VBScript – Tratamento de String, Datas eFunções matemáticas.Neste item, aprenderemos a utilizar as principais funções do VBA. Apresentaremosas funções divididas em categorias, conforme a funcionalidade destas. Trataremos dasseguintes categorias: Funções para manipulação de String. Funções para manipulação de Data/Hora. Funções matemáticas.Funções para tratamento de String. Veremos as principais funções para tratamento de String.Função Asc.A função Asc, retorna o valor numérico do código ASCII, para a primeira letra de umaString. Considere o exemplo: Asc(“Ainda chovia”)Este exemplo de uso da função retorna o valor 65, o qual é o código ASCII, para aletra A maiúscula. Caso fosse a letra "a" minúscula, o código retornado seria 97 eassim por diante.Função Chr.A função Chr(número), recebe um número como parâmetro, e retorna o caracterASCII, associado ao número passado como parâmetro.Considere o exemplo: Chr(65)Este exemplo de uso da função retorna o caracter "A" maiúsculo. NOTA: Até agora,utilizamos a função Chr em diversos exemplos. Utilizamos o Chr(13), para simular umENTER, o que faz uma quebra de linha, nas mensagens montadas com o MsgBox.Função Len.Esta função determina o tamanho da String que foi passada como parâmetro para afunção. Considere o exemplo: MsgBox Len(“Este é um exemplo de uso da função Len !!”) Este exemplo de uso da função, retorna 41, conforme indicado na Figura a seguir:

×