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
。
我在下面的代码中遇到错误。
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
。