You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于单元格值每日仅触发一次Excel宏?现有代码遇重复执行问题

解决Excel宏每日仅触发一次邮件的问题

核心思路是记录最后发送邮件的日期,每次触发时先判断今日是否已发送过,避免重复执行。具体实现如下:

1. 准备日期存储单元格

选一个不会被误操作的单元格(比如Z1)用来记录最后发送邮件的日期。右键该单元格→设置单元格格式→保护→勾选「隐藏」,防止误编辑。

2. 修改Worksheet_Calculate事件代码

替换原事件代码为以下内容,加入日期判断逻辑:

Private Sub Worksheet_Calculate()
    ' 两个触发条件:C15值低于72,且今日未发送过邮件
    If Range("C15").Value < 72 And Range("Z1").Value <> Date Then
        Call Send_Email
        ' 发送成功后更新最后发送日期为当天
        Range("Z1").Value = Date
    End If
End Sub

3. 首次初始化

第一次使用前,把Z1单元格的值清空(或设为一个早于今日的日期),确保当天的触发条件能正常生效。

原理说明

  • Date函数会自动获取系统当前日期,跨天时Range("Z1").Value <> Date会自动变为True,第二天满足价格条件时会再次触发邮件。
  • 你的电脑24/7运行,无需考虑文件重启导致的日期丢失问题,单元格存储的日期会一直保留在文件中。

内容的提问来源于stack exchange,提问作者HunterN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:15:57