使用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,这显然是上个月。
编辑:这是一个可能的答案(所以谷歌中的第一个答案是错误的):
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 日期函数的有趣读物。