Compare datas e horas no Excel VBA - Macros fáceis do Excel

Índice

Este exemplo ensina como compare datas e horas em Excel VBA. As datas e horas são armazenadas como números no Excel e contam o número de dias desde 0 de janeiro de 1900. O que você vê depende do formato do número.

1. Insira alguns números na coluna A.

2. Esses números são datas. Esta é uma maneira perfeita de inserir algumas datas sem se preocupar com o formato da data. Mude o formato para Data (clique com o botão direito no cabeçalho da coluna A, Formatar Células e escolha Data).

Resultado:

Observação: as datas estão no formato dos EUA. Meses primeiro, dias depois. Este tipo de formato depende das configurações regionais do Windows.

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

3. Declare a variável i do tipo Inteiro.

Dim i As Integer

4. Adicione um loop For Next.

Para i = 1 a 5
Proximo eu

5. A função Date retorna a data atual sem a hora. Adicione a seguinte linha de código ao loop, para destacar todas as células que contêm a data atual (13/03/2020).

If Cells (i, 1) .Value = Date Then Cells (i, 1) .Font.Color = vbRed

Resultado:

6. Adicione a seguinte linha de código ao loop, para destacar todas as datas anteriores a 19/04/2019.

If Cells (i, 1) .Value <DateValue ("April 19,2021-2022") Then Cells (i, 1) .Font.Color = vbRed

Resultado:

7. Mas e quanto às vezes, ouvimos você dizer. Eles são os decimais. Volte para o formato geral e altere os números para números decimais.

8. Agora mude o formato para o formato de 'Data e Hora'.

Resultado:

9. Se você quiser destacar todas as células que contêm a data atual, não podemos mais usar a linha de código em 5. Por que não? Porque os números na coluna A agora são números decimais. Compará-lo com a data (um número inteiro) não daria nenhuma correspondência. (Isso só daria uma correspondência com 13/03/2020 exatamente à meia-noite!) A seguinte linha de código funciona:

If Int (Cells (i, 1) .Value) = Date Then Cells (i, 1) .Font.Color = vbRed

Explicação: simplesmente usamos a função Int. A função Int arredonda um número para o inteiro mais próximo. Dessa forma, podemos obter as datas sem os horários e comparar essas datas com a Data.

Resultado:

10. Adicione a seguinte linha de código para destacar todas as células que contêm horários da manhã.

If (Cells (i, 1) .Value - Int (Cells (i, 1) .Value)) <0,5 Then Cells (i, 1) .Font.Color = vbRed

Explicação: só precisamos dos decimais, portanto, subtraímos a parte inteira. O meio-dia (meio dia) é representado como 0,5. Decimais menores que 0,5 são os horários da manhã.

Resultado:

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave