希望更改此Microsoft Word VBA代码,以使截止日期始终为每周的每周一,而不是特定日期:
Sub MyMacro()
ExpirationDate = #6/1/2013#
If Now() < ExpirationDate Then
'Rest of macro goes here
End if
End Sub
关于如何做到这一点的任何想法都会很棒:)
答案 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日)返回。