# date validation

dear sir,

l'm doing the date validation programming, for example, if todays is april 98, then how do l know that this month is got 30,31 or just 28 days ?
###### Who is Participating?

Commented:
Hi,

there is no special function which returns the number of days in the month. But you can easily make a loop until the date pass to the next month.

Private Function NbDays(ByVal iMonth As Integer, _
ByVal iYear As Integer) As Integer
Dim i As Integer
Dim MyDate As Date

MyDate = CDate("28/" & Format(iMonth) & "/" & Format(iYear))

' Loop for the 29, 30 and 31
For i = 1 To 4
If Val(Format(MyDate, "mm")) > iMonth Then
NbDays = 26 + i
Exit Function
End If
MyDate = MyDate + 1
Next i

NbDays = 31

End Function

0

Commented:
e_aks,

You can use the following function as a General Procedure:

Public Function LastOfMonth(Optional vdatBase As Variant, Optional viOffset As Variant) As Date

Dim datBase As Date
Dim iOffset As Integer

If Not IsMissing(vdatBase) Then
datBase = CDate(vdatBase)
Else
datBase = Date
End If

If Not IsMissing(viOffset) Then
iOffset = CInt(viOffset)
Else
iOffset = 0
End If

LastOfMonth = DateSerial(Year(datBase), Month(datBase) + iOffset + 1, 0)
End Function

to get the last day of each month try:

msgbox LastOfMonth(now) 'will return "30 June 1998"

Regards
mmahdi
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.