如果单元格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)
希望这可能有帮助。