我怎么才能像1:40,2:40,3:40那样,每隔N分钟运行宏呢?等等。即使我在1:35运行它,它也应该只在提到的第N分钟执行,比如1:40。有人能帮我做这个吗?
发布于 2021-02-22 11:30:46
您可以使用下面的函数返回要分配给计时器的时间。
Function NextTime(ByVal StartAt As Integer, _
ByVal Interval As Integer) As Double
' StartAt is the minute of an hour
Dim Fun As Double
Dim m As Integer
Fun = Now()
StartAt = StartAt Mod Interval
m = Right(Format(Fun, "hh:mm"), 2) ' current minute
For m = m To (m + Interval)
If m Mod (StartAt + Interval) = 0 Then Exit For
Fun = Fun + (1 / 24 / 60)
Next m
NextTime = Fun
End Function函数调用需要两个参数,这两个参数都在分钟内给出,这意味着它们都是<=60。Interval是两次调用之间的分钟数。StartAt是您想要开始计数间隔的分钟。因此,在StartAt =0和Interval = 20的情况下,NextTime将根据当前时间返回20过去、40过去或按小时的时间。如果StartAt =6,当间隔保持为20时,函数将返回6 past、26 past和46 past。
NextTime(40, 60)会每小时返回一个小时过后40分钟的时间。使用此sub进行试用和测试。
Private Sub Try()
Debug.Print Format(NextTime(6, 20), "dd/mm/yy hh:mm")
End Sub发布于 2021-02-22 11:44:50
假设你有一个名为‘Macro1’的宏...在Macro1的第一行代码中插入
Application.OnTime Now + TimeValue("00:40:00"), "Macro1" ' runs every 40 minutes...然后,在Thisworkbook模块中添加以下宏。
Private Sub Workbook_Open()
Call Macro1
End Sub我认为这个进程将接管您的系统,并且您将在运行其他进程时遇到问题,这将与此进程竞争,特别是在运行Excel应用程序时,除非您总是从其他Excel实例(不断运行或等待运行的实例)中启动Excel作为新实例。
https://stackoverflow.com/questions/66309012
复制相似问题