寻找改变这种Microsoft Word中VBA代码,以便截止日期始终是每星期的星期一不是一个具体的日期:的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代码,以便截止日期始终是每星期的星期一不是一个具体的日期:的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())
- 将返回24/07/2017如果进入今天(28日)。 PreviousMonday(CDATE("1 July 2017"))
- 将返回26/06/2017
PreviousMonday(42430)
将返回29/02/2016(42430 = 2016年3月1日)。
这个很好用。如果我需要它在特定的时间运行呢?我很好奇,如果这是可能的 – MAJ10
感谢您的反馈。您可以通过检查时间来扩展if语句,如以下帖子所示:[time operations](https://stackoverflow.com/a/8924251/8355222)。 如果您想在特定时间启动宏,请查看:[如何安排Excel宏](https://stackoverflow.com/a/8915209/8355222) – user8355222