【问题标题】:How do I Run a Workbook_Open code only during the weekdays? (M-F)如何仅在工作日运行 Workbook_Open 代码? (男-女)
【发布时间】:2021-02-01 00:01:10
【问题描述】:

我有一系列 Application.OnTime 代码需要在一周中的特定日子 (M-F) 运行。我不需要这些代码在周六/周日运行。我如何编码以仅运行 M-F? Application.OnKey 代码需要每天运行。 谢谢


    'Set keyboard shortcuts
    Application.OnKey "^+{UP}", "Sheet4.SpinButton1_SpinDown"
    Application.OnKey "^+{DOWN}", "Sheet4.SpinButton1_SpinUp"
    
    If Weekday(Now()) > 2 And Weekday(Now()) < 7 Then Call Workbook_Open
    
    Application.OnTime TimeValue("17:15:00"), "Saveit"
    Application.OnTime TimeValue("17:17:00"), "MASTER"
    Application.OnTime TimeValue("17:33:00"), "MASTER"
    Application.OnTime TimeValue("17:59:00"), "MASTER"
    Application.OnTime TimeValue("18:21:00"), "MASTER"
    Application.OnTime TimeValue("18:45:00"), "MASTER"
    Application.OnTime TimeValue("19:03:00"), "MASTER"
    Application.OnTime TimeValue("19:23:00"), "MASTER"
    Application.OnTime TimeValue("19:41:00"), "MASTER"

End Sub```

【问题讨论】:

  • 呃,你尝试了什么?我假设您尝试检查星期几并且遇到了问题。你用什么代码来检查,你遇到了什么问题?
  • Sub SecondSub() If Weekday(Now()) &gt; 2 And Weekday(Now()) &lt; 7 Then Call Workbook_Open End Sub
  • 我会把它放在Workbook_Open sub 中,将.OnTime 函数括起来。
  • 我对您将 .OnTime 函数括起来的意思感到困惑。我在问题中更新了我的代码
  • 删除 call workbook_open 并将 end if 放在您只想在工作日运行的那些行之后。

标签: excel vba weekday


【解决方案1】:

如果您的代码在没有 IF 的情况下可以正常工作,那么我在 cmets 中的建议应该可以工作。

这是您修改代码以响应我的 cmets 的方式吗?

我使用了Date 而不是Now,但它们应该给出相同的结果。在VBA中也不需要Now之后的()

我也使用了&gt;=2,因为你表示 M-F,即:你想包括星期一

...
'Set keyboard shortcuts
    Application.OnKey "^+{UP}", "Sheet4.SpinButton1_SpinDown"
    Application.OnKey "^+{DOWN}", "Sheet4.SpinButton1_SpinUp"
    
If Weekday(Date) >= 2 And Weekday(Date) < 7 Then 
    
    Application.OnTime TimeValue("17:15:00"), "Saveit"
    Application.OnTime TimeValue("17:17:00"), "MASTER"
    Application.OnTime TimeValue("17:33:00"), "MASTER"
    Application.OnTime TimeValue("17:59:00"), "MASTER"
    Application.OnTime TimeValue("18:21:00"), "MASTER"
    Application.OnTime TimeValue("18:45:00"), "MASTER"
    Application.OnTime TimeValue("19:03:00"), "MASTER"
    Application.OnTime TimeValue("19:23:00"), "MASTER"
    Application.OnTime TimeValue("19:41:00"), "MASTER"

End If

End Sub

【讨论】:

  • 由于这是在 Workbook_Open 上,我是否必须每天打开此文件才能使代码自行重置?谢谢
  • 到目前为止,我已经对这段代码进行了测试,应该很好。再次感谢@Ron
  • @ANDANDAND Workbook_Open 只会在工作簿打开时触发。有关按计划运行的各种方法,请查看VBA for smarties: Application.OnTime
猜你喜欢
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2017-01-30
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多