Function Monday(MYDate as Date) as date
'功能:计算给定日期所在周的周一日期
'参数:MyDate--给定日期
'示例:计算下周周一日期 Msgbox Monday(Date)
dim n as long
n=1-Weekday(Mydate,vbMonday)
Monday=DateAdd("d",n,MyDate)
END Function
Function Monday(MYDate as Date,m as long) as date
'功能:计算给定日期所在周的周一日期
'参数:MyDate--给定日期,m--0为本周,1为下周,-1为前周
'示例:计算下周周一日期 Msgbox Monday(Date,1)
dim n as long
n=1-Weekday(Mydate,vbMonday)
Monday=DateAdd("d",n,MyDate)
Monday=DateAdd("d",m*7,Monday)
END Function
版友yinyt 同志的真正需求不是仅仅找到周一,而是应该找到某个周的周一和周日日期,这样就可以用Between And 这样的结构来构成筛选的准则了。于是我觉得函数返回的不应该是一个数,而应该是一个数组,这个数组包含了周一和周日的日期。基于此,便将函数最终修改为如下:
Function MYWeekday(MYDate As Date, m As Long) As Variant
'功能:计算给定日期所在周的周一日期与周日日期数组
'参数:MyDate--给定日期,m--0为本周,1为下周,-1为前周
'示例:计算下周周一日期 Msgbox Monday(Date,1)
Dim A(1)
Dim D As Date
Dim n As Long
n = 1 - Weekday(MYDate, vbMonday)
D = DateAdd("d", n, MYDate)
D = DateAdd("d", m * 7, D)
A(0) = D
A(1) = DateAdd("d", 6, D)
MYWeekday = A
End Function