Comparação de datas em VBA

página de calendário

O VBA armazena uma data como o número de dias desde 30 de dezembro de 1899.

Crédito da imagem: Sergii Gnatiuk / iStock / Getty Images

Comparar datas no Microsoft Visual Basic for Applications não é diferente de comparar qualquer outro tipo de dados. Os valores que você compara devem ser do tipo "Data". Você pode usar os operadores de comparação padrão: "" 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 de data 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 decorrido 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.

Vídeo do dia

Cadeia de caracteres vs. Encontro

Ao comparar datas no VBA, você deve garantir que os valores comparados sejam do tipo "Data" e não sejam cadeias de caracteres. Por exemplo, a sequência de caracteres "05/01/1999" é menor que a sequência de caracteres "31/12/1900" porque "05" vem antes de "12". Converta uma string de caracteres em um tipo de data usando a função "CDate", por exemplo, "CDate (Caixa de texto. Valor)".

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 um valor de Data. A função "Now ()" fornece a data e a hora de hoje como um valor de Data. Como o tipo de dados 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 submit> DateValue (deadline) Then ..."

Aritmética de Data

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

Função pública expirada (compra como data) As booleano expirado = False If purchase + 3> Date () Then expired = True End If End Function