当前位置:  开发笔记 > 编程语言 > 正文

如何制作一个在Excel中定期执行的宏?

如何解决《如何制作一个在Excel中定期执行的宏?》经验,为你挑选了1个好方法。

如何定期执行一些VBA代码,完全自动化?



1> Joe..:

您可以使用Application.OnTime来安排定期执行的宏.例如,使用下面的代码创建一个模块.调用"启用"以启动计时器运行.

关闭工作簿时停止计时器运行非常重要:这样做可以处理Workbook_BeforeClose并调用"Disable"

Option Explicit

Private m_dtNextTime As Date
Private m_dtInterval As Date

Public Sub Enable(Interval As Date)
    Disable
    m_dtInterval = Interval
    StartTimer
End Sub

Private Sub StartTimer()
    m_dtNextTime = Now + m_dtInterval
    Application.OnTime m_dtNextTime, "MacroName"
End Sub

Public Sub MacroName()
    On Error GoTo ErrHandler:
    ' ... do your stuff here

    ' Start timer again
    StartTimer
    Exit Sub
ErrHandler:
    ' Handle errors, restart timer if desired
End Sub

Public Sub Disable()
    On Error Resume Next ' Ignore errors
    Dim dtZero As Date
    If m_dtNextTime <> dtZero Then
        ' Stop timer if it is running
        Application.OnTime m_dtNextTime, "MacroName", , False
        m_dtNextTime = dtZero
    End If
    m_dtInterval = dtZero
End Sub

或者,您可以以类似的方式使用Win32 API SetTimer/KillTimer函数.


...要完全自动化此精细答案,请将Call MacroName()添加到Workbook_Open()事件中.这样,无论何时打开xls/xlsm,MacroName都会在没有任何用户干预的情况下启动其特征.
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有