我对我使用的dateadd语句有疑问。想法是在星期几弹出表格,您可以选择它以添加截止日期。 IE:您选择星期一,如果是星期一,那么它将为您提供星期一的到期日,但是如果是星期二,那么将使用下一个星期一作为您的到期日。
问题在于,如果是星期一,而您选择了星期一,则会给您下一个星期一作为到期日,而不是当日。
这是我正在使用的语句...
DateAdd('d',8-Weekday(Date(),4),Date())
我不确定如何进行此更正,因为这对我而言似乎是正确的。 任何帮助将不胜感激。
答案 0 :(得分:1)
这似乎可行。
thisday = date()
dateadd("d",7-weekday(thisday, vbTuesday), thisday)
答案 1 :(得分:1)
这也应该起作用:
DateAdd('d',(8-Weekday(Date(),4)) mod 7,Date())
答案 2 :(得分:0)
如果您不需要使用1行解决方案,那么一个小的功能将非常方便。它使用Weekday()
检查当前日期,如果是vbMonday
,则返回该日期。如果没有,它将给出下一个星期一。
Public Function NextMonday(selectedDate As Date) As Date
Dim returnMonday As Date
If Weekday(selectedDate) = vbMonday Then
NextMonday = selectedDate
Else
NextMonday = selectedDate + 8 - Weekday(selectedDate, vbMonday)
End If
End Function
它有效:
Sub TestMe()
'Monday:
Debug.Print NextMonday(DateSerial(2019, 6, 10))
Debug.Print NextMonday(DateSerial(2019, 6, 17))
'Not Monday:
Debug.Print NextMonday(DateSerial(2019, 6, 7))
Debug.Print NextMonday(DateSerial(2019, 6, 11))
End Sub