La Data di Pasqua in Access

In questa lezione del corso su Access vi spiegherò l'algoritmo del calcolo della data di Pasqua in VBA per Access, Excel e Word.

Questo articolo fa parte del corso su Access. Puoi trovare la guida completa e tutte le lezioni qui: https://informatica.rgpsoft.it/corso-access

Introduzione

Il web offre numerosi siti che permettono di calcolare il giorno di Pasqua a partire dall’anno, insieme a molti altri strumenti di calcolo. In questa lezione vedremo come implementare una funzione VBA per calcolare la data della Pasqua direttamente in Microsoft Access, funzione che può essere facilmente riutilizzata anche in qualsiasi programma scritto in Visual Basic, con minime modifiche.

Nei software gestionali dedicati alla pianificazione del lavoro degli operai è importante conoscere questa data anno per anno, perché la Pasquetta è l’unico giorno festivo mobile del calendario italiano.

La data della Pasqua viene determinata come:

la prima domenica dopo il primo plenilunio successivo all’equinozio di primavera, fissato convenzionalmente al 21 marzo.

Da questa regola si deduce che la data è calcolabile matematicamente, perché segue il ciclo delle fasi lunari, che ha una periodicità fissa di 19 anni (ciclo metonico). Possiamo quindi implementare una funzione che restituisca la data esatta.

Preparazione dell’ambiente in Access

  1. Creiamo un nuovo database Access.
  2. Inseriamo una maschera in visualizzazione struttura.
  3. Aggiungiamo:
    • una casella di testo per inserire l’anno;
    • una casella di testo per mostrare la data calcolata;
    • un pulsante per avviare il calcolo.

Implementazione

A questo punto possiamo scrivere la nostra funzione VBA per determinare il giorno di Pasqua.

Public Function CalcEaster(iAnno As Integer) As String
Dim arrGm, arrDa As Variant,
iA, iB, iC, iD, iE, iG As Integer
Dim iDay, iMonth As Integer

arrGm = Array(22, 22, 23, 23, 24, 24)
arrDa = Array(2, 2, 3, 4, 5, 5)

iA = iAnno Mod 19
iB = iAnno Mod 4
iC = iAnno Mod 7
iD = CInt((iAnno / 100) - 15)
iE = (19 * iA + arrGm(iD)) Mod 30
iG = (2 * iB + 4 * iC + 6 * iE + arrDa(iD)) Mod 7
iDay = 22 + iE + iG
iMonth = 3
If iDay > 31 Then
iMonth = 4
iDay = iDay - 31
End If

CalcEaster = CStr(iDay) + "/" + CStr(iMonth) + "/" +
CStr(iAnno)

End Function

Come si può osservare, l’intero calcolo si basa su valori fissi organizzati in due array: uno per il ciclo lunare di 19 anni e uno per la gestione degli anni bisestili, che aggiungono un giorno in più al conteggio. Il resto dell’algoritmo deriva dalle numerose formule disponibili sul web; tra queste ho scelto quella più semplice e compatta, ideale per essere implementata in VBA.

Nella parte finale del calcolo verifichiamo se il giorno ottenuto supera il valore 31: in tal caso la data appartiene al mese di aprile, e quindi sottraiamo 31 per ottenere il giorno corretto. Questo perché la Pasqua può cadere esclusivamente nei mesi di marzo o aprile, mai oltre.

<< Lezione PrecedenteLezione Successiva >>

Vuoi continuare il percorso? Torna alla guida generale del corso su Access: https://informatica.rgpsoft.it/corso-access

Giampaolo Rossi
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Articoli: 325

RGPSoft© 2026 - Contenuti distribuiti con licenza CC BY 4.0