Microsoft Word VBA到期日期

时间:2017-07-26 18:44:55

标签: vba ms-word word-vba

希望更改此Microsoft Word VBA代码,以使截止日期始终为每周的每周一,而不是特定日期:

Sub MyMacro()

ExpirationDate = #6/1/2013#
If Now() < ExpirationDate Then

    'Rest of macro goes here

End if
End Sub

关于如何做到这一点的任何想法都会很棒:)

4 个答案:

答案 0 :(得分:1)

If Weekday(Date) = 2 Then ... 'Monday

答案 1 :(得分:1)

Public Function FindMonday(dt As Date) As Date
  Do Until WeekdayName(Weekday(dt)) = "Monday"
    dt = DateAdd("d", 1, dt)
  Loop
  FindMonday = dt
End Function

答案 2 :(得分:0)

ExpirationDate = (Date + 7) - (Weekday(Date) - Weekday(vbMonday))

此公式将始终返回下周一的日期,由“+7”指定 您无需声明变量Expirationdate

If Date < (Date + 7) - (Weekday(Date) - Weekday(vbMonday)) Then 我会做的。

请注意Now返回日期/时间值,而Date返回日期整数。如果时间非常重要,则必须将其添加。在上述公式中加0.5,以确定下周一中午12点的到期时间。

答案 3 :(得分:0)

我通常会使用这个功能:

Public Function PreviousMonday(CurrentDate As Date) As Date
    PreviousMonday = CurrentDate - Weekday(CurrentDate - 2)
End Function

然后您可以将其称为:
PreviousMonday(Date()) - 如果今天(28日)进入,将于2017年7月24日返回。 PreviousMonday(CDATE("1 July 2017")) - 将于26/06/2017返回 PreviousMonday(42430)将于2016年2月29日(42430 = 2016年3月1日)返回。