【问题标题】:VBA - Application.OnTime works overnight but not over weekendVBA - Application.OnTime 通宵工作,但周末不工作
【发布时间】:2017-06-08 08:37:25
【问题描述】:

我有一份希望在星期一早上运行的报告,所以每周报告都准备好在办公室开门时使用。宏运行一个主报表,保存它的不同版本,还打开和更新几个 Access 数据库。

我使用 Application.OnTime 来自动执行此操作。我已经对其进行了数周的测试,当我将其设置为通宵运行(即第二天)时它运行良好,但我无法让它在周一早上从周五下午离开时开始工作。

这是计时码:

Private Sub Workbook_Open()

Application.OnTime TimeValue("05:00:00"), "Timer"

End Sub


Sub Timer()

If Weekday(Date) = vbMonday Then
Call MainMacro
Else
Exit Sub
End If

End Sub

我运行 Application.OnTime 子程序,然后让工作簿保持打开状态。

谢谢

【问题讨论】:

  • 您的日期设置正确吗??
  • 我不确定,代码在一夜之间运行良好。 YowE3K 在下面的回答似乎可行

标签: excel vba


【解决方案1】:

一旦发生OnTime 事件,并且您的Timer 子例程已被调用,并且您选择什么都不做,那就结束了。

您实际上需要在周六设置一个新的OnTime 事件,因此它将在周日运行,然后在周一运行。

Private Sub Workbook_Open()
    Application.OnTime TimeValue("05:00:00"), "Timer"
End Sub

Sub Timer()
    If Weekday(Date) = vbMonday Then
        MainMacro
    Else
        Application.OnTime TimeValue("05:00:00"), "Timer"
    End If
End Sub

【讨论】:

  • 这很有道理,谢谢。我会在周末对其进行测试并报告。
  • 呃不,也许我很笨,但是我还能如何测试它是否会提前 2 天起作用?
  • 刚记得回来报告。有效。谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
  • 2017-08-14
相关资源
最近更新 更多