Microsoft Lab
全部软件
Excel日期与时间(Date and Time)约 3 分钟

Delay a Macro 延迟执行宏

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


建立要延迟执行的程序

Sub reminder()
  MsgBox "Don't forget your meeting at 14:30"
End Sub

延迟 5 秒后执行

在按钮绑定的代码里写:

Application.OnTime Now() + TimeValue("00:00:05"), "reminder"

点击按钮后,程序不会立刻跳出提醒,而是等 5 秒后才执行 reminder。


改成在指定时刻执行

Application.OnTime TimeValue("14:00:00"), "reminder"

把参数从「现在 + 延迟」换成一个固定的时间点,到了这个时间就会自动跳出提醒。

📌 想要不用手动点按钮就自动提醒,可以把这段代码放进 Workbook Open 事件里,一打开工作簿就排定提醒——但工作簿必须保持打开状态,提醒才会准时触发。


两种写法怎么选

写法适合场景备注
Now() + TimeValue(...)从「现在」起算,延迟固定秒数/分钟后执行常用于「点击后 N 秒提醒」
TimeValue("固定时刻")不管现在几点,都在某个固定时刻执行常用于「每天到点自动提醒」

学完你会

常见错误

  • 把 reminder 写成字符串以外的形式(比如忘记加引号),OnTime 找不到要执行的程序名称
  • 排定了提醒时间,但工作簿在提醒时间到之前就被关闭了,提醒不会触发
  • 混淆「现在 + 延迟秒数」和「指定固定时刻」这两种写法,用错了参数格式

Sources

Blog / Website:

  1. Delay a Macro
只记在你的浏览器里,换设备不会同步。