Virtual

INF OR M ÁT I CA

Vista

Virtual
INF OR M ÁT I CA

Vista

Introduçã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: ................................. 4 O Ambiente de Programação.................................................................................................. 6 Para criar o formulário Teste faça o seguinte: .................................................................... 7 Anatomia dos Módulos do VBA. ..................................................................................... 13 Principais 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........................................................... 29 Funçõ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

Virtual
INF OR M ÁT I CA

Vista

Introdução a linguagem VBA - Visual Basic For Applications
O VBA é derivado do Visual Basic. O Visual Basic é um ambiente de desenvolvimento completo, onde podemos criar programas para o ambiente Windows. Um programa comercial para controlar estoque de mercadorias pode ser criado utilizando-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ém poderia ser criado utilizando o Visual Basic. Já o VBA é uma linguagem bastante poderosa, embora não seja tão poderosa quanto o Visual Basic, para criação de aplicativos e automação de tarefas, baseados nos aplicativos 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 o VBA:

Como resposta a um evento:
Conforme descrito anteriormente, o modelo deprogramação do ambiente Windows é baseado em Eventos. Um Evento é uma ação do usuário ao utilizar o teclado ou o mouse.Por exemplo, quando o usuário clica em um botão de comando é gerado o evento "Ao clicar" associado com este botão. Quando o usuário altera o valorem um campo de dados e pressiona a tecla TAB para ir para o próximo campo são gerados dois eventos associados com o campo que foi atualizado: "Após atualizar" e "Ao perder 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ão nenhuma ação é programada para responder aos eventos que são disparados. Conforme já vimos anteriormente é possível criar macros que serão executadas em resposta a um determinado evento. Podemos utilizar o VBA para criar um procedimento (um procedimento é formado por um ou mais comandos) que será executado em resposta ao evento. Por exemplo, podemos criar um procedimento para validar um número de CPF (calcular o DV do CPF). Este procedimento pode ser configurado para ser executado em resposta ao evento. Após atualizar do campo CPF.O código criado para ser executado em resposta a um evento, é gravada juntamente com o formulário (ou relató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 evento específico em um formulário ou relatório (podendo, porém serem chamados em diversos eventos diferentes, conforme aprenderemos mais adiante),podemos criar funções

Não se preocupe em entender este comando. Aprendendo VBA: Um procedimento.Virtual INF OR M ÁT I CA Vista gravadas em Módulos do Access. posso escrever um grupo de comandos que acessa os dados da tabela pedidos e aumenta o valor de um determinado campo de acordo com determinadas condições. basicamente. ao invés de Mês() devemos utilizar Month()e assim por diante. é hora de aprendermos os fundamentos básicos desta linguagem de programação. fornecidas pelo Microsoft Access e que podem ser utilizadas em qualquer comando do VBA. por extenso. mais adiante. Por exemplo. Por exemplo. . utilizar Dai(). Observe o comando a seguir: Me![NúmeroDoPedido]. a título de exemplo. qual a linguagem que não possui uma funçãoIF para a realização de testes condicionais? Funções internas do Microsoft Access:Existem centenas de funções prontas. o valor numérico do ano da data do sistema. simplesmente.Por exemplo. como se fosse uma função interna do Microsoft Access. Meio(). agora.SetFocus Este é um comando que. tais como: Esquerda(). ao invés de Ano() devemos utilizar Year(). se você for utilizar a função Day() em um comando e ao invés de Day(). em três tipos: Comandos básicos do VBA:São aqueles comandos que estão presentes em toda e qualquer lingüagem que se preze. Direita(). operadores aritméticos e lógicos.no formulário atual. Um Módulo é um objeto do Access cuja única finalidade é armazenar código de procedimentos e funções do VBA. A sintaxe tem a ver com a maneira como o comando é escrito. Durante a primeira semana utilizamos uma série destas funções. IMPORTANTE: Ao utilizar funções em comandos do VBA devemos. Por exemplo. você terá cometido um erro de sintaxe e o comando não poderá ser executado. poderíamos utilizar o seguinte comando: x =Year(Date()). Agora que já falei bastante e fiz uma boa propaganda das vantagens em se utilizar o VBA. Ano(). etc. Nos criaremos. Por exemplo. São comandos para declaração de variáveis. podemos usá-lo em qualquer expressão. coloca o cursor no campo NúmeroDoPedido. Os comandos do VBA são divididos. Todo comando em VBA deve seguir algumas regras de sintaxe.sempre. Mês. Esta função receberá um valor numérico entre 1 e 12 e irá retornar o nome do mês correspondente. struturas de controle e operadores para a realização de testes condicionais.utilizar a função em inglês. função ou módulo do VBA é uma seqüência de comandos que são executados para a realização de uma ou mais tarefas. Os erros de sintaxe são os mais fáceis de serem identificados e corrigidos.para armazenar mas em uma variável x. Dia(). uma função chamada MêsPorExtenso. Quando um procedimento ou função é definido e armazenado em um módulo.

. Estes objetos podem ser acessados através de programação.OpenRecordset("Pedidos") numreg = rs. por exemplo. utilizados no exemplo anterior. Vamos estudar em detalhes. alguns comandos do VBA que utilizam um objeto do tipo RecordSet para descobrir o número de registros da tabela Pedidos: Dim db As DAO. Agora. gravado na máquina local.RecordCount MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg Quando o Microsoft Access executa estes comandos é emitida a seguinte mensagem: Importante: Não se preocupe em entender os comandos utilizados no exemplo anterior. Podemos utilizar os métodos dos objetos para realizar determinadas ações sobre o objeto e suas propriedades para obter informações sobre suas características.dbf).Recordset Dim numreg As Integer Set db = CurrentDb() Set rs = db. Cada aplicativo do Microsoft Office disponibiliza uma hierarquia de objetos bem definida. Esta hierarquia de objetos é que torna o VBA tão poderoso. É graças a hierarquia de objetos do Office que. podemos acessar dados de uma planilha do Excel. Falaremos mais sobre objetos adiante. do Dbase (. uma série de objetos.Database Dim rs As DAO. de dentro de um banco de dados do Access. por exemplo. gravada em um drive de rede e combinar tais dados com dados obtidos a partir de um banco de dados . apenas a título de exemplo. inclusive os objetos Database e RecordSet.Virtual INF OR M ÁT I CA Vista Objetos da hierarquia de objetos do Microsoft Office: Um objeto é uma entidade que possui propriedades (que descrevem as características do objeto) e métodos (que descrevem os comportamentos do objeto).

dos métodos e propriedades dos objetos. uma série de objetos. Neste tópico vamos aprender 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. automaticamente. que está na pasta Semana2. Convenhamos que isso é praticamente impossível. Para conhecermos melhor o referido ambiente. Por exemplo. ao digitarmos o parênteses de abertura. . etc) de cada argumento. formulário este que não será baseado em nenhuma tabela/consulta. Criaremos. Ao criar o código veremos os principais Elementos/Vantagens do ambiente de desenvolvimento. Quando for aberto o assistente de comando vamos clicar no botão Cancelar. pois com o VBA temos acesso a milhares de objetos (é isso mesmo: milhares de objetos). Cada objeto pode ter dezenas de propriedades. com uma série de recursos que facilitam a criação de código VBA.OpenRecordset("Pedidos") numreg = rs. manualmente.Database Dim rs As DAO. Vamos estudar em detalhes. Vamos fazer o logon como usuário AdmCaxias e senha abc12345. ou seja: um formulário em branco. O ambiente de Desenvolvimento fornece uma série de facilidades enquanto estamos criando nosso código VBA. métodos e coleções.RecordCount MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg Importante: Não se preocupe em entender os comandos utilizados no exemplo anterior. uma lista com todos os métodos e propriedades deste objeto. O Microsoft Access fornece um ambiente de programação bastante poderoso. Se digitarmos um comando incorretamente. basta selecioná-los em uma lista. vamos a um exemplo prático. bem como o tipo (texto. Vamos abrir o banco de dados Nwind. Ao invés de lembrar do nome dos métodos/propriedades. teríamos que lembrar da sintaxe de todos os comandos. será exibida uma lista com os argumentos esperados pelo método. Se selecionarmos um método. Criaremos um novo formulário chamado Teste. data. Vamos adicionar um botão de comando.Recordset Dim numreg As Integer Set db = CurrentDb() Set rs = db. Estas são apenas algumas das facilidades fornecidas pelo Ambiente de Desenvolvimento do VBA.Virtual INF OR M ÁT I CA Vista O Ambiente de Programação. número. Utilizaremos o seguinte código: Dim db As DAO. utilizados no exemplo anterior.mdb. inclusive os objetos Database e RecordSet. ao digitar o nome de um objeto e um ponto será aberta. o Ambiente de Desenvolvimento emite uma mensagem e coloca em destaque o comando que foi digitado errado. código VBA associado ao evento Ao clicar do botão de comando.

Abra o banco de dados nwind. consulte os exercícios da primeira seman).) que aparece ao lado do evento Ao abrir.mdb que está na Semana2. certifique-se de que a lista de Tabelas/Colunas esteja em branco e dê um clique no botão OK. Dê um clique no botão Cancelar. Na janela "Novo Formulário" dê um clique na opção Modo estrutura. No painel da esquerda clique em Formulários.. Dê um clique no botão Novo. para fechar o assistente.. Dê um clique no botão (. dê um clique na guia Evento. Será aberto o "Assistente de botão de comando". Localize a "Caixa de Ferramentas" e adicione um controle do tipo Botão de Comando (para maiores informações sobre os controles de formulário.Virtual INF OR M ÁT I CA Vista Para criar o formulário Teste faça o seguinte: Execute Abra o Microsoft Access. inclusive o controle Botão de Comando. Clique no evento "Ao clicar". conforme indicado na figura a seguir: Será aberto um formulário em branco. Faça o logon como usuário AdmCaxias e senha abc12345. Abra as Propriedades do botão de comando e altere o seu nome para: BotaoEx. conforme indicado na figura a seguir: . Ainda com as propriedades abertas. Na lista de opções que é exibida selecione Construtor de código.

conforme indicado na figura a seguir: . Será aberto o ambiente de desenvolvimento do VBA.Virtual INF OR M ÁT I CA Vista Dê um clique no botão OK.

com o VBA temos acesso a milhares de objetos. Por exemplo. automaticamente. cada uma com centenas de objetos. de dentro do Access. de dentro de um formulário podemos exibir dados gravados em uma planilha do Excel. Aprenderemos a trabalhar com parâmetros mais adiante. REFERÊNCIAS: Conforme descrito anteriormente.. associado ao evento Ao clicar.. IMPORTANTÍSSIMO: ANTES DE COMEÇARMOS A DIGITAR O CÓDIGO PROPOSTO. VAMOS ABRIR UM PEQUENO PARÊNTESES PARA FALAR SOBRE REFERÊNCIAS. ou em um arquivo do DBase III. fazer uma REFERÊNCIA a biblioteca correspondente.Virtual INF OR M ÁT I CA Vista Para cada evento é criado um procedimento separado. O nosso código de exemplo deve ser digitado dentro dos limites do procedimento (entre as linhas Private. e End Sub). dados de uma planilha do Excel. precisamos usar os objetos adequados. somente pode ser acessado de dentro do formulário Teste. O nome do procedimento é como se fosse uma função. todos os objetos para acesso a dados do próprio Access. Ao fazer uma REFERÊNCIA a uma biblioteca. O procedimento poderia receber um ou mais parâmetros de entrada e retornar um ou mais parâmetros de saída. Os diversos objetos disponíveis são disponibilizados através de Bibliotecas de Objetos. O padrão é o nome do controle (no nosso caso é BotaoEx) seguido de um sinal de sublinhado e o nome interno do evento (para o Access o evento "Ao clicar" é reconhecido como Click). Existem dezenas de bibliotecas. precisamos. Para que possamos utilizar. por isso o abre e fecha parênteses após o nome. ou seja. a todas as bibliotecas disponíveis? . estão agrupados em um biblioteca de objetos. Você pode perguntar: Então porque não é feita referência. do controle BotaoEx. no código VBA. passamos a ter acesso a todos os objetos da biblioteca. Um procedimento é um "pedaço de código" que é executado em resposta ao evento. Para acessarmos. O nome dos procedimentos associados a eventos segue um padrão bem definido. Por exemplo. temos o seguinte procedimento: Private Sub BotaoEx_Click() End Sub A palavra Private significa que o procedimento é Privado. Por exemplo. todos os objetos para acesso ao Excel. estão agrupados em uma outra Biblioteca de objetos e assim por diante. antes. Por isso. objetos de uma determinada biblioteca. não teríamos como chamar este procedimento lá no formulário Pedios ou Clientes. O final do procedimento é indicado pelo comando: End Sub.

Localize a biblioteca "Microsoft DAO x. Aprenderemos a utilizar estes objetos. esta biblioteca durante a terceira semana de treinamento. em maiores detalhes. necessária ao nosso exemplo. pois os objetos DataBase e RecordSet que utilizaremos.Data Access Objetct. pois cada referência causa um gasto adicional de memória.x selecione a versão de maior número que você encontrar na listagem. Aqui fechamos o nosso pequeno parênteses sobre REFERÊNCIAS. Surge uma janela com todas as bibliotecas disponíveis.x Object Library". Selecione a versão disponível. conforme indicado na figura a seguir: Nota: Pode ser que a versão da biblioteca DAO instalada no seu computador seja diferente. Para o nosso exemplo temos que fazer referência a biblioteca DAO . . fazem parte desta biblioteca. Se fizéssemos referência a todas as bibliotecas disponíveis. onde para x. Dê um clique no botão OK e pronto. Utilizaremos. Essa biblioteca contém uma série de objetos para acesso a dados. intensamente. durante a terceira semana do treinamento. Para fazer referência a um biblioteca utilizamos o comando: Ferramentas -> Referências. teríamos sérios problemas de desempenho.Virtual INF OR M ÁT I CA Vista Isto não é feito. Fizemos referência a esta biblioteca. você terá feito referência a biblioteca DAO.

.Virtual INF OR M ÁT I CA Vista Vamos começar a digitar o código do nosso exemplo. é aberta uma listagem com todos os objetos disponíveis na biblioteca DAO. para que possamos observar mais algumas funcionalidades do Ambiente de Desenvolvimento.. Essa é uma regra geral: Não existe espaço entre dois nomes separados por ponto (.) e o nome do objeto. Na lista de objetos selecione Database. Selecione DAO. Você digita D e a listagem é posicionada no primeiro elemento que começa com a letra D. conforme indicado na figura a seguir: Após selecionar DAO digite um ponto. conforme indicado na próxima figura.) ou por ponto de exclamação (!).Database Observe que após digitar a palavra As e pressionar a barra de espaços é aberta uma listagem com todas as opções disponíveis. Abaixo da linha Private. É importante salientar que não pode haver espaço entre o ponto (. novamente.. digite o seguinte: Dim db As DAO.. Observe que.

Digite o restante do código. A medida que formos utilizando estes comandos iremos explicando cada um deles.OpenRecordset("Pedidos") numreg = rs.RecordCount MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS: " & numreg Observe que a medida que você vai digitando o nome dos objetos. Será aberta uma janela pedindo o nome do Formulário: Digite Teste e dê um clique no botão OK. conforme indicado na próxima figura: .Virtual INF OR M ÁT I CA Vista Esta sem dúvida é uma das maiores vantagens do Ambiente de Desenvolvimento. Agora vamos salvar o procedimento BotaoEx_Click(). Ao digitar o nome do objeto e um ponto. O Ambiente de Desenvolvimento também oferece uma série de menus e botões de comando.Recordset Dim numreg As Integer Set db = CurrentDb() Set rs = db. Essa facilidade é importantíssima. automaticamente é exibida uma lista dos métodos/propriedades disponíveis. as listas com o nome das propriedades/métodos vão sendo exibidas. Dê um clique no botão Salvar (botão com a figura do disquete). pois evita que tenhamos que decorar o nome dos métodos/propriedades que mais utilizamos. indicado a seguir: Dim rs As DAO.

No restante deste treinamento utilizaremos. Altere a legenda do botão para Exemplo de VBA! Vá para o modo Formulário. Agora vamos testar o código recém criado. o Ambiente de Desenvolvimento. Feche o formulário Teste. Feche o Microsoft Access. o Microsoft Access. ou seja. outra para validação do CNPJ e uma terceira para validação do número de processos. A medida que formos utilizando este Ambiente. O código VBA é escrito em unidades chamadas subrotinas ou funções que são armazenadas em módulos. A partir de qualquer formulário ou relatório posso "chamar" as funções contidas no módulo "Funções de Validação". Você estará de volta ao modo estrutura do formulário Teste. criamos uma única vez e utilizamos nos vários locais onde a função for necessária. em diversos momentos. A diferença básica entre função e procedimento é que a função retorna um ou mais valores e o procedimento . automaticamente. Ao criarmos código associado com um evento em um formulário ou relatório. Módulos padrão: são criados a partir da opção Módulos do banco de dados. Módulos de Classes (Class modules). posso criar um módulo padrão chamado "Funções de Validação". Por exemplo. Anatomia de um módulo VBA: Um módulo VBA é formado por uma seção de declarações e uma série de funções/procedimentos. em formulários e relatórios. Módulos de classe: Podem ser criados como Módulos padrão ou podem ser associados a um formulário ou relatório. Nesse tópico abordamos os aspectos básicos do Ambiente de Desenvolvimento. Será exibida a mensagem indicada na figura a seguir: Dê um clique no botão OK para fechar essa mensagem. Os procedimentos e funções criados neste tipo de módulo podem ser utilizados a partir de outros módulos. Os módulos do Microsoft Access podem ser de dois tipos: Módulos Padrão (Standard modules). cria um módulo associado com o formulário/relatório. Esta é uma maneira de "reaproveitar" as funções que criamos. aprenderemos sobre as demais funcionalidades do Ambiente. Dê um clique no botão Exemplo de VBA.Virtual INF OR M ÁT I CA Vista Clique no botão "x" de cima para fechar o Ambiente de Desenvolvimento. Anatomia dos Módulos do VBA. Neste módulo crio uma função para validação do CPF.

isto é.. Option Compare Database Option Explicit 'Início do procedimento 1 . Quando criamos um módulo associado a um formulário..Sub1 'Início do procedimento 2 .Sub2 . Na seção de declarações podemos declarar variáveis e outros comandos especiais que terão efeito sobre todos os componentes do módulo. as opções/variáveis 'desta seção são acessíveis em qualquer parte do módulo.Subn Obs.: As linhas que iniciam com um apóstrofe são linhas de comentário. sem retornar valores. ' ANATOMIA DE UM MÓDULO DO VBA. Comandon do Sub1 End Sub 'Final do procedimento 1 .. Na próxima página temos um exemplo de uma estrutura genérica de um módulo. é criado um novo procedimento no modo associado ao formulário.Sub2 rivate Sub Sub2() Comando1 do Sub2 Comando2 do Sub2 . não serão executadas pelo Microsoft Access..Virtual INF OR M ÁT I CA Vista simplesmente executa uma série de comandos. 'Seção de declarações. Comandon do Sub2 End Sub 'Final do procedimento 2 . 'Início do procedimento n ..Sub1 Private Sub Sub1() Comando1 do Sub1 Comando2 do Sub1 .Subn Private Sub Subn() Comando1 do Subn Comando2 do Subn .. Comandon do Subn End Sub 'Final do procedimento n ... O uso de comentários é uma forma de . Cada vez que criamos código em resposta a um evento. temos uma série de procedimentos.

o código do Exemplo. conforem exemplificado abaixo: Dim x Dim nome Dim teste Neste caso estamos apenas declarando o nome da variável. com um único comando Dim. Para isto. Para maiores informações sobre como criar código associado ao evento Ao clicar de um botão. Como o valor armazenado pode variar. de tal forma que o código fique mais claro e de fácil compreensão. Se não declararmos o tipo. Fazemos referência a este espaço utilizando nomes.Virtual INF OR M ÁT I CA Vista fazer a documentação do código VBA. criaremos um novo botão de comando e atribuiremos. sem declarar de que tipo (texto. data. No VBA. vamos utilizar o formulário Teste. Principais comandos do VBA Tipos de dados Declaração e “tipo” de variável: Uma variável é um espaço na memória do computador. conforme descrito anteriormente. Neste caso o 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. conforme exemplificado abaixo: . etc) é a variável. ao evento Ao clicar do botão. porém isso é altamente desaconselhável. Para cada comando que será exemplificado. estas estruturas são chamadas de variáveis. a medida que o código VBA é executado. Para declararmos uma variável. Para facilitar o estudo. utilizamos o comando Dim. o que na prática significa que a variável pode conter qualquer tipo de valor. basta separar as variáveis. ao criarmos o botão para exemplificar o uso de operadores aritméticos. o que facilita a compreensão e manutenção de nossas rotinas. Por exemplo. Agora chegou o momento de estudarmos os principais comandos do VBA. Porém é recomendável que declaremos todas as variáveis. chamaremos este botão de ExOperAritméticos. com vírgula. 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ável Também podemos declarar mais do que uma variável.inteiro. Pode parecer uma prática interessante a não declaração do tipo da variável. nomearemos o botão com um nome relacionado com o exemplo que este representa. Uma variável declarada sem tipo é considerada do tipo Variant. a variável poderá conter qualquer valor. reservado para armazenar um ou mais valores. não é obrigatório a declaração de variáveis.

temos um exemplo simples de utilização de variáveis não declaradas explicitamente. não devem aceitar caracteres de texto. Variáveis que armazenam datas.z As String Dim nome as Double Dim teste1. 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. O que define o tipo da variável é o valor que está armazenado no momento. Na Listagem 1. conforme veremos mais adiante. no momento da sua utilização. antes de ser utilizada em uma expressão. isto significa que a variável pode ser de qualquer tipo. declaradas com o comando Dim. Este erro acontece porque tentamos utilizar uma variável c. Existem funções que conversão de tipo. explicitamente. devemos utilizar o seguinte comando na seção de declaração do módulo: Option Explicit Ao colocarmos este comando na seção de declaração do módulo. teste2 As Integer IMPORTANTE: Observe que definimos o “tipo” de cada variável. explicitamente. Também podemos utilizar variáveis que não foram. declarada. será gerado um erro de compilação. como por exemplo 30/02/2001. Listagem 1 – Utilização de variáveis não declaradas. variável esta que não foi declarada. é do tipo Variant. Com isso. variáveis que armazenam valores numéricos.y. Se tentarmos utilizar uma variável não declarada. tendo sido definida a opção "Option Explicit". Para fazer com que toda variável tenha que ser. Por exemplo. estamos definindo que toda variável deve ser declarada. não devem aceitar datas inválidas. . a variável é criada na memória. obteremos a mensagem de erro indicada na próxima figura.Virtual INF OR M ÁT I CA Vista Dim x. antes de ser utilizada. na terceira semana do treinamento. O Tipo define quais dados podem ser armazenados em uma variável. Toda variável no VBScript. Falaremos mais sobre erros e o tratamento de erros.

Cada subtipo. variáveis do subtipo Integer são armazenadas de uma maneira diferente de variáveis do subtipo Long. Na Tabela a seguir temos uma descrição dos principais subtipos. identifica de que maneira os dados são armazenados em uma variável do tipo Variant Por exemplo.Virtual INF OR M ÁT I CA Vista O tipo Variant é formado de pequenas unidades. . chamadas subtipos.

337. Podemos realizar cálculos no VBA.147. Pode conter um objeto qualquer. para variáveis de texto. A variável não contém dados válidos.447.Subtipos do tipo Variant. Neste item trataremos sobre operadores aritméticos e operadores de comparação. aproximadamente.483. Fazendo cálculos com os Operadores aritméticos.648 até 2.5808 até 922. podemos utilizar operadores. Empty Null Boolean O Valor é zero para variáveis numéricas ou uma String de tamanho zero (“ “). Contém variáveis que somente podem assumir dois valores:Verdadeiro ou Falso (True ou False). na faixa de –2.5807 Valor inteiro.337.483. É um número que representa a data entre 01 de Janeiro do ano 100.685.203. na faixa de 0 até 255. temos uma descrição dos operadores que podemos utilizar: . até 31 de Dezembro de 9999 Texto de tamanho variável.147. Byte Integer Currency Long Date(Time) String Object Error Fazendo cálculos e comparações com o VBScript – Operadores. Na Tabela a seguir. Valor inteiro.447. utilizamos operadores aritméticos.203. Valor inteiro.685. 2 bilhões de caracteres. na faixa de -32768 até 32767. pode conter. Valores na faixa de –923.647.Virtual INF OR M ÁT I CA Vista Tabela . ou um Objeto COM+ Pode conter um número de erro. como um Controle Activex. Para realizarmos cálculos e comparações entre variáveis.

. Abra o banco de dados nwind. elevado na potência Y Retona o resto de uma divisão de 2 números Exponenciação ^ Modulo mod Execute Vamos abrir o formulário Teste. Vamos criar um procedimento associado a esse botão. do banco de dados Nwind. onde exemplificamos o uso dos diversos operadores aritméticos. Associe o seguinte código ao evento Ao abrir. modul As Double a=25 b=3 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. Divide o valor de duas ou mais variáveis Retona a parte inteira.Operadores Aritméticos do VBA Adição + Subtração Multiplicação * Divisão Inteiro / \ x^y Soma valor de duas ou mais variáveis Subtração entre duas ou mais variáveis Multiplica os valores de duas ou mais variáveis.mdb e criar um botão chamado ExOperadores. intdivs. Crie um botão de comando com o nome de ExOperadores. deste botão de comando: Dim a As Integer Dim b As Integer Dim som.mdb que está na pastaSemana2. divis. subtr.Virtual INF OR M ÁT I CA Vista TABELA . o formulário Teste. da divisão entre dois números É o valor do número x. mult. no mode estrutura. expo. Abra.

Será exibida a seguinte mensagem: Dê um clique no botão OK.Virtual INF OR M ÁT I CA Vista MsgBox "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. 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: . Será exibida a seguinte mensagem: Dê um clique no botão OK. Salve o Formulário.

primeiro é exibido o texto: "Os números são:". merece alguns comentários. e finalmente utilizamos a função Chr(13). Este número.Virtual INF OR M ÁT I CA Vista Dê um clique no botão OK. Observe que as duas partes são concatenadas com o operador &. Será exibida a seguinte mensagem: Dê um clique no botão OK. para realizar uma série de operações com os valores atribuídos às variáveis “a” e “b”. Este operador permite que as diversas partes sejam exibidas como uma única mensagem. Iremos utilizá-lo nos próximos exemplos. logo em seguida o valor da variável a. Neste exemplo utilizamos os operadores aritméticos. e assim por diante. depois mais texto. na mesma linha. utilizamos o Chr(13). para simular um <ENTER>. envia o caracter correspondente ao número digitado entre parênteses. devemos utilizar o operador de concatenação &. Considere o exemplo da seguinte linha de código: MsgBox "Os números são: " & a & " e " & b & Chr(13) Neste exemplo. cada caracter possui um número associado. é associado ao <ENTER>. Mantenha este formulário carregado. Depois utilizamos a função MsgBox. chamada de Janela Pop-Up. Quando temos que exibir diversos componentes. Com isso. para a caixa de mensagem. Você estará de volta ao formulário Teste. Com isso estamos enviando um <ENTER>. No caso o número 13. é o número do caracter no padrão ASCII (American Standard Caracter Interchange Information). o que equivale a uma troca de linha. de tal maneira que os dados não saiam todos “emendados”. O uso da função MsgBox. . A função Chr(número). Podemos exibir texto e também valores de variáveis. para exibir os resultados obtidos. Primeiro. em seguida o valor de uma variável. No código ASCII. para exibir mensagens em uma pequena janela. como um pouco de texto. utilizamos a função MsgBox. Depois concatenamos o valor da variável b.

Virtual INF OR M ÁT I CA Vista Com o uso de operadores. Note que utilizamos o operador de comparação “maior do que: >”. 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 .. caso contrário. a estrutura If Then Else. é bastante simples. executamos os comandos após o Else. vamos apresentar uma das estruturas de controle mais simples que existem no VBA. a estrutura If Then Else.. . a execução do código VBA pode seguir caminhos diferentes. Com base no resultado da comparação – Verdadeiro ou Falso -. Comando n Else ‘ Comandos a serem executados quando x for menor ou igual a y Comando 1 Comando 2 . Em determinadas situações. existe a necessidade de efetuarmos comparações entre os valores de duas ou mais variáveis ou expressões. Fazemos um teste no início da estrutura. Comando n End If Conforme podemos ver. nas estruturas de controle do código. Para que possamos estudar os operadores de comparação. Comparando valores com os Operadores de comparação... estamos testando se x é maior do que y. também conhecidas como laços de controle. podemos realizar uma série de operações sobre as variáveis existentes no Script. Se o valor do teste for verdadeiro. no caso x>y. executamos os comandos na seqüência. Normalmente utilizamos comparações.

Operadores de comparação do VBA.. quantos forem necessários.Virtual INF OR M ÁT I CA Vista Podemos 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 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. Tabela . Na Tabela a seguir temos uma descrição dos operadores de comparação... Comando n ElseIf x=y Then ‘ Comandos a serem executados quando x for igual a y Comando 1 Comando 2 .. Operador Igualdade Diferente Maior que Menor que Maior ou igual a Menor ou igual a Símbolo = <> > < >= <= Descrição É igual a É diferente de É maior do que É menor do que É maior ou igual a É menor ou igual a .

Vamos criar um procedimento associado a esse botão.z." 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. Vá para o modo estrutura do formulário Teste.k As Integer x=12 y=15 z=20 k=15 If x<y Then MsgBox "x é menor do que y. Salve o Formulário.mdb e criar um botão chamado ExOperadoresComparação.y. Será exibida a seguinte mensagem: . onde exemplificamos o uso dos diversos operadores de comparação do VBA. deste botão de comando: Dim x. Crie um botão de comando com o nome de ExOperadoresComparação. Associe o seguinte código ao evento Ao abrir." Else MsgBox "x é maior do que y. Vá para o modo Formulário e dê um clique no botão "ExOperadoresAritméticos".Virtual INF OR M ÁT I CA Vista Execute Vamos ir para o modo Estrutura do formulário Teste. do banco de dados Nwind.

O uso de Operadores de comparação. Devemos ter alguns cuidados quando comparamos variáveis que possuem valores de tipos diferentes. quando comparamos variáveis com valores de tipos diferentes. Será exibida a seguinte mensagem: Dê um clique no botão OK. . como por exemplo. número e texto. A Tabela a seguir descreve o que acontece. Será exibida a seguinte mensagem: Dê um clique no botão OK. Você estará de volta ao formulário teste. amplia o leque de possibilidades para nossos programas em VBA. Será exibida a seguinte mensagem: Dê um clique no botão OK.Virtual INF OR M ÁT I CA Vista Dê um clique no botão OK. Mantenha-o aberto para os próximos exemplos.

na criação de códigos com o VBA. onde a ela foi declarada. O Escopo das variáveis. ampliamos bastante o leque de opções. Em VBA. Uma variável declarada em nível de procedimento. No próximo item. podemos ter os seguintes escopos para as variáveis: Escopo de Módulo: Uma variável declarada dentro do Múdulo.São as variáveis declaradas na seção de Declarações do Módulo. Escopo de procedimento: A variável somente pode ser utilizada. existe enquanto o procedimento estiver sendo executado. O escopo de uma variável. no VBA.Virtual INF OR M ÁT I CA Vista Com a utilização dos operadores aritméticos e de comparação. Se tentarmos utilizar a variável fora do procedimento. Uma variável declarada em nível de Módulo. poderá ser utilizada em todos os procedimentos/funções do módulo. dentro do procedimento onde esta é declarada. . caso exista algum. mas fora de qualquer Procedimento. veremos alguns detalhes sobre “Escopo” de variáveis. define em que partes do código a variável pode ser utilizada. inclusive dentro dos Procedimentos. Com isso a variável pode ser utilizada dentro de todo o bloco de código do Módulo. existe enquanto o Módulo estiver sendo executado. não teremos acesso a ela. Uma variável declarada em nível de Módulo.

Associe o seguinte código ao evento Ao abrir. Este procedimento deve ser definido no mesmo módulo.Virtual INF OR M ÁT I CA Vista NOTA= Um procedimento é um bloco de código que pode ser chamado em qualquer ponto do Módulo. Vamos criar um procedimento associado a esse botão. Exemplo: Vamos ir para o modo Estrutura do formulário Teste. Execute Abra o banco de dados nwind. uma vez que os valores de a e b ' não estão disponíveis. Vá para a seção de Declarações e declare as seguintes variávies: . Faça o logon como usuário AdmCaxias e senha abc12345.mdb e criar um botão chamado ExEscopo. deste botão de comando: Dim a. Crie um botão de comando com o nome de ExEscopo. do banco de dados Nwind. a execução é deslocada para dentro do procedimento. caso contrário um erro será gerado. Veremos maiores detalhes sobre procedimentos e funções.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. Após concluído o procedimento. Vamos a um exemplo prático. Vá para o modo estrutura do formulário Teste. Ao chamarmos um procedimento. para entendermos melhor este conceito de escopo de uma variável. a execução segue com a linha seguinte à que chamou o procedimento. mais adiante. executa os comandos deste procedimento e após encerrar continua a execução a partir do comando seguinte ao comando Call. onde exemplificamos o conceito de escopo de variáveis.mdb que está na pasta Semana2. Ao encontrar esse comando o Access desloca a execução para o procedimento proc1. fora do procedimento proc1 Aux1 = a + b MsgBox "aux1= " & Aux1 O comando Call faz o chamado ao procedimento proc1.

Sub proc1() Dim a. 'Dentro deste procedimento. Será exibida a janela indicada na figura a seguir: . 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. rapidamente para a seção de Declarações. b a=5 b=7 MsgBox "x= " & x & " y= " & y & " a= " & a & " b= " & b End Sub Feche o Ambiente de Desenvolvimento. 'Estas variáveis somente serão visíveis. Agora vamos criar o procedimento proc1. Vá para o modo formulário. Nesta lista selecione a opção (Geral).Virtual INF OR M ÁT I CA Vista Dim x. procedimento este que é chamado no evento ao clicar do botão ExEscopo.aux1 As Integer Para deslocar-se. Será exibida a janela indicada na Figura a seguir: Dê um clique no botão OK. y. utilize a lista indicada na figura a seguir. Dê um clique no botão ExEscopo.

Estruturas para controle de fluxo em VBScript. é uma das estruturas de decisão mais conhecidas.. um ou mais comandos podem ser executados. Then A estrutura If. após a execução do procedimento ter sido encerrada. Neste item.. São estruturas que realizam um teste lógico. No VBScript.Virtual INF OR M ÁT I CA Vista Observe que o valor da variável aux1 (foi calculado incorretamente). Estruturas de decisão Em um primeiro grupo. temos diversas “estruturas” que permitem um controle bastante eficaz do fluxo de execução. A forma geral desta estrutura é a seguinte: If condição Then Comando1 Comando2 . caso uma condição seja verdadeira. Agora passaremos a analisar as estruturas de decisão. No próximo item. o conceito de escopo (algumas vezes chamado de visibilidade) das variáveis. Uma condição é testada. Vá para o modo Estrutura do formulário Teste. Dê um clique no botão OK. foi possível verificar. Considere o exemplo a seguir: . Como as variáveis a e b foram declaradas dentro do procedimento proc1.. aplicadas na solução de problemas reais. quando o teste resultar falso. A estrutura If .. É utilizada para executar determinados comandos. na prática.. temos as chamadas estruturas de decisão. ou um conjunto diferente de comandos. pois a variável aux1 depende dos valores de "a" e "b". precisamos poder controlar o fluxo de execução de um script. estaremos estudando diversas destas estruturas. ou seja. Comandon End IF.. que são elementos muito importantes na criação de scripts. disponíveis no VBA. Com esse exemplo. Toda linguagem de programação implementa esta estrutura. caso a condição seja verdadeira. trataremos das Estruturas e laços de controle. Para que possamos criar aplicações com utilidade prática. Mantenha o formulário Teste aberto. elas não podem ser acessadas de fora do procedimento proc1.Then. e executam determinados comandos quando o teste resultar verdadeiro.

Considere o exemplo a seguir: Dim x. será exibida. um comando. Then.. caso a condição seja falsa.ElseIf.Then... É utilizada para executar determinados comandos. será executado. ou conjunto de comandos será executado. conforme podemos constatar pelos valores atribuídos as variáveis x e y. conforme podemos constatar pelos valores atribuídos as variáveis x e y. acrescenta mais uma possibilidade a estrutura If... será exibida...Then.. Then..... ou conjunto de comandos diferentes. uma vez que o teste x<y é verdadeiro. y x=10 y=15 If x<y Then MsgBox “x é menor do que y” End If Neste exemplo.. A forma geral desta estrutura é a seguinte: If condição Then Comando1 Comando2 . Comandon Else Comando1 Comando2 .. caso a condição seja falsa. uma vez que o teste x<y é falso.. a mensagem “x é menor do que y”.Else.. um determinado comando. caso a condição seja verdadeira.Virtual INF OR M ÁT I CA Vista Dim x.... A estrutura If . 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”. caso uma condição seja verdadeira. ou um conjunto diferente de comandos.. Comandon End IF Uma condição é testada. A estrutura If .Else .Else A estrutura If.

Comandon ElseIf condição-2 Comandos a serem executados. Caso a segunda condição seja verdadeira..Virtual INF OR M ÁT I CA Vista A estrutura If. nos dá uma poder maior..... Uma condição é testada. Comandon . para testarmos diversas possibilidades. ou conjunto de comandos será executado.ElseIf. A forma geral desta estrutura é a seguinte: If condição Then Comandos a serem executados. caso a condição seja falsa. ou conjunto de comandos será executado. É utilizada quando precisamos realizar mais do que um teste lógico. podemos fazer um segundo teste (condição-2). Caso nenhuma das condições seja verdadeira. Comandon Else Comandos a serem executados.. caso a condição2 seja verdadeira. Comando1 Comando2 . Neste caso.. os comandos após a cláusula Else. Comandon End IF. Comandon ElseIf condição-3 Comandos a serem executados.. Comando1 Comando2 .. a assim por diante. caso nenhuma das condições anteriores seja verdadeira. caso a condição n seja verdadeira.. . para cada novo teste que se faça necessário..Then. um determinado comando. serão executados. Comando1 Comando2 . Comando1 Comando2 . ElseIf condição-n Comandos a serem executados. caso a condição seja verdadeira... para n condições. utilizamos um ElseIf. caso a condição seja verdadeira.. caso a condição3 seja verdadeira. um determinado comando. Comando1 Comando2 ...

. Em resumo.. seguindo a execução para o primeiro comando. que faz parte do Else.Case. serão executados e o laço será encerrado. uma vez que todos os testes anteriores falham (pois x é o maior número).. Quando o teste de um dos ElseIf for verdadeiro. k Dim w. a mensagem “x é maior dos números”. é bastante intuitivo.Case Quando precisamos realizar uma série de testes. os comandos relacionados serão executados..ElseIf.. Mas o que acontece. y Dim z. O funcionamento da estrutura Select. será exibida. os comandos abaixo do ElseIf verdadeiro...Case.. é mais eficiente utilizarmos uma única estrutura Select. A estrutura Select..Then.. quando um dos ElseIf apresentar um teste verdadeiros. 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 If Neste exemplo. com isso somente será executado o último MsgBox. . e os demais não serão avaliados. após o End If. quando um dos ElseIf é verdadeiro ? Os teste vão sendo feitos. do que utilizarmos uma série de testes utilizando a estrutura If.Virtual INF OR M ÁT I CA Vista Considere o exemplo a seguir: Dim x.

será executado. No nosso exemplo. Utilizamos o laço For. O comando abaixo do Case Else somente será executado. para repetir um segmento de código. quando já sabemos o número de vezes que uma determinada seção de código deve ser repetida. Neste tipo de estrutura.. o valor de x está sendo testado. Por exemplo. Em determinadas situações. até que o último registro seja alcançado. ou até que uma determinada condição torne-se verdadeira ou falsa. menor do que 12 ” End Select A estrutura Select Case x. O Formato geral desta estrutura é o seguinte: . Em cada um dos Case. normalmente. O uso da estrutura Select. utilizamos uma variável como contador. um número determinado de vezes. Quando for encontrado um valor coincidente com o de x. Para isso.Next.. Este contador varia de um valor inicial até um valor final. Utilizamos esta estrutura. se todos os testes anteriores falharem. Estruturas de repetição.. o comando MsgBox “X vale 10 !”. os comandos abaixo deste Case serão executados.Virtual INF OR M ÁT I CA Vista 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. vai testar o valor de x... utilizamos as chamadas estruturas de repetição. um número específico de vezes. A estrutura For. estaremos analisando as estruturas de repetição disponíveis. abaixo de Case 10. A partir de agora.Next. torna o código mais eficiente e de mais fácil leitura. ou Laços..Case. pode ser que haja a necessidade de percorrer todos os registros de uma determinada tabela. precisamos repetir um ou mais comandos.

Caso não seja definido o incremento. Poderíamos utilizar um valor de incremento diferente de 1. a variável contador é incrementada pelo valor definido em incremento. a variável i inicia com o valor 1. Em cada passagem do laço.. o valor de i é acrescentado à variável Soma.Next. para.. obter a 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 . será utilizado o padrão 1.. Comandon Next No início a variável contador tem o valor definido para um determinado valor. Com isso. Em cada passo. 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 = “ & Soma Neste exemplo. ao final do laço For. a variável Soma..Virtual INF OR M ÁT I CA Vista For contador=inicio to fim incremento Comando1 Comando2 . será utilizado o padrão que é 1. por exemplo. Como o incremento não foi definido. terá armazenado o valor da soma dos 10 primeiros números inteiros.

O formato geral. A estrutura Do While Condição.Loop.. o laço não será executado nenhuma vez.. estamos utilizando o operador condicional While. se a condição for falsa já na primeira vez. Com isso temos quatro situações distintas. a partir de agora. Podemos utilizar dois operadores condicionais diferentes: While ou Until. é uma causa comum de erros e travamentos. pois caso contrário a condição será sempre verdadeira. podem ser utilizados de duas maneiras diferentes: No início do laço. o primeiro comando após o final do laço. e os comandos dentro do laço ficarão em execução.Virtual INF OR M ÁT I CA Vista Com este Script. obtemos o resultado indicado na Figura a seguir: A estrutura Do. neste caso é o seguinte: Do While condição/teste Comando1 Comando2 . ou no final do laço. vamos analisar cada uma delas. Os operadores While ou Until. ou até que uma determinada condição torne-se verdadeira.. quando for necessário. Comandon Loop Nesta estrutura. Neste caso. no início do laço.. infinitamente.. devido a erros de programação. Esta estrutura pode ser utilizada para repetir um trecho de código.Loop. enquanto a condição for verdadeira. ou até o programa travar. enquanto uma determinada condição for verdadeira. o código dentro do laço é executado. . A criação de laços infinitos.. Quando a condição tornar-se falsa. Neste caso. será executado. IMPORTANTE= O Código dentro do laço deve ser capaz de alterar a condição para Falso.

. neste caso é o seguinte: Do Comando1 Comando2 .. e os comandos dentro do laço ficarão em execução. e o laço é encerrado. será executado. Com o teste no final do laço. Neste caso. deslocamos o teste de condição para o final do laço. o código dentro do laço. e continuará sendo executado.. o código dentro do laço é executado. IMPORTANTE= O Código dentro do laço deve ser capaz de alterar a condição para Falso. vamos Incrementando o valor da variável Contador. devido a erros de programação. O formato geral. será executado. atingir 11. o laço será executado uma única vez. o primeiro comando após o final do laço. Quando a condição tornar-se falsa. é uma causa comum de erros e travamentos. infinitamente. A criação de laços infinitos. Comandon Loop While condição/teste Nesta estrutura. o teste do início do laço torna-se falso. pois o teste somente é feito no final. Com isso. quando o valor de Contador.Virtual INF OR M ÁT I CA Vista 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 = “ & Soma Observe que dentro do laço. . quando for necessário. pois caso contrário a condição será sempre verdadeira. uma unidade para cada passagem do laço. Neste caso. enquanto a condição for verdadeira. se a condição for falsa já na primeira vez. enquanto a condição for verdadeira. A estrutura Do.. pelo menos uma vez. ou até o programa travar. Loop While Condição.

Virtual
INF OR M ÁT I CA

Vista

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 = “ & Soma

Qual o valor será exibido para a variável Soma ?

Muito simples. A condição Contador < x é falsa, pois x=10 e Contador=12 (Lembre que o Contador foi incrementado de uma unidade dentro do laço, antes do teste ser realizado). Neste caso, o laço será executado uma única vez, pois o teste de condição está no final do laço. Quando o laço é executado, é atribuido o valor 11 para a variável Soma. Com isso, o valor exibido para a variável Soma, será 11.

Virtual
INF OR M ÁT I CA

Vista

A estrutura Do Until Condição...Loop.

Neste caso, estamos utilizando o operador condicional Until, no início do laço. O formato geral, neste caso é o seguinte:
Do Until condição Comando1 Comando2 ... Comandon Loop

Nesta 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ço não será executado nenhuma vez. IMPORTANTE= O Código dentro do laço deve ser capaz de tornar a condição Verdadeira, quando for necessário, pois caso contrário a condição será sempre Falsa, 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. 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 = “ & Soma

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

Virtual
INF OR M ÁT I CA

Vista

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ção

Nesta 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ço será executado uma única vez. IMPORTANTE= O Código dentro do laço deve ser capaz de tornar a condição Verdadeira, quando for necessário, pois caso contrário a condição será sempre Falsa, 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. 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

. o valor exibido para a variável Soma. na primeira passagem do laço). O valor do segundo campo deve ser maior do que o valor do primeiro campo. O sistema deve fazer essa verificação. Do Soma = Soma + Contador Contador = Contador + 1 Loop Until Contador >= x MsgBox “Valor da Soma = “ & Soma Qual o valor será exibido para a variável Soma ? Muito simples. Considere o exemplo a seguir: Dim x x=10 Contador=11 Soma=0 ‘ O laço será executado uma única vez. A condição Contador>= x é falsa. pois a condição ‘ Contador >= x é verdadeira.Virtual INF OR M ÁT I CA Vista Vamos modificar um pouco o nosso exemplo. Deve haver um grupo com dois botões de rádio. O usuário digita um valor no primeiro campo e outro valor no segundo campo. na linha 11. Neste caso. Quando o laço é executado. pois x=10 e Contador=12 (Lembre que o Contador foi incrementado de uma unidade. é atribuido o valor 11 para a variável Soma. Um associado ao valor (Pares) e outro associado ao valor (Ímpares). O sistema calcula a soma dos números pares ou ímpares (de acordo com a seleção do usuário). pois o teste de condição está no final do laço. será 11. Com isso. Exercício: Crie um formulário onde são adicionados dois campos para digitação de valores inteiros. dentro do intervalo definido pelos valores digitados pelo usuário. o laço será executado uma única vez. O usuário marca uma destas opções e clica no botão Calcular. Adicione um botão chamado Calcular.

um Array é um conjunto. bem como a converter valores de um tipo para outro. Determinando o Tipo de Dados contido em uma variável. A função IsArray. De uma forma simples. Um Array é um tipo especial de variável. Na seqüência. principalmente quando criamos código que efetua cálculos. como por exemplo o cálculo do imposto em um volume de dados do contribuinte. São funções que fazem parte do Microsoft Access. Este tópico é de grande importância. procedimentos e eventos com VBScript. Cada valor armazenado no Array é um elemento do conjunto. texto em um campo que deve conter valores numéricos. Iniciaremos falando um pouco mais sobre tipos de dados e funções para conversão de tipos. e quando utilizar uma ao invés da outra. Um outro exemplo: Poderíamos criar um Array para armazenar os nomes dos meses do ano. a qual pode armazenar diversos valores em uma única variável. não apresentam problemas. Aprenderemos as diferenças entre uma Sub-rotina e uma função. aprenderemos a determinar qual o tipo de dado que está armazenado em uma variável.Virtual INF OR M ÁT I CA Vista Funções. podemos utilizar uma função para determinar se os valores digitados pelo usuário. Por exemplo. como por exemplo a função Date(). Depois passaremos a analisar uma série de funções internas do VBA. o usuário pode ter digitado. aprenderemos a criar nossas próprias funções e Sub-rotinas. Com isso teríamos um Array de 12 elementos. veremos uma série de aspectos que vão além do básico do VBA. Tipos de dados e funções para conversão de tipos. válidos. Neste item. ao digitar dados em um formulário. Por exemplo. Introdução Neste tópico. que permitem que seja determinado o tipo de valor contido em uma variável. Existem diversas funções. poderíamos ter uma variável Array na qual são armazenados todos os códigos de tributo. . utilizando as funções para conversão de tipos. Existem diversas aplicações para este tipo de função. Por exemplo. que retorna a data do sistema. por engano.

até o elemento 20.. isto é. Dim Dias(6) 'Atribuímos valores para os dias da semana Dias(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. ao evento Ao clicar deste botão. O índice inicia em zero e não em um. Para declarar um Array chamado produtos. crie um botão chamado ExArray e associe o código deste exemplo. O fato do índice começar com 0. teremos o elemento 0.. 'Indicamos o tamanho como 6. . o elemento 2. indicado por produtos(19).Virtual INF OR M ÁT I CA Vista Cada elemento de um Array. For i=0 to 6 mensagem = mensagem & "Dia: " & i+1 & " " & Dias(i)& Chr(13) Next 'Utilizamos uma MsgBox. influencia na hora que formos declarar um Array. o elemento 1. é acessado através do nome da variável Array e de um índice. o que significa 'da posição 0 até a posição 6 = 7 elementos. temos um exemplo simples de utilização de Array: 'Declara um Array de 7 posições 'Como a primeira posição é a posição zero. MsgBox mensagem Exercício: Abra o formulário Teste no modo Estrutura. No exemplo a seguir. Por isso se tivermos um Array de 10 elementos. 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 que aparece na declaração). com o conteúdo 'Do Array Dias. com 20 elementos. Teste o funcionamento do código. para exibir a mensagem 'com o conteúdo do Array Dias. até o elemento 9.Next 'Para criar uma String. e assim por diante. do elemento 0. indicado por produtos(0).

está armazenando um Array. são do tipo Variant). Utilizamos a seguinte sintaxe: IsArray(NomeDaVariável) A função IsArray retorna verdadeiro se a variável for um Array. 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. . Como todas as variáveis são do tipo Variant. Vamos alterar um pouco o exemplo anterior. ao final da listagem. Podemos utilizar a função VarType.: MsgBox IsArray(Dias) o resultado seria o indicado na Figura a seguir: A função VarType.Virtual INF OR M ÁT I CA Vista Utilizamos a função IsArray. e falso caso contrário. para determinar se uma variável do tipo Variant (lembre que todas as variáveis do VBA. o nome de uma variável ou expressão. A função retorna um número inteiro que indica o subtipo da variável. adicionando o seguinte comando. o subtipo pode ser utilizado para determinar o tipo de dado armazenado na variável. Passamos para a função. para determinar o subtipo de uma variável.

y. 17 Byte 8192 Array No exemplo a seguir.Virtual INF OR M ÁT I CA Vista Tabela . obteremos o resultado indicado na Figura a seguir: . para capturar a data do sistema. b=Date() mensagem mensagem mensagem mensagem mensagem mensagem = "Tipo da variável x: " & Vartype(x) & Chr(13) = mensagem & "Tipo da variável y: " & Vartype(y) & Chr(13) = mensagem & "Tipo da variável z: " & Vartype(z) & Chr(13) = mensagem & "Tipo da variável a: " & Vartype(a) & Chr(13) = mensagem & "Tipo da variável b: " & Vartype(b) & Chr(13) = mensagem & "Tipo da variável c: " & Vartype(c) & Chr(13) MsgBox mensagem Ao executar este exemplo. 7 Data 8 Texto 9 Objeto de automação 10 Erro 11 Boleano 12 Variant (somente é utilizado com Arrays de variantes) 13 Um objeto para acesso a dados.z Dim a. Valor Descrição 0 Vazio (não inicializado) 1 Nulo (dados não válidos) 2 Inteiro 3 Inteiro longo 4 Número de precisão simples 5 Número de precisão dupla 6 Monetário.Valores de retorno da função VarType. temos um exemplo de utilização da função VarType. b Dim c(20) Dim mensagem As String x=12 y=23. Dim x.456 y=123456789 a="Este é um valor de texto !" ‘Utilizamos a função Date( ).

a qual declarou a variável c como sendo um Array. indicando que a variável c é um Array. o qual retornou 0. para armazenar a data do sistema. Isto significa que a variável z está vazia. uma vez que usamos a função Date() .Virtual INF OR M ÁT I CA Vista Observe. indicando que o valor armazenado nesta variável é do tipo Data. Este resultado está coerente com a Tabela anterior. . Teste o funcionamento do código. na variável b. Também podemos salientar o retorno para a variável b. ou seja. Exercício: Abra o formulário Teste no modo Estrutura. principalmente. o qual retornou 7. Este resultado está coerente com a Tabela anterior. o que também está coerente com a Tabela anterior. dentre as quais podemos destacar a validação dos dados digitados em um formulário. Finalmente observe o valor de retorno para a variável c. não foi inicializado. crie um botão chamado ExVarType e associe o código deste exemplo. no tipo da variável z. Muitas são as aplicações práticas para a função VarType. e com a declaração: Dim c(20). o qual retornou 8192. ao evento Ao clicar deste botão.

onde o usuário pode digitar uma data. digite novamente !" Me![DataDeEntrada] = Null Me![DataDeEntrada]. ao evento Ao clicar deste botão. Crie um campo do tipo Caixa de Texto. e determina se a variável ou expressão é uma data válida. em um campo de um formulário.Virtual INF OR M ÁT I CA Vista A função IsDate. Teste o funcionamento do código. por exemplo. If IsDate(Me![DataDeEntrada]) Then MsgBox "Você digitou uma data válida !" Else MsgBox "Data inválida. a função retorna Verdadeiro. retorna Falso. .SetFocus End If Exercício: Abra o formulário Teste no modo Estrutura. para verificar se o usuário digitou uma data válida. Caso o argumento passado seja uma data válida. ou pode ser convertida para uma data válida. Nomeie este campo como DataDeEntrada. crie um botão chamado ExIsDate e associe o código deste exemplo. A função IsDate recebe uma variável ou expressão como argumento. Podemos utilizar esta função. 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. caso contrário.

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. não foi deixado em branco. b. e determina se. por exemplo. retorna Falso. A função IsEmpty recebe uma variável ou expressão como argumento. foi atribuído algum valor para a variável ou expressão. que nunca Será utilizada no nosso Script Dim a.Virtual INF OR M ÁT I CA Vista A função IsEmpty. caso contrário. Vamos declarar uma variável x. Caso tenha sido atribuído algum valor. A função IsNull. c Dim x a=10 b=23 c=a+b If IsEmpty(x) Then MsgBox "A variável x. em algum momento. não foi utilizada !" End If A variável x foi declarada porém não foi inicializada. como por exemplo o nome. logo a função IsEmpty(x) irá retornar Verdadeiro. A função IsNull recebe uma variável ou expressão como argumento. a função retorna Verdadeiro. Para atribuirmos Null para uma variável. utilizamos a seguinte sintaxe: NomeDaVariável = Null . Podemos utilizar esta função. e determina se. para verificar se um campo de digitação obrigatória. em algum momento. caso contrário. foi atribuído o valor Null para a variável ou expressão. com isso possui está vazia. Caso tenha sido atribuído o valor Null. a função retorna Verdadeiro. retorna Falso.

' Vamos declarar uma variável x. e atribuir ' Null. e determina se o valor atribuído à variável ou expressão é numérico. caso contrário. A função IsNumeric recebe uma variável ou expressão como argumento. retorna Falso. Caso o valor seja numérico.Virtual INF OR M ÁT I CA Vista IMPORTANTE: Uma variável com valor Null. porém sem nenhum 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. não é a mesma coisa que uma variável com valor zero. para a variável. a função retorna Verdadeiro. Quando é atribuído o valor Null para a variável. esta continua existindo na memória. ou pode ser convertido para numérico. 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. ou uma variável de texto com tamanho zero. A sintaxe da função IsNumeric é a seguinte: IsNumeric(NomeDaVariável) ou IsNumeric(expressão) . ou possa ser convertido.

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 mensagem Exercício: Abra o formulário Teste no modo Estrutura.Virtual INF OR M ÁT I CA Vista A seguir temos um exemplo de utilização da função IsNumeric. Observe que esta data não foi considerada um valor numérico para a função IsNumeric. A sintaxe da função IsObject é a seguinte: IsObject(NomeDaVariável) ou IsObject(expressão) . A função IsObject.z x=123 'Atribuo um valor que não pode ser convertido 'para numérico y = "Riachuelo . e determina se o valor atribuído à variável é um Objeto Activex. Teste o funcionamento do código. A função IsObject recebe uma variável como argumento. Dim x. se for um objeto Activex. Cabe salientar a utilização da função Date(). crie um botão chamado ExIsNumeric e associe o código deste exemplo. e atribuir esta data à variável z. a função retorna Verdadeiro. caso contrário. para capturar a data do sistema.y. retorna Falso. ao evento Ao clicar deste botão.

é automaticamente convertido para Verdadeiro. A função Cbool converte uma variável ou resultado de um expressão. a função Cbool retorna Falso. apresento as principais funções de conversão. Função Cbool. Já no segundo uso da função Cbool. para que possamos realizar cálculos com o mesmo. exemplificando a utilização de cada uma delas. Na seqüência. deve ser convertido para outro. Ao extrairmos cada dígito do CPF. 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. Precisaremos utilizar uma função de conversão. caso contrário será gerado um erro em tempo de execução. O argumento desta função. se tivermos um número. precisamos convertê-lo para inteiro ou double. armazenado na forma de texto. o que é comprovado pela Figura anterior. Por exemplo. foi passado o parâmetro 3 para a função. Qualquer valor diferente de zero (com exceção de texto). bem como um pequeno fragmento de código. com exceção do zero. Existem situações em que um determinado tipo de dado.Virtual INF OR M ÁT I CA Vista Funções para conversão de tipos. onde o CPF é um valor do tipo texto. para o subtipo Boolean. . a fim de que possamos efetuar os cálculos necessários. estes serão extraítos como caracteres de texto. O valor zero é sempre convertido para Falso. Neste item aprenderemos a utilizar as principais funções para conversão de tipos. a função interpreta como Verdadeiro. não pode ser Texto. Qualquer número. para convertêlos para números. como a expressão é falsa. Faremos um exemplo de cálculo do DV do CPF.

é convertido para o tipo byte. conforme indicado na Figura a seguir: . caso contrário será gerado um erro. caso contrário será gerada uma mensagem de erro. para o subtipo Byte. para o subtipo Currency. Caso o número esteja fora desta faixa. irá gerar uma mensagem de erro. deve estar na faixa aceitável para o tipo byte. Observe este linha de código: MsgBox CCur(250.3333) & chr(13) & CCur(1250.335677+324.335677+324. O argumento desta função. MsgBox CByte(100+200) Função CCur. que vai de 0 à 255. em tempo de execução.Virtual INF OR M ÁT I CA Vista Função CByte. A linha de código abaixo. A função CCur converte uma variável ou resultado de um expressão. será gerada uma mensagem de erro. e o resultado é convertido para o tipo Currency. Se passarmos um argumento de texto para a função CCur. A função CByte converte uma variável ou resultado de um expressão. pois o valor a ser convertido para byte. e o resultado (44).3333 é calculada.326582) Esta linha gera a mensagem indicada na Figura a seguir: A expressão 250. será gerado um erro de execução. está fora da faixa de 0 à 255. não pode ser Texto. não pode ser Texto. O valor a ser convertido. 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. O argumento desta função. em tempo de execução. em tempo de execução.

O argumento desta função deve estar em um formato que seja aceitável para datas. em tempo de execução. A função CDate converte uma variável ou resultado de um expressão. caso contrário será gerada uma mensagem de erro.Virtual INF OR M ÁT I CA Vista Função CDate. para o subtipo Date. 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: .

em tempo de execução. Observe este linha de código: MsgBox CDbl("4. A função CDbl converte uma variável ou resultado de um expressão. O argumento desta função não pode ser do tipo texto.940651247E-17") Esta linha gera a mensagem indicada na Figura a seguir: . caso contrário será gerada uma mensagem de erro. 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.Virtual INF OR M ÁT I CA Vista A linha de código abaixo. para o subtipo Double.

caso contrário será gerada uma mensagem de erro. Observe este linha de código: MsgBox CInt(32. Função CLng. em tempo de execução. Observe este linha de código: MsgBox CLng("3462315") Esta linha gera a mensagem indicada na Figura a seguir: .Virtual INF OR M ÁT I CA Vista Função CInt. A função CInt converte uma variável ou resultado de um expressão. em tempo de execução. em tempo de execução. para o subtipo Integer. caso contrário será gerada uma mensagem de erro.45) Esta linha gera a mensagem indicada na Figura a seguir: A linha de código abaixo. para o subtipo Long.36) & Chr(13) & CInt(20. A função CLng converte uma variável ou resultado de um expressão. caso contrário será gerada uma mensagem de erro. O argumento desta função não pode ser do tipo texto. O argumento desta função não pode ser do tipo texto. em tempo de execução. irá gerar uma mensagem de erro.35+40. O argumento também não pode estar fora da faixa admitida pelo subtipo Long.

O argumento também não pode estar fora da faixa admitida pelo subtipo Single. Observe este linha de código: MsgBox CStr("12345" & " hectares de terra") Esta linha gera a mensagem indicada na Figura a seguir: . O argumento desta função não pode ser do tipo texto. A função CStr converte uma variável ou resultado de um expressão. em tempo de execução. caso contrário será gerada uma mensagem de erro. Observe este linha de código: MsgBox CSng("3. caso contrário será gerada uma mensagem de erro. em tempo de execução.1418256927") Esta linha gera a mensagem indicada na Figura a seguir: Função CStr. para o subtipo Single.Virtual INF OR M ÁT I CA Vista Função CSng. A função CSng converte uma variável ou resultado de um expressão. para o subtipo String.

aprenderemos a utilizar as principais funções do VBA. Função Len.Virtual INF OR M ÁT I CA Vista Outras funções do VBScript – Tratamento de String. conforme a funcionalidade destas. o qual é o código ASCII. associado ao número passado como parâmetro. Considere o exemplo: Asc(“Ainda chovia”) Este exemplo de uso da função retorna o valor 65. Veremos as principais funções para tratamento de String. Funções para manipulação de Data/Hora. A função Chr(número). Trataremos das seguintes categorias: Funções para manipulação de String. Considere o exemplo: MsgBox Len(“Este é um exemplo de uso da função Len !!”) Este exemplo de uso da função. para a primeira letra de uma String. retorna 41. Neste item. recebe um número como parâmetro. Caso fosse a letra "a" minúscula. NOTA: Até agora. Funções para tratamento de String. retorna o valor numérico do código ASCII. para simular um ENTER. Função Chr. Função Asc. nas mensagens montadas com o MsgBox. o código retornado seria 97 e assim por diante. Considere o exemplo: Chr(65) Este exemplo de uso da função retorna o caracter "A" maiúsculo. e retorna o caracter ASCII. utilizamos a função Chr em diversos exemplos. Funções matemáticas. Apresentaremos as funções divididas em categorias. Utilizamos o Chr(13). para a letra A maiúscula. Datas e Funções matemáticas. A função Asc. conforme indicado na Figura a seguir: . Esta função determina o tamanho da String que foi passada como parâmetro para a função. o que faz uma quebra de linha.

O formato geral da função é o seguinte: Left(String. Considere o exemplo: MsgBox Lcase(“este é um exemplo do uso da função ucase !!”) Este exemplo de uso da função. converte o parâmetro passado. Esta função converte para MAIÚSCULAS. Esta função retorna um número especificado de caracteres. converte o parâmetro passado.Virtual INF OR M ÁT I CA Vista Função LCase. para letras minúsculas. a String que foi passada como parâmetro para a função. n) . Considere o exemplo: MsgBox Lcase(“ESTE É UM EXEMPLO DE USO DA FUNÇÃO LCASE!!”)Este exemplo de uso da função. conforme indicado na Figura a seguir: Função UCase. a String que foi passada como parâmetro para a função. É importante salientar que espaços em branco também devem ser considerados. Esta função converte para minúsculas. a partir do início (Left – Esquerda) de uma String. conforme indicado na Figura a seguir: Função Left. para letras maiúsculas.

Vamos alterar um pouco o nosso exemplo: MsgBox Left(“VistaVirtual Informática LTDA”. É importante salientar que espaços em branco também devem ser considerados. Considere o exemplo: MsgBox Left(“VistaVirtual Informática LTDA”. Considere o exemplo: MsgBox Right(“VistaVirtual Informática”. retorna as cinco primeiras letras da String passada.Virtual INF OR M ÁT I CA Vista onde n é o número de caracteres a retornar. a partir do final (Right – Direita) de uma String. Nota: Durante a primeira semana do treinamento utilizamos a função Left() (Esquerda()) em consultas e formulários. neste caso. Função Mid. . Função Right.6) Este exemplo de uso da função. retornará VistaVirtual.7) Irá retornar: VistaVirtual I Observe que o espaço em branco também é considerado.5) Este exemplo de uso da função. Nota: Durante a primeira semana do treinamento utilizamos a função Right() (Direita()) em consultas e formulários. O formato geral da função é o seguinte: Right(String. retornará “mática”. neste caso. Vamos alterar um pouco o nosso exemplo: MsgBox Right(“VistaVirtual Informática”. n) onde n é o número de caracteres a retornar. Esta função retorna um número especificado de caracteres. retorna as seis ultimas letras da String passada.10) Irá retornar: nformática Observe que o espaço em branco também é considerado.

Virtual INF OR M ÁT I CA Vista Esta função retorna um número especificado de caracteres. a partir de uma posição especificada.5) Este exemplo de uso da função. É importante salientar que espaços em branco também devem ser considerados. Função String. Esta função retorna um determinado caracter. retorna. é que podemos utilizar o valor retornado por uma função.7. irá retornar NTA MAR. dentro da String.”*”) A Figura a seguir mostra o resultado deste comando: . os quais são passados como parâmetros para a função LCase. Mid(“SANTA MARIA”.3. a partir da posição 7. como parâmetro para outra função. posicao_inicio. um número especificado de vezes. 5 caracteres. Um detalhe interessante.7)) Este exemplo retorna nta mar.3. O formato geral da função é o seguinte: String(n. Observe que o espaço em branco também é considerado. O formato geral da função é o seguinte: Mid(String. a qual converte os caracteres para minúsculos.7) . Considere o exemplo: MsgBox String(35. n) onde: posicao_inicio é a posição a partir da qual devem ser retornados caracteres n é o número de caracteres a retornar. Considere o seguinte exemplo: LCase(Mid(“SANTA MARIA”. Considere alguns exemplos: Mid(“VistaVirtual Informática”. A função Mid retira os caracteres NTA MAR. neste caso. Caracter) onde n é o número de vezes que Caractere deve ser repitido. retornará Infor.

Não precisamos passar parâmetros para esta função. Não precisamos passar parâmetros para esta função. Considere o exemplo abaixo: MsgBox “Hora do Sistema: “ & Time( ) O resultado deste comando. Retorna a data corrente do sistema.Virtual INF OR M ÁT I CA Vista Funções para tratamento de Data e Hora. está indicado na Figura a seguir: Treinamento de Access Avançado – Parte II . Considere o exemplo abaixo: MsgBox “Data do Sistema: “ & Date() O resultado deste comando. Função Date. está indicado na Figura a seguir: Função Time. Retorna a hora corrente do sistema. Veremos as principais funções para tratamento de Data e Hora.

a qual por sua vez. está indicado na Figura a seguir: A função Date( ) captura a data do sistema e passa como parâmetro para a função Month. Função Month. Não precisamos passar parâmetros para esta função. a qual por sua vez. e retorna um número entre 1 e 12. O formato geral é o seguinte: Day(data) Considere o exemplo abaixo: MsgBox “Dia do mês: “ & Day(Date( )) O resultado deste comando. Considere o exemplo abaixo: . retorna apenas o dia do mês. Retorna a hora e a data corrente do sistema. Recebe como parâmetro uma data. indicando o dia do mês. O formato geral é o seguinte: Month(data) Considere o exemplo abaixo: MsgBox “Mês do ano: “ & Month(Date( )) O resultado deste comando. retorna apenas o mês do ano Função Now. está indicado na Figura a seguir: A função Date( ) captura a data do sistema e passa como parâmetro para a função Day.Virtual INF OR M ÁT I CA Vista Função Day. indicando o mês do ano. Recebe como parâmetro uma data. e retorna um número entre 1 e 31.

e retorna um número entre 0 e 23. Se o segundo parâmetro for verdadeiro. está indicado na Figura a seguir: A função Date() captura a data do sistema e passa como parâmetro para a função Month. e assim por diante). isto é. Função Hour. O formato geral é o seguinte: MonthName(número_do_mês. Este número é passado como primeiro parâmetro para a função MonthName. o que significa que é para exibir o nome do mês por extenso. indicativo do mês do ano (1 – Janeiro. está indicado na Figura a seguir: Função MonthName. O formato geral é o seguinte: Hour(horário) Considere o exemplo abaixo: MsgBox “Hora do dia: “ & Hour(Time( )) . não abreviado. A função Month retorna o número do mês retornado pela data.Virtual INF OR M ÁT I CA Vista MsgBox “Data e Hora do Sistema: “ & Now( ) O resultado deste comando. 2 – Fevereiro. indicando o hora do dia. Recebe como parâmetro uma hora. abreviar) Considere o exemplo abaixo: MsgBox “Mês do ano: “ & MonthName(Month(Date(). O segundo parâmetro é definido em Falso. o nome do mês será exibido abreviadamente. e um segundo parâmetro que pode ser Verdadeiro ou Falso.False) O resultado deste comando. Recebe como parâmetro um número.

ou o número de meses entre duas datas. Tabela . data1.Virtual INF OR M ÁT I CA Vista O resultado deste comando. e calcular o número de horas desde o . a qual por sua vez. retorna apenas o hora do dia. vamos calcular o número de meses. está indicado na Figura a seguir: A função Time() captura a hora do sistema e passa como parâmetro para a função Hour(). Esta função pode ser utilizada para determinar o número de intervalos (em dias. data2) O parâmetro intervalo é uma String que diz que tipo de intervalo vamos calcular. Na Tabela a seguir. até 31 de Dezembro de 1999. utilizaríamos o seguinte comando MsgBox “Meses desde o descobrimento: “ & DateDiff(“m”. temos os valores possíveis para o parâmetro intervalo. semestres. A função DateDiff. pode ser conferido na Figura a seguir: Vamos modificar um pouco o nosso exemplo. Por exemplo. entre duas datas. trimestres.”31/12/1999”) O resultado deste comando. é este parâmetro que define se queremos calcular o número de dias. anos.Valores para o parâmetro intervalo. Valor Descrição yyyy Anos q Trimestres m Meses y Dias do ano (o mesmo que dias) d Dias w Semanas ww Semanas do ano (o mesmo que semanas) h Horas n Minutos s Segundos A título de exemplo. desde o descobrimento do Brasil.”22/04/1500”. etc). A sintaxe desta função é o seguinte: DateDiff(intervalo. Para isso.

data) O parâmetro intervalo é uma String que diz que tipo de intervalo vamos acrescentar. Esta função pode ser utilizada para determinar uma data futura. etc). após o descobrimento do Brasil. utilizaríamos o seguinte comando: MsgBox “Mil meses após o descobrimento foi em : “ & DateAdd(“m”. Por exemplo.”22/04/1500”) O resultado deste comando. Para isto.Virtual INF OR M ÁT I CA Vista descobrimento. podemos utilizar o seguinte comando: MsgBox “Meses desde o descobrimento: “ & DateDiff(“h”.”31/12/1999”) O resultado deste comando. o tipo de período a ser acrescentado (dias. etc. é este parâmetro que define se queremos acrescentar um número especificado de dias. pode ser conferido na Figura a seguir: A função DateAdd.1000. e o número de períodos a serem acrescentados. anos. temos os valores possíveis para o parâmetro intervalo. A sintaxe desta função é o seguinte: DateAdd(intervalo.Valores para o parâmetro intervalo. meses. Tabela . pode ser conferido na Figura a seguir: . Na Tabela a seguir. meses. Valor Descrição yyyy Anos q Trimestres m Meses y Dias do ano (o mesmo que dias) d Dias w Semanas ww Semanas do ano (o mesmo que semanas) h Horas n Minutos s Segundos A título de exemplo. número_de_intervalos. Para isso. com base em uma data fornecida. anos.”22/04/1500”. vamos calcular a data em que tivemos um período de 1000 meses.

o primeiro dia da semana será considerado Domingo.”22/04/1500”) O resultado deste comando. WeekDay(data. Recebe como parâmetros uma data. pode ser conferido na Figura a seguir: Função Year. e retorna um número indicativo do ano. e um parâmetro opcional. Recebe como parâmetro uma data. Função WeekDay. O formato geral é o seguinte: Year(data) Considere o exemplo abaixo: MsgBox “Ano atual: “ & Year(Date( )) O resultado deste comando.Virtual INF OR M ÁT I CA Vista Vamos modificar um pouco o nosso exemplo. Se este parâmetro for omitido. retorna apenas o ano.1000000. MsgBox “Um milhão de dias após o descobrimento em : “ & DateAdd(“d”. prim_dia_semana. O valor para o primeiro dia da semana é numérico: 1 – Domingo. a qual por sua vez.) Considere o exemplo abaixo: MsgBox “Dia da semana: “ & WeekDay(“31/12/1999”) . e calcular em que data teremos passado um milhão de dias após o descobrimento. está indicado na Figura a seguir: A função Date() captura a data do sistema e passa como parâmetro para a função Year. 2 – Segunda-feira. e assim por diante. que indica qual o primeiro dia da semana.

pois agora a Segunda. Função WeekDayName. o que confere com o calendário. Novamente confere com o calendário. está indicado na Figura a seguir: O valor 6. a Terça-feira o dia 2. e assim por diante. indica que foi uma Sexta-feira. está indicado na Figura a seguir: O valor 5. ficaria assim: MsgBox “Dia da semana: “ & WeekDay(“31/12/1999”. o nome do dia da semana será exibido abreviadamente.Virtual INF OR M ÁT I CA Vista O resultado deste comando.2) O resultado deste comando. está indicado na Figura a seguir: . Poderíamos determinar que o primeiro dia da semana é a Segunda. indica que foi uma Sexta-feira.feira (2 para o último parâmetro). abreviar) Considere o exemplo abaixo: MsgBox “Dia da semana: “ & WeekDayName(6.False) O resultado deste comando. Se o segundo parâmetro for verdadeiro. Com isso o nosso exemplo.feira passou a ser o dia 1. O formato geral é o seguinte: WeekDayName(número_do_dia. indicativo do dia da semana. e um segundo parâmetro que pode ser Verdadeiro ou Falso. Recebe como parâmetro um número.

Virtual INF OR M ÁT I CA Vista Funções para Cálculos matemáticos. . Veremos as principais funções para efetuar cálculos matemáticos. Na Tabela a seguir. temos a descrição das principais funções matemáticas. disponíveis no VBA.

Na Tabela a seguir temos alguns exemplos de utilização das funções matemáticas do VBA. seja necessária a realização do cálculo de depreciação. Neste item.rotinas . Retorna –1 para números negativos e 1 para números positivos. Rnd(n) Retorna um número aleatório entre 0 e 1.Virtual INF OR M ÁT I CA Vista Tabela . indicando o sinal do número n. em cada um dos pontos. O princípio por trás da criação de funções e sub. procurando os pontos onde o código está . Log(n) Retorna o logaritmo natural de um número n.rotinas. Tan(n) Retorna a tangente do número n.Alguns exemplos de utilização das funções matemáticas. O número n deve ser fornecido em radianos. pois o número é negativo Sin(0) Retorna 0 Sqr(400) Retorna 20 Tan(0) Retorna 0 Criando suas próprias funções e procedimentos. cuja tangente é o número n. aprenderemos a criar nossas próprias funções e Sub.7183).1071487177 Cos(0) 1 Exp(1) 2. Tabela . Teríamos que repassar todos os módulos de código. Abs(-2350) 2350 Atn(2) 1. do número n. depreciação contábil.14). é . dependendo do número de cálculos necessários.90775527898214 Rnd*10 Gera um número aleatório entre 0 e 10 Sgn(-235) Retorna –1. O número n deve ser fornecido em radianos. Cos(n) Retorna o coseno do número n. O número n deve ser fornecido em radianos. NOTA: Para converter graus para radianos. Função Descrição Abs(n) Retorna o valor absoluto (sem sinal). é o de reaproveitamento de código e facilidade de manutenção do programa. e fazer as alterações. Poderíamos colocar o código que faz o cálculo. Vamos supor que em diversos locais. multiplique o valor em graus por pi (3. Sgn(n) Retorna um número inteiro. Porém esta não é a melhor maneira de criarmos nossos programas. elevado no número n. Exemplo Valor de retorno. em cada local onde precisamos fazer os cálculos.rotina que faz os cálculos de depreciação. Imagine que estejamos criando uma página para cálculos financeiros. quando fosse necessário alterar a maneira de realizar os cálculos. poderíamos criar uma função ou sub. Atn(n) Retorna o valor do arco. por exemplo. Sem contar que estaríamos criando um Script bastante longo. Exp(n) Retorna o número e (logaritmo neperiano e=2. Depois. onde o mesmo seja necessário. Sin(n) Retorna o seno do número n. por exemplo. O número n deve ser fornecido em radianos Sqr(n) Retorna a Raiz quadrada do número n.Funções para cálculos matemáticos.71828182845905 Log(1000) 6. Para resolver estes problemas. Imagine. e divida o resultado por 180.

ou não. e facilita a manutenção. Com isso você torna o entendimento do código mais fácil para quem for utilizálo. extras) Comando1 Comando2 . Neste contexto. procure utilizar nomes que descrevam a função da Sub-rotina. Uma sub-rotina é um grupo de comandos que podem ser executados. não ligados a nenhum formulário/relatório. Podemos passar um ou mais argumentos para uma Sub-rotina. são tipos de procedimentos. Isto poupa esforço. declaramos uma rotina chamada Calcula_imposto. a execução desloca-se para dentro da Sub-rotina. funções e sub.. Criando e utilizando Sub-rotinas. a qual espera receber 3 parâmetros: salario.rotina é chamada. desconto e extras. Comandon End Sub Uma Sub-rotina pode.rotina). reduz o número de linhas de código. . na mesma ordem em que foram definidos. . argumenton) Comando1 Comando2 .rotinas. caso seja uma função... depois de executados todos os comandos dentro da Sub-rotina. os mesmos serão passados quando a Sub. Agora é chegada a hora de aprendermos a criar funções e sub-rotinas. para fazer os cálculos.. Estes procedimentos/funções são criados em módulos separados.rotina for chamada. argumento2. Caso sejam necessários argumentos. além de reduzir a possibilidade de erros. com o comando seguinte ao que chamou a Sub-rotina. a execução do código continua.. Quando fosse necessária a alteração da metodologia de cálculo. Quando uma sub. Quando uma destas funções/procedimentos for necessária. DICA: Quando você criar Sub-rotinas. Um procedimento é um grupo de instruções que pode ser chamado pelo nome atribuído ao procedimento. e devem ser passados. simplesmente através da chamada do nome da Sub-rotina. desconto. passar os parâmetros necessários (se for o caso) e receber os resultados retornados. A sintaxe para declaração de uma Sub-rotina é a seguinte: Sub Nome_da_Sub-rotina(argumento1. isto é.. era só alterar a função (ou sub-rotina) e pronto. conter argumentos. Comandon End Sub Neste caso. Considere o seguinte exemplo de declaração de uma Sub-rotina: Sub Calcula_imposto(salario. basta chamar a respectiva função/procedimento que o Microsoft Access se encarrega de localizar a função/procedimento.Virtual INF OR M ÁT I CA Vista só chamar a função (ou sub.. NOTA: Vamos falar um pouco mais sobre o termo Procedimento. os novos cálculos passarão a ser feitos com base na nova metodologia. Os parâmetros devem ser fornecidos nesta ordem.

Comandon End Sub ou Sub Nome_da_Sub-rotina( ) Comando1 Comando2 .125) ou Call Calcula_imposto(1500. cada vez que a exibição fosse necessária. poderíamos criar uma Sub-rotina que exibe uma Caixa de mensagem com a Data do sistema e a hora. sem nada dentro. ou utilizando a palavra Call. Também poderíamos declarar uma Sub-rotina. Uma vez criada a Sub-rotina. sem parâmetros.. . ou utilizar um par de parênteses. conforme indicado abaixo: Sub Nome_da_Sub-rotina Comando1 Comando2 . temos dois métodos de chamada da Sub-rotina Calcula_imposto: Calcula_imposto(1500. Neste caso posso simplesmente não utilizar os parênteses após o nome da Sub-rotina. no Formato indicado na Figura a seguir: Poderíamos criar todos os comandos necessários. podemos chamá-la.23. Comandon End Sub Por exemplo. Nos exemplos abaixo. para exibir a hora e a data neste formato.125) Observe que os parâmetros são passados dentro do parênteses.Virtual INF OR M ÁT I CA Vista para que a Sub-rotina funcione corretamente. simplesmente digitando o nome da Subrotina..23.. mais o nome da Sub-rotina..

Na Listagem a seguir temos o código da Sub-rotina exibe_data_hora(). é só chamarmos a Sub-rotina. Associe o seguinte código ao evento Ao clicar deste botão: Call exibe_data_hora Teste o funcionamento do botão.False) mensagem = "Ano atual: " & Year(Date()) & Chr(13) mensagem = mensagem & "Mês atual: " & mes_nome & Chr(13) mensagem = mensagem & "Hoje é dia: " & Day(Date())& Chr(13) mensagem = mensagem & Chr(13) & "***************" & Chr(13)& Chr(13) hora_atual = Hour(Time()) minuto_atual = Minute(Time()) secundo_atual = Second(Time()) mensagem = mensagem & "Hora atual: " & hora_atual & chr(13) mensagem = mensagem & "Minuto atual: " & minuto_atual & chr(13) mensagem = mensagem & "Secundo atual: " & secundo_atual MsgBox mensagem End Sub Agora. Dentro deste módulo crie o procedimento exibe_data_hora. basta chamar a Sub-rotina exibe_data_hora. Salve o módulo. Cada vez que precisarmos exibir a data e a hora neste formato. a qual faz a exibição da data e da hora.Virtual INF OR M ÁT I CA Vista Porém é mais prático criar uma Sub-rotina que faz este trabalho. utilizando um dos seguintes comandos: Call exibe_data_hora ou exibe_data_hora Exercício: Crie um novo módulo chamado Utilitários. Abra o formulário Teste no modo estrutura. Listagem– A Sub-rotina exibe_data_hora Sub exibe_data_hora mes_atual=Month(Date()) mes_nome=MonthName(mes_atual. Crie um botão chamado ExSupProc. cada vez que for necessário exibir a data e a hora nos formatos do exemplo. no formato proposto pela Figura anterior. Criando e utilizando Funções .

Comandon End Function Neste caso. argumenton) Comando1 Comando2 . depois de executados todos os comandos dentro da Função. isto é. sem parâmetros.1. estes serão passados quando a Função for chamada. conforme indicado a seguir: MsgBox “Valor em dólar: “ & Converte_para_dolar (1500. o valor retornado pela função. utilizando o comando MsgBox.. em um comando de atribuição.. Com isso você torna o entendimento do código mais fácil para quem for utilizá-lo. argumento2.81) Também poderíamos exibir o valor retornado pela função. estamos atribuindo o valor de retorno da função. simplesmente através da chamada do nome da Funçao. na mesma ordem em que foram definidos. procure utilizar nomes que descrevam os objetivos da Função. a execução desloca-se para dentro da Função. DICA: Quando você criar Função. Comandon End Function Uma Função pode. é que a Função sempre retorna um ou mais valores para o comando que a chamou. Neste caso posso simplesmente não utilizar os parênteses após o nome da Função..81) Observe que os parâmetros são passados dentro dos parênteses. devemos chamá-la. Quando uma Função é chamada. Considere o seguinte exemplo de declaração de uma Função: Função Converte_para_dolar(valor_em_real. Também poderíamos declarar uma Função. com o comando seguinte ao que chamou a Função.1. Podemos passar um ou mais argumentos para uma Função. e na mesma ordem definida quando da criação da função. ou exibido através de um comando como MsgBox. deve ser atribuído a uma variável. A sintaxe para declaração de uma Função é a seguinte: Function Nome_da_Função(argumento1. ou utilizar um par de .Virtual INF OR M ÁT I CA Vista Uma Função é um grupo de comandos que podem ser executados. à variável valor_dolar. valor_dolar = Converte_para_dolar (1500. a qual espera receber 2 parâmetros: um valor em real e a cotação do dólar. ou não. No exemplo abaixo.. e devem ser passados.. conter argumentos. A diferença da Função para a Sub-rotina. declaramos uma Função chamada Converte_para_dolar. cotacao_dolar) Comando1 Comando2 . Uma vez criada a Função. Caso sejam necessários argumentos. a execução do código continua... .

Cabe salientar o uso da função FormatNumber. através de uma Caixa de mensagem os valores em radianos.. a 5 casas depois da vírgula. A função FormatNumber é utilizada para formatar a maneira como um número é exibido. um determinado valor. Este valor é que será o valor de retorno da função. atribuímos a variável CRad um determinado valor.. sem nada dentro. Em cada "passada" do laço For. que converte um valor em graus para radianos... para os ângulos de 0 à 20 graus.14)/180 End Function 'Agora utilizamos a função dentro do laço For/Next. para exibir o valor em radianos.5)& Chr(13) Next MsgBox mensagem Observe que dentro da função.. Depois utilizamos um laço for para exibir. vamos criar uma função que converte um valor de um ângulo de Graus para Radianos.. chamamos a função CRad(i).. Comandon End Function Por exemplo.Next. para fazer a . utilizamos a função FormatNumber.Next. dentro do laço For. No exemplo a seguir temos o código onde foi criada a função CRad.. Dentro do código da função. conforme indicado abaixo: Function Nome_da_Função Comando1 Comando2 . Comandon End Function ou Function Nome_da_Função( ) Comando1 Comando2 . É isso que caracteriza uma função.Virtual INF OR M ÁT I CA Vista parênteses. para limitar o número de casas decimais. 'Criação da função CRad. For i=0 to 20 mensagem = mensagem & "Angulo: " & i & "Valor em Radianos: " mensagem = mensagem & FormatNumber(CRad(i). Depois utilizaremos a função dentro de um laço For. devemos atribuir a uma variável que tenha o mesmo nome da função. para os ângulos de 0 à 20 graus. Function CRad(valor_graus) CRad = (valor_graus*3. Neste caso.

para ser formatado com apenas 5 casas decimais. Total de deduções . 3. devem ser criadas em um Módulo separada. Com base na tabela oficial do IR.Virtual INF OR M ÁT I CA Vista conversão de Graus para radianos. um para cada parâmetro da função. Cálculo do Dígito Verificador: CPF. O usuário preenche os valores deste campo e clica em um botão Calcular. Imposto retido na fonte . Seção I. Neste tópico aprenderemos a utilizar o VBA para criar funções de validação do DV do CPF. Como calcular o DV do CPF. por 2. O Valor retornado pela função CRad. Funções que serão utilizadas em vários Formulários/Relatórios. Os algorítmos de cálculo foram publicados no Diário Oficial. no qual temos três campos. CNPJ e Processos (com dois ou quatro dígitos para o ano).TotRed. conforme indicado na tabela a seguir: Posição 1 2 3 4 5 6 7 8 9 Número 3 3 3 4 4 4 5 5 5 Multiplica por: 10 9 8 7 6 5 4 3 2 Resultado 30 27 24 28 24 20 20 15 10 Somo os resultados obtidos na quarta linha da tabela anterior: . Nota: Os algorítmos para cálculo do DV são de domínio público.TotDed. Esta função deve receber os seguintes parâmetros: Total de rendimentos . O evento Ao clicar chama a função ValorImpostoPF e exibe o resultado dos cálculos. a função calcula o imposto devido e informa se existe imposto a restituir ou a pagar e qual o respectivo valor. Considere o seguinte CPF (sem o DV): Posição 1 2 3 4 5 6 7 8 9 Número 3 3 3 4 4 4 5 5 5 Começamos a multiplicar os dígitos do CPF. Criar um formulário chamado CalcIRPF. CNPJ e Processos. é passado para a função FormatNumber. Para entender o algorítmo de cálculo do CPF vamos utilizar um exemplo prático. 5 e assim por diante. já tendo sido publicados por diversas revistas de circulação nacional e amplamente disponíveis em diversos sites da Internet. de 29/12/1999.ImpRet. Exercício: Crie uma função chamada ValorImpostoPF. 4. Depois é só chamar a função onde esta for necessária. a partir da posição 9.

Quando o resto é diferente de zero ou um.Virtual INF OR M ÁT I CA Vista Soma1 = 30+27+24+28+24+20+20+15+10 Soma1 = 198 Faço a divisão desta soma por 11 e determino o resto da divisão: 198/11 Resulta em uma divisão exata. com resto 0 Regra: Quando o resto é zero ou um. o primeiro DV é zero: DV1=0 O DV1 calculado passa a fazer parte do CPF. o DV é obtido fazendo-se: 11-resto Neste caso como o resto foi 3. porém já considerando o DV1 como parte integrande do CPF. com resto 3 Regra: Quando o resto é zero ou um.555-08 Os algorítmos para cálculo dos DVs de CNPJ e processos (dois ou quatro dígitos para o ano) são exatamente iguais. o DV é 0. o DV é 0. já com os dois DVs fica conforme indicado na tabela a seguir: Posição 1 2 3 4 5 6 7 8 9 10 11 Número 3 3 3 4 4 4 5 5 5 0 8 Ou seja: 333.444. A única diferença é o número de dígitos do CNPJ ou . conforme indicado pela tabela a seguir: Posição 1 2 3 4 5 6 7 8 9 10 Número 3 3 3 4 4 4 5 5 5 0 Multiplica por: 11 10 9 8 7 6 5 4 3 2 Resultado 33 30 27 32 28 24 25 20 15 0 Somo os resultados obtidos na quarta linha da tabela anterior: Soma2 = 33+30+27+32+28+24+25+20+15+0 Soma1 = 234 Faço a divisão desta soma por 11 e determino o resto da divisão: 234/11 Resulta em (21). o segundo DV é : DV2 = 11-3 DV2 = 8 Com isso o CPF. o DV é obtido fazendo-se: 11-resto Neste caso como o resto foi zero. conforme indicado pela tabela a seguir: Posição 1 2 3 4 5 6 7 8 9 10 Número 3 3 3 4 4 4 5 5 5 0 Agora repetimos o processo anterior. Quando o resto é diferente de zero ou um.

333/0001-22 66.888/0151-03 66. os conhecimentos apresentados sobre VBA. Função ValidaCNPJ(NúmeroDoCNPJ): Esta função recebe como parâmetro um número de CNPJ e retorna Verdadeiro se o número for válido e Falso caso contrário.333/0001-81 99.222. Usar uma máscara de entrada. Exercício: Criar um módulo chamado "Funções de Validação". em um exercício. que considera como caracteres do CPF os pontos e o traço. Testar a função ValidaCNPJ(NúmeroDoCNPJ).Virtual INF OR M ÁT I CA Vista dos processos que são diferentes do CPF.222.777. Juntando Tudo: Agora vamos juntar. Usar uma máscara de entrada. Adicionar um campo para digitação do CPF neste formulário.000. a barra e o traço. que considera como caracteres do CNPJ os pontos. Este fator é importante na hora de criarmos a função ValidaCNPJ(NúmeroDoCNPJ). criado anteriormente. até o momento.888/0151-00 .000. Adicionar um campo para digitação do CNPJ. Criar um formulário chamado Teste de DVs.333-96 777. criada anteriormente. Neste módulo criar duas funções: Função ValidaCPF(NúmeroDoCPF): Esta função recebe como parâmetro um número de CPF e retorna Verdadeiro se o número for válido e Falso caso contrário. neste formulário.000. Este fator é importante na hora de criarmos a função ValidaCPF(NúmeroDoCPF). Testar a função ValidaCPF(NúmeroDoCPF).222. neste campo. Para testar a função ValidaCPF você pode utilizar os seguintes valores: 999. neste campo.888/0150-22 66.000-33 Para testar a função ValidaCNPJ você pode utilizar os seguintes valores: 11.888-37 000.999.777. Abrir o formulário Teste de DVs.555-94 111.

Sign up to vote on this title
UsefulNot useful