Now()发出错误

时间:2016-08-04 04:57:04

标签: excel excel-vba excel-2007 vba

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

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

当时间正确时,宏正在调试并突出显示Now。 有人能解决这个问题吗?

2 个答案:

答案 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")那么

(...)

结束如果