首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel Macros VBA在第n分钟运行

Excel Macros VBA在第n分钟运行
EN

Stack Overflow用户
提问于 2021-02-22 09:40:13
回答 2查看 60关注 0票数 1

我怎么才能像1:40,2:40,3:40那样,每隔N分钟运行宏呢?等等。即使我在1:35运行它,它也应该只在提到的第N分钟执行,比如1:40。有人能帮我做这个吗?

EN

回答 2

Stack Overflow用户

发布于 2021-02-22 11:30:46

您可以使用下面的函数返回要分配给计时器的时间。

代码语言:javascript
复制
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进行试用和测试。

代码语言:javascript
复制
Private Sub Try()
    Debug.Print Format(NextTime(6, 20), "dd/mm/yy hh:mm")
End Sub
票数 1
EN

Stack Overflow用户

发布于 2021-02-22 11:44:50

假设你有一个名为‘Macro1’的宏...在Macro1的第一行代码中插入

代码语言:javascript
复制
Application.OnTime Now + TimeValue("00:40:00"), "Macro1" ' runs every 40 minutes...

然后,在Thisworkbook模块中添加以下宏。

代码语言:javascript
复制
Private Sub Workbook_Open()
Call Macro1
End Sub

我认为这个进程将接管您的系统,并且您将在运行其他进程时遇到问题,这将与此进程竞争,特别是在运行Excel应用程序时,除非您总是从其他Excel实例(不断运行或等待运行的实例)中启动Excel作为新实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66309012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档