【发布时间】:2017-07-26 18:44:55
【问题描述】:
希望更改此 Microsoft Word VBA 代码,使到期日期始终为每周一,而不是特定日期:
Sub MyMacro()
ExpirationDate = #6/1/2013#
If Now() < ExpirationDate Then
'Rest of macro goes here
End if
End Sub
任何关于如何做到这一点的想法都会很棒:)
【问题讨论】:
希望更改此 Microsoft Word VBA 代码,使到期日期始终为每周一,而不是特定日期:
Sub MyMacro()
ExpirationDate = #6/1/2013#
If Now() < ExpirationDate Then
'Rest of macro goes here
End if
End Sub
任何关于如何做到这一点的想法都会很棒:)
【问题讨论】:
If Weekday(Date) = 2 Then ... 'Monday
【讨论】:
Public Function FindMonday(dt As Date) As Date
Do Until WeekdayName(Weekday(dt)) = "Monday"
dt = DateAdd("d", 1, dt)
Loop
FindMonday = dt
End Function
【讨论】:
ExpirationDate = (Date + 7) - (Weekday(Date) - Weekday(vbMonday))
此公式将始终返回下周一的日期,由“+7”指定
你不需要声明变量Expirationdate。
If Date < (Date + 7) - (Weekday(Date) - Weekday(vbMonday)) Then
将完成这项工作。
注意Now 返回一个日期/时间值,而Date 返回一个日期整数。如果时间很重要,则必须将其添加进去。将上述公式添加 0.5 以确定下周一中午 12 点的到期时间。
【讨论】:
我通常会使用这个功能:
Public Function PreviousMonday(CurrentDate As Date) As Date
PreviousMonday = CurrentDate - Weekday(CurrentDate - 2)
End Function
然后您可以将其命名为:PreviousMonday(Date()) - 如果今天(28 日)输入,将返回 24/07/2017。
PreviousMonday(CDATE("1 July 2017")) - 2017 年 6 月 26 日返回PreviousMonday(42430) 2016 年 2 月 29 日返回(42430 = 2016 年 3 月 1 日)。
【讨论】: