现在()正在给出一个错误

我在下面的代码中得到一个错误。

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

当时间是正确的,那么macros正在debugging, Now突出显示。 有谁能解决这个问题吗?

你没有得到一个实际的错误是吗? 这只是没有按预期工作。

马特Cremeens已经确定你的问题,我相信你已经宣布CurrentTime作为date数据types。 date数据types存储一个代表时间/date的数字,但是您也要求它存储string信息(AM / PM),这也不能被删除。

结果是单元格可以保存一个值,例如'10:30 AM',但是进入Datevariables的Format(Now(), "hh:mm AM/PM")代码产生了'10:30:00',所以这两个从来都不匹配string。 复制为马特build议,这应该工作( Dim CurrentTime As String )。

更好的是,使用date比较函数DateDiff : –

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

这就是说,如果现在的时间大于I1的值(到第二个),那么运行SendEmail

我现在没有环境来testing解决scheme,但从我记得你不需要2007年的括号,也不需要格式。

试试下面的代码,看看是否符合你的需求:

如果小时(现在) = ActiveSheet.Range(“I1”)然后

(……)

万一