【问题标题】:Microsoft word VBA Expiration DateMicrosoft word VBA 到期日期
【发布时间】: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

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

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:
    If Weekday(Date) = 2 Then ... 'Monday
    

    【讨论】:

    • 这很好用。如果我也需要它在特定时间运行怎么办?我很好奇这是否可能
    • 感谢您的反馈。您可以通过检查时间来扩展 if 语句,如本文所示:time operations。如果您想在特定时间启动宏,请查看:how to schedule an excel macro
    【解决方案2】:
    Public Function FindMonday(dt As Date) As Date
      Do Until WeekdayName(Weekday(dt)) = "Monday"
        dt = DateAdd("d", 1, dt)
      Loop
      FindMonday = dt
    End Function
    

    【讨论】:

      【解决方案3】:

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

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

      If Date &lt; (Date + 7) - (Weekday(Date) - Weekday(vbMonday)) Then 将完成这项工作。

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

      【讨论】:

        【解决方案4】:

        我通常会使用这个功能:

        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 日)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-28
          • 2020-10-15
          • 2019-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-31
          • 2015-11-10
          相关资源
          最近更新 更多