我在下面的代码中收到错误。
Dim CurrentTime As Date
CurrentTime = Format(Now(), "hh:mm AM/PM")
If CurrentTime = ActiveSheet.Range("I1") Then
Call SendEMail
End If
当时间正确时,宏正在调试并突出显示Now
。
有人能解决这个问题吗?
答案 0 :(得分:2)
你没有得到实际的错误吗?它没有按预期工作。
Matt Cremeens已经确定了您的问题,您已将CurrentTime
声明为日期数据类型。日期数据类型存储表示时间/日期的数字,但是您要求它存储字符串信息(AM / PM),这样就无法将其删除。
结果是单元格1可能具有类似于<< 30:30 AM'但进入Format(Now(), "hh:mm AM/PM")
变量的Date
代码导致' 10:30:00',因此两者永远不会匹配为字符串。按照Matt的建议复制,这应该有效(Dim CurrentTime As String
)。
更好的是,使用日期比较功能DateDiff
: -
If DateDiff("s",ActiveSheet.Range("I1"),Time()) > 0 then
SendEmail
End If
这就是说现在的时间是否大于I1
(到第二个)的值,然后运行SendEmail
。
答案 1 :(得分:0)
我现在没有环境来测试解决方案,但是从我记忆中你不需要2007年的括号,而且你也不需要这种格式。
尝试以下代码,看看是否符合您的需求:
如果小时(现在) = ActiveSheet.Range(" I1")那么
(...)
结束如果