Função Excel VBA IsDate
IsDate é a função VBA que testa se o valor fornecido é a data ou não. Se o valor fornecido ou o valor de referência do intervalo for o valor da data, obteremos o resultado como "VERDADEIRO", se o valor não for o valor da data, obteremos o resultado como "FALSO". Portanto, o resultado é um valor BOOLEANO, ou seja, TRUE ou FALSE.
Abaixo está a sintaxe da função IsDate.
A expressão nada mais é do que o valor que estamos tentando testar, seja a data ou não.
Como usar a função VBA IsDate?
Você pode baixar este modelo VBA IsDate Excel aqui - modelo VBA IsDate ExcelVamos testar se o valor “5.01.19” é um valor de data ou não.
Para isso, primeiro inicie o procedimento de macro do Excel.
Código:
Sub IsDate_Example1 () End Sub
Defina a variável para armazenar o valor da data e como o valor será o valor da data atribua o tipo de dados apenas como “Data”.
Código:
Sub IsDate_Example1 () Dim MyDate As Date End Sub
Agora atribua o valor de “5.1.19” à variável “MyDate”.
Código:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" End Sub
Abra a caixa de mensagem no VBA agora
Código:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox (End Sub
Nesta caixa de mensagem, testaremos se o valor de data fornecido para a variável “MyDate” é a data ou não usando a função “IsDate”. Primeiro, abra a função “IsDate”.
Código:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox IsDate (End Sub
Expressão é o valor que estamos testando para descobrir se é Data ou não. Como já armazenamos o valor na variável “MyDate”, forneça apenas o nome da variável.
Código:
Sub IsDate_Example1 () Dim MyDate As Date MyDate = "5.1.19" MsgBox IsDate (MyDate) End Sub
Ok, agora execute o código e veja o que temos na caixa de mensagem.
Uau!!! O resultado é VERDADEIRO .
Você deve estar se perguntando como ele reconheceu o valor “5.1.19” como a data.
A razão pela qual ele retornou o resultado como TRUE é porque quando você olha para o valor fornecido “5.1.19” é a forma abreviada da data “05.01.2019” então o excel é brilhante o suficiente para reconhecê-lo como data, então o resultado é verdade.
Agora vem a parte complicada, pelo mesmo valor o que faremos é alterar a versão abreviada do ano de 19 para 2019.
Código:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "5.1.2019" MsgBox IsDate (MyDate) End Sub
Agora execute o código e veja o resultado.
Desta vez, ele retornou o resultado como FALSO porque a parte do “dia e mês” da data está na forma abreviada, mas a parte do ano está na forma completa de “AAAA”, então ISDATE não pode reconhecer que tem uma data, então o resultado é FALSO.
Agora, olhe para o código abaixo.
Código:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "05.01.2019" MsgBox IsDate (MyDate) End Sub
Eu mencionei o formato de dia inteiro e mês inteiro usando 0, vamos executar o código e ver o resultado da função IsDate.
Desta vez também obtemos o resultado como FALSE .
Agora mude o código da seguinte maneira.
Código:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "05/01/2019" MsgBox IsDate (MyDate) End Sub
Em vez do ponto (.) Como separador, inserimos uma barra (/) como separador. Agora execute o código e veja o resultado.
Desta vez, obtivemos o resultado TRUE .
Esta é a razão pela qual eu disse a você no início do artigo que “Data” é uma coisa delicada.
Agora, o que vou fazer é mesclar a data e a hora.
Código:
Sub IsDate_Example1 () Dim MyDate As String MyDate = "05/01/2019 15:26:24" MsgBox IsDate (MyDate) End Sub
O que eu adicionei acima é a parte do tempo “15:26:24” antes da data. Agora execute o código e veja o resultado.
Desta vez também obtivemos o resultado TRUE porque DATE & TIME no Excel são as mesmas coisas e armazenadas como números de série. O número inteiro representa a parte da data e as casas decimais representam a parte do tempo.
Coisas para lembrar aqui
- IsDate retorna o resultado do tipo booleano, ou seja, TRUE ou FALSE.
- IsDate está disponível apenas como uma função VBA.
- Apenas datas formatadas válidas são tratadas como a data, caso contrário, serão tratadas como valores de texto e retornarão o resultado como FALSO.