我在模块中有我的VBA功能。我从宏调用我的函数。我在 autoexec 宏中有它。因此,每次打开我的数据库时,它都会运行该功能。到目前为止,这很有效。
现在我试图让功能在星期一早上在特定时间范围内运行 ,例如:周一早上8点至中午12:00,不是每天数据库需要仅在星期一更新 ..我找不到办法。我的功能代码如下:
Public Function DownloadFromS()
On Error GoTo DownloadErrorHandler
Dim stDocName As String
stDocName = "getThemFromS"
DoCmd.RunMacro stDocName
Exit_DownloadS:
Exit Function
DownloadErrorHandler:
MsgBox "Sorry Sto is offline, re-establish our connection"
Resume Exit_DownloadS
End Function
我对VBA来说相当新,所以有点难以理解它......
答案 0 :(得分:0)
您需要使用Weekday()
函数和时间检查其工作日的当前日期,正如@HansUP建议的那样。关键部分是确保程序只运行一次,而不是每次打开应用程序。所以你需要做的是确保应用程序知道你以前是否已经运行它。
我的解决方案如下:
Boolean
并且只有一行,因此表格如下所示:======================== | ID | ProcedureExecuted | |====|===================| | 1 | False | ========================
False
,否则您将其保留。True
。伪代码,仅供参考:
If [ExecuteConditionsOK] = True AND [ProcedureExecuted] = False Then Run your procedure Set [ProcedureExecuted] to True Elseif [ExecuteConditionsOK] = False Then Set [ProcedureExecuted] to False End if
简而言之,只有当ProcedureExecuted
标志为false时才会运行该过程,该标志只能在日期不符合您的条件时设置,因此应用程序将在下次运行时运行。< / p>
我希望这个解决方案很明确,因为我没有时间编写实际的VBA代码,但是从我的头脑中,你需要使用这些函数:Weekday
,{{1 }}。如果您感到挣扎,请在评论中发布。