как-то так (проверено в vba )
окончательное обновление для подзапроса Sunday
Согласно запросу в комментарии от Gopalниже
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
обновлено
Обратите внимание, что мне нужно было использовать lngdays-1
, чтобы добавить 1 день меньше месяца (т.е. 31 января 2011 года), иначевы бы получили 01 февраля 2011 года
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)")