Vba 如何通过Excel工作表安排基于时间的循环?

Vba 如何通过Excel工作表安排基于时间的循环?,vba,excel,Vba,Excel,我正在Excel中创建一个仪表板,它连接到数据库并每15分钟更新一次。我已经使用下面的代码为此创建了一个调度程序。然而,我也希望在15分钟的等待时间内,仪表板在所有工作表中循环显示每一张工作表1分钟。如何在代码中构建第二级计划 my_过程是连接到数据库并更新工作簿中数据的宏 Public Sub scheduler_1() Call my_procedure Call scheduler_2 End Sub Public Sub scheduler_2() RunWhe

我正在Excel中创建一个仪表板,它连接到数据库并每15分钟更新一次。我已经使用下面的代码为此创建了一个调度程序。然而,我也希望在15分钟的等待时间内,仪表板在所有工作表中循环显示每一张工作表1分钟。如何在代码中构建第二级计划

my_过程是连接到数据库并更新工作簿中数据的宏

Public Sub scheduler_1()
    Call my_procedure
    Call scheduler_2
End Sub

Public Sub scheduler_2()
    RunWhen = Now + TimeValue("00:15:00")
    Application.OnTime RunWhen, "scheduler_1"
End Sub

看来我很快就解决了。我在scheduler_2宏中添加了一个循环

Public Sub scheduler_2()
    RunWhen = Now + TimeValue("00:15:00")
    Application.OnTime RunWhen, "scheduler_1"
Application.ScreenUpdating = True
Do While Now < RunWhen
    Sheet5.Activate
    Call custom_wait(5)
    Sheet3.Activate
    Call custom_wait(5)
Loop

End Sub

你可以每分钟运行一个调度程序来循环浏览所有的工作表,并在
调度程序2
中使用
静态日期
变量计算15分钟后的时间,然后运行
我的程序

我看不出你是如何循环浏览所有工作表的,你只有两张工作表。这只是一个例子,我现在可以根据仪表板的受众使用一些和所有的工作表。我主要关心的不是循环本身,而是在等待下一次永久宏调用时循环。
Public Sub custom_wait(ByVal i As Integer)
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + i
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
End Sub