Now() 报错

Now() is giving an error

我在下面的代码中遇到错误。

Dim CurrentTime As Date
CurrentTime = Format(Now(), "hh:mm AM/PM")
If CurrentTime = ActiveSheet.Range("I1") Then
    Call SendEMail
End If

当时机成熟时,宏正在调试,Now 高亮显示。 谁能解决这个问题?

我现在没有测试解决方案的环境,但据我所知,2007 年你不需要括号,也不需要格式。

试试下面的代码,看看是否符合您的需要:

如果小时(现在) = ActiveSheet.Range("I1") 那么

(...)

如果

结束

您没有收到实际错误,是吗?它只是没有按预期工作。

Matt Cremeens 已确定您的问题 我相信,您已将 CurrentTime 声明为日期数据类型。日期数据类型存储代表 time/date 的 number,但是您要求它也存储字符串信息 (AM/PM),这是不可能的正在被剥离。

结果是单元格 1 可能包含类似“10:30 AM”的值,但进入 Date 变量的 Format(Now(), "hh:mm AM/PM") 代码导致“10:30:00”,因此两者永远不会匹配为字符串。按照 Matt 的建议进行复制,这应该有效 (Dim CurrentTime As String)。

更好的是,使用日期比较功能DateDiff:-

If DateDiff("s",ActiveSheet.Range("I1"),Time()) > 0 then
    SendEmail
End If

这是说如果现在的时间大于 I1 中的值(精确到秒)则 运行 SendEmail