>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Comparação de datas no VBA

Comparar datas no Microsoft Visual Basic for Applications não é diferente de comparar qualquer outro tipo de dado. Os valores que você compara devem ser do tipo "Date". Você pode usar os operadores de comparação padrão: "<" para "menor que"; "<=" para "menor ou igual a"; ">" para "maior que"; ">=" para "maior ou igual a"; "=" para "igual a"; e "<>" para "diferente de". Você também pode usar dois operadores de comparação, "Is" e "IsNot".

Tipo Date do VBA

É útil lembrar como o VBA armazena valores de data na memória quando você compara datas. Uma data é armazenada como um número de ponto flutuante de precisão dupla, ou Double. A parte inteira longa é o número de dias, positivo ou negativo, desde 30 de dezembro de 1899. A parte decimal é a quantidade de tempo decorrida desde a meia-noite. Uma data sem hora tem sua parte decimal definida como zero. Por exemplo, 1 de maio de 1967 é armazenado como 24593.0. Isso significa que quando o VBA compara duas datas, na verdade está comparando dois números que representam dias.

String de caracteres vs. Date

Quando você compara datas no VBA, deve garantir que os valores que compara tenham tipo "Date" e não sejam strings de caracteres. Por exemplo, a string de caracteres "05/01/1999" é menor que a string "12/31/1900" porque "05" vem antes de "12". Converta uma string de caracteres para tipo date usando a função "CDate", por exemplo, "CDate(TextBox.Value)".

Funções úteis

Além de CDate(), existem outras funções úteis que você pode usar ao comparar datas. A função "Date()" fornece a data de hoje como valor Date. A função "Now()" fornece a data e hora de hoje como valor Date. Como o tipo de dado Date também inclui um componente de tempo, você pode extrair apenas a parte da data de uma variável ao comparar datas usando a função "DateValue()", por exemplo, "If submission > DateValue(deadline) Then ..."

Aritmética de datas

Como uma data é armazenada como o número de dias desde 30 de dezembro de 1899, você pode incluir aritmética de datas ao comparar datas no VBA. Por exemplo, se um bilhete expira três dias após ter sido comprado, você pode verificar um bilhete expirado com código VBA similar ao seguinte:

Public Function expired(purchase as Date) As Boolean
expired = False
If purchase+3 > Date() Then
expired = True
End If
End Function