Questo esempio insegna come confrontare date e ore in Excel VBA. Date e orari sono memorizzati come numeri in Excel e contano il numero di giorni da gennaio 0, 1900. Quello che si vede dipende dal formato numerico.

  1. Immettere alcuni numeri nella colonna A.

Numbers

  1. Questi numeri sono date. Questo è un modo perfetto per entrare in alcune date senza preoccuparsi del formato di data. Modificare il formato di data (Tasto destro del mouse sull’intestazione della colonna A, Formato celle e scegli Data).

Risultato:

Dates

Nota: Le date sono in formato USA. Mesi prima, Giorni Seconda. Questo tipo di formato dipende dalle vostre finestre Impostazioni internazionali.

Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:

  1. Dichiarare la variabile i di tipo Integer.

Dim i As Integer
  1. Aggiungere un ciclo For Next.

For i = 1 To 5

Next i
  1. La funzione Date restituisce la data corrente, senza il tempo. Aggiungere la seguente riga di codice per il ciclo, per evidenziare tutte le celle che contengono la data corrente (2020/03/13).

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

Risultato:

Dates Equal To

  1. Aggiungere la seguente riga di codice per il ciclo, per evidenziare tutte le date precedenti al 2019/04/19.

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

Risultato:

Dates Earlier Than

  1. Ma per quanto riguarda i tempi, si sente dire. Sono i decimali. Tornare in formato Generale e modificare i numeri per numeri decimali.

Decimal Numbers

  1. Ora cambiamo il formato a ‘Data e ora’ formato.

Date and Time Format

Risultato:

Dates and Times

  1. Se si desidera evidenziare tutte le celle che contengono la data attuale, non possiamo utilizzare la riga di codice a 5 più. Perchè no? Perché i numeri in colonna A sono numeri decimali ora. Confrontandolo con la data (un numero intero) non avrebbe dato alcuna partita. (Sarebbe solo dare un match con 2020/03/13 esattamente a mezzanotte!) La seguente riga di codice funziona:

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

Spiegazione: usiamo semplicemente la funzione Int. La funzione Int arrotonda un numero al numero intero più vicino. In questo modo siamo in grado di ottenere le date, senza i tempi e confrontare queste date con Data.

Risultato:

Dates Without Times Equal To

  1. Aggiungere il seguente codice linea per evidenziare tutte le celle contenenti volte al mattino.

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

Spiegazione: abbiamo solo bisogno i decimali in modo da quindi sottraiamo la parte intera. Mezzogiorno (a metà giornata) è rappresentato come 0.5.

Decimali inferiore a 0,5 sono i tempi del mattino.

Risultato:

Times in the Morning