Confronta date e ore in Excel VBA
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.
-
Immettere alcuni numeri nella colonna A.
-
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:
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:
-
Dichiarare la variabile i di tipo Integer.
Dim i As Integer
-
Aggiungere un ciclo For Next.
For i = 1 To 5 Next i
-
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:
-
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:
-
Ma per quanto riguarda i tempi, si sente dire. Sono i decimali. Tornare in formato Generale e modificare i numeri per numeri decimali.
-
Ora cambiamo il formato a ‘Data e ora’ formato.
Risultato:
-
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:
-
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: