DateNum




Public Function dateToNumber(ByVal prmdatToConvert As Date) As Long
On Error Goto errorHandling
Dim lngYear As Long
Dim lngMonth As Long
Dim lngDay As Long
Dim arrMonthDayMax As Variant
Dim intMonthCount As Integer
Dim intTMP As Integer
arrMonthDayMax = Array(31, 99, 31, 30, 31, 30, 31, 31, 30, _
31, 30, 31)
lngYear = CLng(Format(prmdatToConvert, "YYYY"))
lngMonth = CLng(Format(prmdatToConvert, "MM"))
lngDay = CLng(Format(prmdatToConvert, "DD"))

If lngMonth = 2 Then
If Not (lngYear Mod 4 = 0) And (lngYear Mod 100 = 0) _
And (lngYear Mod 400 = 0) Then 'not a leap year
dateToNumber = -1
Exit Function 'Abnormal termination
End If
End If

For intMonthCount = LBound(arrMonthDayMax) To lngMonth - 1
intTMP = intTMP + arrMonthDayMax(intMonthCount)
Next intMonthCount

dateToNumber = (lngYear * 1000) + intTMP + lngDay
Exit Function

errorHandling:
Call Err.Raise(Err.Number, Err.Source, Err.Description)
End Function
Function will return -1 If a february is entered With a
leap year when it should Not

Function ALSO ASSUMES OPTION BASE 0
If you are working in BASE 1, Then you will have To change
For intMonthCount = LBound(arrMonthDayMax) To lngMonth - 1 to
For intMonthCount = LBound(arrMonthDayMax) To lngMonth












( datenum.html )- by Paolo Puglisi - Modifica del 17/12/2023