something like this (tested in vba )
final update for Sunday subquery
As requested in the comments from Gopal below
Dim strDate As String Dim dtStart As Date Dim dtEnd As Date Dim stEnd As Date Dim lngCnt As Long Dim strOut As String strDate = "01/2012" dtStart = DateValue(strDate) dtEnd = DateAdd("d", DateDiff("d", strDate, DateAdd("m", 1, strDate) - 1), dtStart) lngCnt = Weekday(dtStart) - 7 Do lngCnt = lngCnt + 7 strOut = strOut & Format(lngCnt, "00") & vbNewLine Loop While lngCnt + 7 <= dtEnd - dtStart MsgBox strOut
updated
Note that I needed to use lngdays-1 to add 1 day less than a month (i.e. January 31, 2011), otherwise you would have February 1, 2011 as a result
Dim strDate As String Dim lngdays As Long strDate = "01/2011" lngdays = DateDiff("d", strDate, DateAdd("m", 1, strDate)) MsgBox Format(DateAdd("d", lngdays - 1, strDate), "dddd (dd/mm/yyyy)")
old
Dim lngdays As Long lngdays = DateDiff("d", "01/2011", DateAdd("m", 1, "01/2011")) MsgBox Format(DateSerial(2011, 1, lngdays), "dddd (dd/mm/yyyy)")
source share