Comprensione della funzione IsDate VBA di Excel

La funzione IsDate di VBA presumibilmente ti dice se una stringa di testo può essere interpretata come una data. Ad esempio, tutte le seguenti espressioni restituiscono True:

È Data(“25/05/2015”)
IsDate(“16 gennaio”)
È Data(“12-1”)
È Data(“1/12/15”)
È Data(“2/30”)
È Data(“30/2”)

Negli ultimi due esempi, si noti che IsDate non è schizzinoso riguardo all'ordine del giorno e del mese. Entrambe queste stringhe potrebbero essere interpretate come una data, quindi IsDate restituisce True (indipendentemente dalle impostazioni del formato della data del sistema).

Ecco alcune informazioni da un articolo del supporto Microsoft :

Le funzioni di data VBA IsDate, Format, CDate e CVDate utilizzano una funzione trovata in automazione OLE (OleAut32.dll). Questa funzione cerca tutti i possibili formati di data tokenizzando ciascuno dei valori separati nella stringa che rappresenta la data e restituisce un valore booleano che indica se l'input può essere rappresentato come una data.

Questo è importante da ricordare quando si utilizza la funzione per interpretare una data che contiene un anno a 2 cifre. Locali differenti utilizzano diversi formati di data (cioè, mm/gg/aa, aa/mm/gg, GG MMM AA , AA MMM GG , e così via) e quindi la funzione prova le cifre in tutte le posizioni fino la funzione ha trovato una data valida o ha esaurito tutte le possibilità.

Solo perché IsDate riconosce una stringa come data non significa che la stringa possa essere convertita in modo affidabile in una data. In alcuni casi, il risultato è ambiguo. Ad esempio, che dire di questa espressione?

IsDate(“29-Feb-01”)

Il 29 febbraio 2001 non è una data valida. Tuttavia, questa espressione restituisce True perché 1 febbraio 1929 (e 2 gennaio 1929) sono date valide. E così sono quelle stesse date nel 2029.

La ricerca della documentazione IsDate è risultata vuota. In base ai test, IsDate accetta uno dei seguenti caratteri separatori: una barra (/), un trattino (-), una virgola (,), un punto (.) e uno spazio.

Pertanto, le seguenti espressioni restituiscono tutte True:

È Data(“5.1”)
È Data(“30 6”)
È Data(“30,6”)
È Data(“1/2”)

Ma poi c'è questa anomalia: le seguenti espressioni restituiscono True:

È Data(“5.1.5”)
È Data(“5.1.05”)

Tuttavia, in modo non esplicito, questa espressione restituisce False:

È Data(“5.1.2005”)

Supponiamo di aver creato un Form utente con un InputBox in cui l'utente immette una data. Dovrebbe essere chiaro che l'utilizzo di IsDate per convalidare la voce non è molto affidabile.

Le cose si fanno ancora più confuse quando ti rendi conto che IsDate copre anche i valori temporali. (Non esiste una funzione IsTime corrispondente.) Quindi, le seguenti espressioni restituiscono tutte True:

È Data(“4:45”)
È Data(“4.45”)
È Data(“4 45”)
È Data(“4/45”)
È Data(“23:59”)

Queste espressioni restituiscono False:

È Data(“4:60”)
È Data(“24.45”)

È importante sottolineare che IsDate non mostra tutte queste stranezze quando si passa un argomento Range. Per esempio:

IsDate(Intervallo(“A1”))

Sembra che IsDate sia perfettamente affidabile nell'identificare le celle che contengono una data o un'ora. Ad esempio, non identifica una cella che contiene 5.1 come data. Se il tuo codice deve determinare se una stringa può essere interpretata come una data, la soluzione migliore è inserire quella stringa in una cella e quindi scrivere il codice per controllare il contenuto della cella.

Leave a Comment

Utili funzioni di data di Microsoft Power Query

Utili funzioni di data di Microsoft Power Query

Scopri le utili funzioni di data di Excel in Power Query per operazioni come aggiungere mesi, estrarre parti di data e ottenere il numero di giorni.

Come utilizzare il comando Vai a in Word 2016

Come utilizzare il comando Vai a in Word 2016

Scopri come utilizzare il comando Vai a in Word 2016 per navigare facilmente nel tuo documento tramite pagine o righe specifiche.

Access 2019: come modificare e modificare un database di Access

Access 2019: come modificare e modificare un database di Access

Scopri come modificare un database di Access in Access 2019: aggiungere campi, rinominarli e definire il tipo di dati. Guida passo passo per migliorare la tua esperienza con Access.

Smartsheet 9.1.1

Smartsheet 9.1.1

Smartsheet è una piattaforma di lavoro dinamica che ti consente di gestire progetti, creare flussi di lavoro e collaborare con il tuo team.

SharePoint

SharePoint

SharePoint è un sistema di collaborazione basato sul Web che utilizza una varietà di applicazioni per flussi di lavoro, database di "elenco" e altri componenti Web, nonché funzionalità di sicurezza per fornire controllo ai gruppi aziendali che lavorano insieme.

Calendario perpetuo 1.0.38/1.0.36

Calendario perpetuo 1.0.38/1.0.36

Van Nien Calendar è un'applicazione per la visualizzazione del calendario sul tuo telefono, che ti aiuta a vedere rapidamente la data lunisolare sul tuo telefono, organizzando così il tuo lavoro importante.

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook è un'applicazione aziendale e di produttività sviluppata da Microsoft Corporation.

Fare clic su

Fare clic su

ClickUp è una delle piattaforme di produttività più apprezzate per qualsiasi azienda. Grandi aziende come Google, Booking.com, San Diego Padres e Uber utilizzano ClickUp per aumentare la produttività sul posto di lavoro.

Visualizzatore PDF-XChange 2.5.322.10

Visualizzatore PDF-XChange 2.5.322.10

Il PDF è diventato un formato comunemente utilizzato per leggere, creare e inviare documenti di testo. A sua volta, c'è stato un aumento del numero di programmi utilizzati per questo tipo di documentazione. PDF-XChange Viewer fa parte di un numero crescente di visualizzatori PDF.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice offre una suite completa di applicazioni Office che rivaleggiano con Microsoft 365, in particolare in Excel, PowerPoint e Word. Ti consente di gestire i tuoi progetti in modo più efficace e supporta diversi formati di file.