Tutorial de Programação
VBA – Access – Parte 10 - Funções, procedimentos e eventos com VBA
Objetivos:
Esta é a Parte 10 do Tutorial de Programação
VBA no Access. Neste tutorial falarei sobre as estruturas de repetição,
utilizadas na programação VBA. O objetivo desta série
de tutoriais é mostrar como utilizar a programação
VBA para solucionar problemas complexos no Access, problemas que
muitas vezes não tem como ser resolvidos sem o uso de programação.
Pré-requisitos: Para acompanhar esta lição
você deve dominar os conceitos apresentados no seguintes treinamento:
"Curso
Básico de Access" e no tutorial
"Consultas
Avançadas no Microsoft Access".
Nota: Este tutorial foi retirado da apostila da
Semana 2, do Curso de Access Avançado e VBA. Você pode
adquirir os três arquivos, com todo o conteúdo deste
curso, em um total de 550 páginas de conteúdo, com
exemplos detalhados, passo-a-passo, por apenas R$ 20,00 para envio
através de Download. Para saber como adquirir este curso,
Clique
Aqui.
Funções, procedimentos e eventos com VBA
Introdução
Neste tópico (que se estenderá pelas próximas partes do tutorial), apresentarei uma série de aspectos que vão além do básico do VBA. Iniciarei falando um pouco mais sobre tipos de dados e funções para conversão de tipos. Este tópico é de grande importâ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.
Depois passaremos a analisar uma série de funções internas do VBA. São funções que fazem parte do Microsoft Access, como por exemplo a função Date(), que retorna a data do sistema. Na seqüência, aprenderemos a criar nossas próprias funções e Sub-rotinas. Aprenderemos as diferenças entre uma Sub-rotina e uma função, e quando utilizar uma ao invés da outra. Mas isso tudo já é assunto para várias partes deste tutorial.
Tipos de dados e funções para conversão de tipos
Nesta parte do tutorial, você aprenderá a determinar qual o tipo de dado que está armazenado em uma variável, bem como a converter valores de um tipo para outro, utilizando as funções para conversão de tipos.
Determinando o Tipo de Dados contido em uma variável
Existem diversas funções, que permitem que seja determinado o tipo de valor contido em uma variável. Existem diversas aplicações para este tipo de função. Por exemplo, ao digitar dados em um formulário, podemos utilizar uma função para determinar se os valores digitados pelo usuário, não apresentam problemas, isto é, se são valores válidos, para o tipo de dados definido no campo. Por exemplo, o usuário pode ter digitado, por engano, texto em um campo que deve conter valores numéricos.
A função IsArray
Um Array é um tipo especial de variável, a qual pode armazenar diversos valores em uma única variável. De uma forma simples, um Array é um conjunto, um vetor. Por exemplo, poderíamos ter uma variável Array na qual são armazenados todos os códigos de tributo, válidos. Cada valor armazenado no Array é um elemento do conjunto. Um outro exemplo: Poderíamos criar um Array para armazenar os nomes dos meses do ano. Com isso teríamos um Array de 12 elementos.
Cada elemento de um Array, é acessado através do nome da variável Array e de um índice.
O índice inicia em zero e não em um.
Por isso se tivermos um Array de 10 elementos, teremos o elemento 0, o elemento 1, o elemento 2, e assim por diante, até o elemento 9. O fato do índice começar com 0, influencia na hora que formos declarar um Array. Para declarar um Array chamado produtos, com 20 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), isto é, do elemento 0, indicado por produtos(0), até o elemento 20, indicado por produtos(19).
No exemplo a seguir, temos um exemplo simples de utilização de Array:
'Declara um Array de 7 posições
'Como a primeira posição é a posição zero,
'Indicamos o tamanho como 6, o que significa
'da posição 0 até a posição 6 = 7 elementos.
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...Next
'Para criar uma String, com o conteúdo
'Do Array Dias.
For i=0 to 6
mensagem = mensagem & "Dia: " & i+1 & " " & Dias(i)& Chr(13)
Next
'Utilizamos uma MsgBox, para exibir a mensagem
'com o conteúdo do Array Dias.
MsgBox mensagem |
Exercício: Abra o formulário Teste no modo Estrutura (ou outro formulário qualquer, de qualquer banco de dados no Access, conforme descrito nas primeiras lições deste tutorial), crie um botão chamado ExArray e associe o código deste exemplo, ao evento Ao clicar deste botão. Teste o funcionamento do código.
Utilizamos a função IsArray, para determinar se uma variável do tipo Variant (lembre que todas as variáveis do VBA, são do tipo Variant), está armazenando um Array.
Utilizamos a seguinte sintaxe:
IsArray(NomeDaVariável)
A função IsArray retorna verdadeiro se a variável for um Array, e falso caso contrário.
Vamos alterar um pouco o exemplo anterior, adicionando o seguinte comando, ao final da listagem.:
MsgBox IsArray(Dias)
o resultado seria o indicado na Figura a seguir:
A função VarType
Podemos utilizar a função VarType, para determinar o subtipo de uma variável. Como todas as variáveis são do tipo Variant, o subtipo pode ser utilizado para determinar o tipo de dado armazenado na variável. Passamos para a função, o nome de uma variável ou expressão. A função retorna um número inteiro que indica o subtipo da variável.
A sintaxe da função é a seguinte:
VarType(NomeDaVariável)
ou
VarType(expressão)
Na Tabela a seguir temos os códigos de retorno da função VarType:
Tabela - Valores de retorno da função VarType
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 |
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. |
17 |
Byte |
8192 |
Array |
No exemplo a seguir, temos um exemplo de utilização da função VarType
Dim x,y,z
Dim a, b
Dim c(20)
Dim mensagem As String
x=12
y=23.456
y=123456789
a="Este é um valor de texto !"
‘Utilizamos a função Date( ), para capturar a data do sistema.
b=Date()
mensagem = "Tipo da variável x: " & Vartype(x) & Chr(13)
mensagem = mensagem & "Tipo da variável y: " & Vartype(y) & Chr(13) mensagem = mensagem & "Tipo da variável z: " & Vartype(z) & Chr(13) mensagem = mensagem & "Tipo da variável a: " & Vartype(a) & Chr(13) mensagem = mensagem & "Tipo da variável b: " & Vartype(b) & Chr(13) mensagem = mensagem & "Tipo da variável c: " & Vartype(c) & Chr(13)
MsgBox mensagem |
Ao executar este exemplo, obteremos o resultado indicado na Figura a seguir:
Observe, principalmente, no tipo da variável z, o qual retornou 0. Isto significa que a variável z está vazia, ou seja, não foi inicializada. Este resultado está coerente com a Tabela anterior. Também podemos salientar o retorno para a variável b, o qual retornou 7, indicando que o valor armazenado nesta variável é do tipo Data, o que também está coerente com a Tabela anterior, uma vez que usamos a função Date() , para armazenar a data do sistema, na variável b. Finalmente observe o valor de retorno para a variável c, o qual retornou 8192, indicando que a variável c é um Array. Este resultado está coerente com a Tabela anterior, e com a declaração: Dim c(20), a qual declarou a variável c como sendo um Array.
Muitas são as aplicações práticas para a função VarType, dentre as quais podemos destacar a validação dos dados digitados em um formulário.
Exercício: Abra o formulário Teste no modo Estrutura (ou outro formulário qualquer, de qualquer banco de dados no Access, conforme descrito nas primeiras lições deste tutorial), crie um botão chamado ExVarType e associe o código deste exemplo, ao evento Ao clicar deste botão. Teste o funcionamento do código.
A função IsDate
A função IsDate recebe uma variável ou expressão como argumento, e determina se a variável ou expressão é uma data válida, ou pode ser convertida para uma data válida. Caso o argumento passado seja uma data válida, a função retorna Verdadeiro, caso contrário, retorna Falso. Podemos utilizar esta função, por exemplo, para verificar se o usuário digitou uma data válida, em um campo de um formulário.
A sintaxe da função IsDate é a seguinte:
IsDate(NomeDaVariável)
ou
IsDate(expressão)
A seguir temos um exemplo de utilização da função IsDate.
If IsDate(Me![DataDeEntrada]) Then
MsgBox "Você digitou uma data válida !"
Else
MsgBox "Data inválida, digite novamente !"
Me![DataDeEntrada] = Null
Me![DataDeEntrada].SetFocus
End If |
Exercício: Abra o formulário Teste no modo Estrutura (ou outro formulário qualquer, de qualquer banco de dados no Access, conforme descrito nas primeiras lições deste tutorial), crie um botão chamado ExIsDate e associe o código deste exemplo, ao evento Ao clicar deste botão. Crie um campo do tipo Caixa de Texto, onde o usuário pode digitar uma data. Nomeie este campo como DataDeEntrada. Teste o funcionamento do código.
A função IsEmpty
A função IsEmpty recebe uma variável ou expressão como argumento, e determina se, em algum momento, foi atribuído algum valor para a variável ou expressão. Caso tenha sido atribuído algum valor, a função retorna Verdadeiro, caso contrário, retorna Falso. Podemos utilizar esta função, por exemplo, para verificar se um campo de digitação obrigatória, como por exemplo o nome, não foi deixado em branco.
A sintaxe da função IsEmpty é a seguinte:
IsEmpty(NomeDaVariável)
ou
IsEmpty(expressão)
A seguir temos um exemplo de utilização da função IsEmpty.
'Vamos declarar uma variável x, que nunca
'Será utilizada no nosso Script
Dim a, b, c
Dim x
a=10
b=23
c=a+b
If IsEmpty(x) Then
MsgBox "A variável x, não foi utilizada !"
End If |
A variável x foi declarada porém não foi inicializada, com isso possui está vazia, logo a função IsEmpty(x) irá retornar Verdadeiro.
A função IsNull
A função IsNull recebe uma variável ou expressão como argumento, e determina se, em algum momento, foi atribuído o valor Null para a variável ou expressão. Caso tenha sido atribuído o valor Null, a função retorna Verdadeiro, caso contrário, retorna Falso. Para atribuirmos Null para uma variável, utilizamos a seguinte sintaxe:
NomeDaVariável = Null
IMPORTANTE: Uma variável com valor Null, não é a mesma coisa que uma variável com valor zero, ou uma variável de texto com tamanho zero. Quando é atribuído o valor Null para a variável, esta continua existindo na memória, porém 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.
' Vamos declarar uma variável x, e atribuir
' Null, para a variável.
Dim x
x = Null
If IsNull(x) Then
MsgBox "A variável x é Nula !"
End If |
Este exemplo produz o seguinte resultado:
A função IsNumeric
A função IsNumeric recebe uma variável ou expressão como argumento, e determina se o valor atribuído à variável ou expressão é numérico, ou pode ser convertido para numérico. Caso o valor seja numérico, ou possa ser convertido, a função retorna Verdadeiro, caso contrário, retorna Falso.
A sintaxe da função IsNumeric é a seguinte:
IsNumeric(NomeDaVariável)
ou
IsNumeric(expressão)
A seguir temos um exemplo de utilização da função IsNumeric.
Dim x,y,z
x=123
'Atribuo um valor que não pode ser convertido
'para numérico
y = "Riachuelo - 80"
z = Date()
mensagem = "Valor de x: " & x &" É numérico ? " & IsNumeric(x)& Chr(13)
mensagem = mensagem & "Valor de y: " & y &" É numérico ? " & IsNumeric(y)& Chr(13)
mensagem = mensagem & "Valor de z: " & z &" É numérico ? " & IsNumeric(z)
MsgBox mensagem |
Exercício: Abra o formulário Teste no modo Estrutura (ou outro formulário qualquer, de qualquer banco de dados no Access, conforme descrito nas primeiras lições deste tutorial), crie um botão chamado ExIsNumeric e associe o código deste exemplo, ao evento Ao clicar deste botão. Teste o funcionamento do código.
Cabe salientar a utilização da função Date(), para capturar a data do sistema, e atribuir esta data à variável z. Observe que esta data não foi considerada um valor numérico para a função IsNumeric.
A função IsObject
A função IsObject recebe uma variável como argumento, e determina se o valor atribuído à variável é um Objeto Activex, se for um objeto Activex, a função retorna Verdadeiro, caso contrário, retorna Falso.
A sintaxe da função IsObject é a seguinte:
IsObject(NomeDaVariável)
ou
IsObject(expressão)
Conclusão:
Nesta parte do tutorial, falei sobre as funções para detectar o tipo de dado armazenado em uma variável. Estas funções são muito utilizadas em rotinas de validação de dados, para garantir que os dados digitados em um campo, sejam do tipo correto.
Nota: Este tutorial foi retirado da apostila da
Semana 2, do Curso de Excel Avançado e VBA. Você pode
adquirir os três arquivos, com todo o conteúdo deste
curso, em um total de 550 páginas de conteúdo, com
exemplos detalhados, passo-a-passo, por apenas R$ 20,00 para envio
através de Download. Para saber como adquirir este curso,
Clique
Aqui.
você conhece a universidade do access?
Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela
Aplica-se ao Access 2019, 2016, 2013 e 2010!
13 Cursos - 574 Vídeo-Aulas - 63:32 horas
Para todos os detalhes, acesse:
https://juliobattisti.com.br/universidade-do-access.asp