当前日期的Dateadd上的MS Access VBA

时间:2019-06-12 14:01:35

标签: vba ms-access access-vba

我对我使用的dateadd语句有疑问。想法是在星期几弹出表格,您可以选择它以添加截止日期。 IE:您选择星期一,如果是星期一,那么它将为您提供星期一的到期日,但是如果是星期二,那么将使用下一个星期一作为您的到期日。

问题在于,如果是星期一,而您选择了星期一,则会给您下一个星期一作为到期日,而不是当日。

这是我正在使用的语句...

 DateAdd('d',8-Weekday(Date(),4),Date())

我不确定如何进行此更正,因为这对我而言似乎是正确的。 任何帮助将不胜感激。

3 个答案:

答案 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