我正在使用Excel 2010并编写需要执行某些操作的VBA脚本,如果值为Cell,则介于现在和24小时之间。我查看过几十个主题,但找不到有效方法。
以下是您需要了解的一些事项。
脚本在公式范围中查找值(截止日期):
Set FormulaRange = ThisWorkbook.Worksheets("Tasks").Range("F5:F35")
On Error GoTo EndMacro:
For Each FormulaCell In FormulaRange.Cells
With FormulaCell
假设F5具有以下值:
3/9/2016 9:50:00 AM
如果F5:F35范围内的值等于现在或24小时,我会尝试要求它执行“MyMsg = SentMsg”。
以下是我尝试过的一些方法,并且没有成功。
1。不起作用,因为它不考虑小时和分钟。如果日期是明天,它会触发,但我需要它来检查24小时,而不是+1天)。:
If DateValue(CDate(.Value)) >= Date And DateValue(CDate(.Value)) <= (Date + 1) Then
2. 然后我尝试向下舍入()到最后一分钟(并在一整天内添加1440分钟),因为脚本每分钟自动运行以检查触发日期: / p>
If DateValue(CDate(.Value)) >= Date And DateValue(CDate(.Value)) <= ((Round(Now * 1440, 0) +1440) / 1440) Then
2。即使超过24小时也不会触发,但如果超过30小时则不会触发? (这让我很困惑)。这可能是因为我使用&gt; = Date?我需要确保它在今天上午0:00到现在+24小时之间发送提醒。
3。我也尝试使用以下内容,但结果与数字2相同:
If DateValue(CDate(.Value)) >= Date And DateValue(CDate(.Value)) <= (Now + TimeSerial(24, 0, 0)) Then
我是否过度思考这个?是否有更简单,更简单的方法,如果没有。我做错了什么?
我相信其中一个问题是我不能在Now和Now +之间使用。因为如果脚本超过了Now(),脚本将删除触发器,因此它必须是一般日期,现在是+时间。
任何帮助将不胜感激,我完全被困在那里。
谢谢, Francis M。
答案 0 :(得分:2)
在Excel VBA中,有两种方法可以将24小时添加到当前DateTime(即Now
);下面的代码片段演示了这些函数的使用,还包括基于单元格中的日期值&#34; A3&#34;的条件的样本IF
检查。在Now
和(Now
+ 24小时)之间:
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工作表功能可以实现相同的功能,如下所示:
=IF(AND(A3>=NOW(),A3<=NOW()+1),TRUE,FALSE)
希望这可能会有所帮助。