venerdì 26 settembre 2014

Funzione per ottenere il numero di giorni del mese

Mi chiedo se la funzione DateSerial funzioni anche aumentando mese e anno qualora si vada oltre il limite dell'anno con i calcoli sulle date, ossia se, aggiungendo 1 al mese, nel caso in cui sia dicembre, si vada regolarmente a gennaio dell'anno successivo o se l'anno resti invariato.
Proviamo...
 Sub main()
    Dim mese As Integer, anno As Integer
    Dim dt As Date
    mese = 12
    anno = 2014
    
    dt = DateSerial(anno, mese, 1)
    Debug.Print "questo è il mese di Dicembre: " & dt
    dt = DateSerial(anno, mese + 1, 1)
    Debug.Print "questo è ciò che si ottiene sommando 1 al mese: " & dt
 End Sub
0questo è il mese di Dicembre: 01/12/2014
questo è ciò che si ottiene sommando 1 al mese: 01/01/2015


Sì! Funziona!

Quindi determiniamo quanti giorni ci sono nel mese:
Function DaysInMonth(mese As Integer, anno As Integer) As Integer
    DaysInMonth = DateSerial(anno, mese + 1, 1) - DateSerial(anno, mese, 1)
End Function
Ecco: proviamo questa funzione
 Sub main()
    Dim mese As Integer, anno As Integer
    Dim dt As Date
    mese = 2
    anno = 2012
    Debug.Print DaysInMonth(mese, anno)
 End Sub
 29 

Funziona anche per il mese di febbraio degli anni bisestili! Perfetto.

Nessun commento:

Posta un commento