Calcolare una data nel futuro o nel passato

Visual Basic for Applications:
Calcolare una data nel futuro o nel passato

Come fare:

In Visual Basic for Applications (VBA), la funzione primaria utilizzata per calcolare date future o passate è DateAdd(). Questa funzione aggiunge un intervallo di tempo specificato a una data, restituendo una nuova data.

Ecco un esempio base per aggiungere 10 giorni alla data corrente:

Dim futureDate As Date
futureDate = DateAdd("d", 10, Date) ' Aggiunge 10 giorni alla data corrente
Debug.Print futureDate ' Stampa qualcosa tipo: 20/04/2023

Analogamente, per trovare una data 10 giorni nel passato:

Dim pastDate As Date
pastDate = DateAdd("d", -10, Date) ' Sottrae 10 giorni dalla data corrente
Debug.Print pastDate ' Stampa: 31/03/2023, assumendo che oggi sia il 10/04/2023

Questi esempi sono piuttosto semplici. Puoi sostituire "d" con altri codici di intervallo, come "m" per mesi e "yyyy" per anni, per calcolare diversi tipi di calcoli di date. Ecco come potresti calcolare una data un anno nel futuro:

Dim nextYear As Date
nextYear = DateAdd("yyyy", 1, Date) ' Aggiunge 1 anno alla data corrente
Debug.Print nextYear ' Stampa: 10/04/2024 se oggi è il 10/04/2023

Approfondimento

La funzione DateAdd è stata una parte fondamentale di VBA fin dalla sua nascita, derivando dal suo predecessore BASIC. Mentre offre semplicità per aggiungere o sottrarre intervalli di tempo dalle date, è fondamentale notare che VBA, inclusa la gestione delle sue funzioni di data, potrebbe non sempre eguagliare la comodità o l’efficienza trovata in linguaggi di programmazione più recenti.

Ad esempio, linguaggi moderni come Python con il modulo datetime o JavaScript con librerie come moment.js e date-fns forniscono modi più intuitivi e potenti per la manipolazione delle date. Queste opzioni offrono un migliore supporto per la localizzazione, i fusi orari e gli anni bisestili, che possono renderli più adatti per applicazioni che richiedono calcoli di date precisi su scala globale.

Tuttavia, per macro Excel e applicazioni che richiedono l’integrazione nell’ecosistema di Microsoft Office, VBA rimane una scelta pratica. La semplicità nell’accedere direttamente e manipolare i dati di Excel rappresenta un vantaggio significativo. Inoltre, per la maggior parte dei calcoli di date di base come pianificazione e promemoria, DateAdd() in VBA fornisce una soluzione adeguata e diretta. La sua sintassi è facile da comprendere per i neofiti, mentre la sua integrazione nelle più ampie applicazioni della suite Office ne assicura la rilevanza in casi d’uso specifici.

In conclusione, mentre i linguaggi di programmazione alternativi possono offrire approcci più moderni al calcolo delle date, DateAdd() in VBA funge da testimonianza della persistenza del linguaggio nei domini dove è più necessario.