如果单元格date值在现在和24小时之间触发,则触发。 (Cdate.value)

我正在使用Excel 2010并编写一个VBA脚本,如果值是Cell,则需要在24小时之内执行某些操作。 我已经看了几十个话题,并找不到一种方法来有效地做到这一点。

这里有一些你需要知道的事情。

该脚本在公式范围内查找值(到期date):

Set FormulaRange = ThisWorkbook.Worksheets("Tasks").Range("F5:F35") On Error GoTo EndMacro: For Each FormulaCell In FormulaRange.Cells With FormulaCell 

假设F5具有以下值:

2016/3/9 9:50:00

如果范围F5:F35中的值等于现在或24小时,那么我会试着要求它执行“MyMsg = SentMsg”。

以下是我尝试过的一些方法,并且这样做是不成功的。

1.不工作,因为它不考虑小时和分钟。 它确实触发,如果date是明天,但我需要它来检查24小时,而不是+1天):

 If DateValue(CDate(.Value)) >= Date And DateValue(CDate(.Value)) <= (Date + 1) Then 

2.然后,我尝试将Round Down Now()调整到最后一刻(并且每天增加1440分钟),因为脚本每分钟自动运行以检查触发date:

 If DateValue(CDate(.Value)) >= Date And DateValue(CDate(.Value)) <= ((Round(Now * 1440, 0) +1440) / 1440) Then 

2.即使超过24小时也不起作用,但如果超过30小时则不起作用。 (这使我困惑)。 这可能是由于我使用> = Date? 我需要确保在今天的上午0:00到现在的+ 24小时之间发送提醒。

3.我也尝试使用以下内容,但结果与编号2相同:

 If DateValue(CDate(.Value)) >= Date And DateValue(CDate(.Value)) <= (Now + TimeSerial(24, 0, 0)) Then 

我是否在意这个? 有没有更容易,更简单的方法来做到这一点,如果没有。 我究竟做错了什么?

我相信其中一个问题是我不能在Now和Now之间使用某些东西。 因为脚本删除触发器,如果​​它是Now(),所以它必须是一个通用的date,现在+时间。

任何帮助将不胜感激,我完全卡在那里。

谢谢,弗朗西斯M.

有两种可能的方法在Excel VBA中将当前DateTime(即Now )添加到24小时; 下面的代码片段演示了这些函数的使用,还包括一个基于单元格“A3”中的date值介于Now和( Now + 24hrs)之间的条件的示例IF检查:

 Sub Add24h() ' one possible solution to add 24 hrs Range("A1").Value = Now + TimeSerial(24, 0, 0) ' another possible solution to add 24 hrs Range("A2") = DateAdd("h", 24, Now) 'sample logical statement to check if the value is in between two of dates If (Range("A3") >= Now And Range("A3") <= (Now + TimeSerial(24, 0, 0))) Then ' place you code here End If End Sub 

使用Excel工作表函数可以实现相同的function,如下所示:

 =IF(AND(A3>=NOW(),A3<=NOW()+1),TRUE,FALSE) 

希望这可能有帮助。