VBA 中本月的第一个星期一

bd5*_*528 1 ms-access vba

使用VBA可以获得当月的第一个星期一吗?我原以为以下内容会起作用:-

DateSerial(Year(Date), Month(Date), ((7 - Weekday(DateSerial(Year(Date), Month(Date), 7))) + 2) Mod 7)
Run Code Online (Sandbox Code Playgroud)

...但如果我今天使用它,我会得到一个日期 31/07/2017,这显然是上个月。

Vit*_*ata 5

编辑:这是一个可能的答案(所以谷歌中的第一个答案是错误的):

Public Function FirstMonday(myDate As Date) As Date

    Dim d As Date, w As Long
    d = DateSerial(Year(myDate), month(myDate), 1)
    w = Weekday(d, vbMonday)
    FirstMonday = d + IIf(w <> 1, 8 - w, 0)

End Function
Run Code Online (Sandbox Code Playgroud)

这就是你如何称呼它:

Public Sub Test
   debug.print FirstMonday(Now)
End sub
Run Code Online (Sandbox Code Playgroud)

总的来说,这里有一篇关于Excel 日期函数的有趣读物。