Confronto data in VBA

pagina del calendario

VBA memorizza una data come numero di giorni dal 30 dicembre 1899.

Credito immagine: Sergii Gnatiuk/iStock/Getty Images

Il confronto delle date in Microsoft Visual Basic, Applications Edition non è diverso dal confronto di qualsiasi altro tipo di dati. I valori da confrontare devono essere di tipo "Data". È possibile utilizzare gli operatori di confronto standard: "" per "maggiore di"; ">=" per "maggiore o uguale a"; "=" per "uguale a"; e "<>" per "non uguale a". È inoltre possibile utilizzare due operatori di confronto, "È" e "Non è".

Tipo di data VBA

È utile ricordare come VBA archivia i valori della data in memoria quando si confrontano le date. Una data viene archiviata come numero a virgola mobile a precisione doppia o come Double. La porzione intera lunga è il numero di giorni, positivi o negativi, dal 30 dicembre 1899. La parte decimale è il tempo trascorso dalla mezzanotte. Una data senza ora ha la sua parte decimale impostata su zero. Ad esempio, 1 maggio 1967 viene archiviato come 24593.0. Ciò significa che quando VBA confronta due date, in realtà confronta due numeri che rappresentano i giorni.

Video del giorno

Stringa di caratteri vs. Data

Quando confronti le date in VBA, devi assicurarti che i valori che confronti abbiano un tipo "Data" e non siano stringhe di caratteri. Ad esempio, la stringa di caratteri "05/01/1999" è inferiore alla stringa di caratteri "31/12/1900" perché "05" viene prima di "12". Converti una stringa di caratteri in un tipo di data utilizzando la funzione "CDate", ad esempio "CDate (Casella di testo. Valore)".

Funzioni utili

Oltre a CDate(), ci sono altre utili funzioni che potresti usare per confrontare le date. La funzione "Date()" fornisce la data odierna come valore Data. La funzione "Now()" fornisce la data e l'ora di oggi come valore di data. Poiché il tipo di dati Data include anche un componente temporale, puoi estrarre solo la parte relativa alla data di una variabile quando si confrontano le date utilizzando la funzione "DateValue()", ad esempio "Se invio > DateValue (scadenza) Then ..."

Aritmetica della data

Poiché una data viene archiviata come numero di giorni dal 30 dicembre 1899, è possibile includere l'aritmetica della data quando si confrontano le date in VBA. Ad esempio, se un biglietto scade tre giorni dopo l'acquisto, è possibile verificare la presenza di un biglietto scaduto con un codice VBA simile al seguente:

Funzione pubblica scaduta (acquisto come data) As Boolean scaduto = False If acquisto+3 > Date() Then scaduto = True End If End Function