VBA - 在特定的日子安排任务

VBA - 在特定的日子安排任务

因此,我正在通过工作中的大量 Excel 项目学习 VBA。我正在尝试看看我是否可以让我编写的宏在特定时间自动执行。我读过关于如何编写脚本来打开工作表并运行宏的文章。这不是我的问题,尽管我还没有尝试过,但更多的是关于如何在我想要的日子运行它。

我的宏基于其他数据源,因此我需要在同事截止日期后的第二天运行此宏。截止日期是每月的最后一个星期三和倒数第二个星期三。我需要在后一天(星期四)运行我的宏,但如何引用那一天有点棘手。

以下是我试图避免的一些潜在陷阱的示例。

A.) 每月的最后一个星期三也是每月的最后一天。这意味着我的宏需要在每月 1 日运行。

B.) 这个月可能包括 5 个星期三,实际上就像这个月(2023 年 8 月)一样,这意味着我不能依赖“第三”或“第四”个星期三。

有人知道我这些天怎样才能运行我的宏吗?

答案1

您可以用数学计算所有这些,月​​份、日期是数字,而星期几是常数,如此处所述。

https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/weekday-function

任何月的第一天都很容易,最后一天总是(下个月的第一天)-1

从那里你可以看到今天是星期几,使用上面的参考,如果是 4 你就在那里,如果少于 4,则添加它与 4 之间的天数差,如果超过则减去它。

有关如何进行所有日期计算的参考资料在这里。

https://www.automateexcel.com/vba/date-functions/

从那里,在打开时,确定您希望在哪一天触发它,并确定今天是否是那一天,然后相应地运行。

或者在打开时启动一个计时器,并在该计时器内进行相应的评估和运行。

答案2

答案@GeneMoody-Action1提供的帮助让我找到了这个解决方案。

Function checkIsFinal()
    
    Dim todayDate As Date
    Dim prelimDate As Date
    Dim finalDate As Date
    'Set date variable to last day of month
    todayDate = Application.WorksheetFunction.EoMonth(Date, 0)
    'Subtract 1 day at a time until selecting the last Wednesday of the month. 
    Do While Weekday(todayDate) <> 4
        todayDate = DateAdd("d", -1, todayDate)
    Loop
    ' Run reports the thursday before for prelim, and the day after for final. 
    ' This allows for the last day to be Wednesday, and the day running the
    ' report to be into the new month. 
        finalDate = DateAdd("d", 1, todayDate)
        prelimDate = DateAdd("d", -6, todayDate)
        todayDate = Date
   'Checking to see if today is the date to run the report or not. 
    If todayDate = prelimDate Then
        MsgBox "todayDate = prelimDate"
        'Call Forecast1(False, True)
        'Call Forecast2(False, True)
    ElseIf todayDate = finalDate Then
        MsgBox "todayDate = finalDate"
        'Call Forecast1(True, True)
        'Call Forecast2(True, True)
    End If

    
End Function

这只是一个简单的函数,它允许我在 Excel 中的表单上不需要复选框,并且我可以使用 vbs 脚本和任务计划程序调用此函数,如果日期正确,它将执行需要执行的操作。如果不正确,它将退出。再次感谢您的帮助。

相关内容