VBA中的DateDiff范围

时间:2013-09-12 15:49:00

标签: excel vba excel-vba

好不好解释我想要实现什么以及这个问题具体是什么。

我想要实现的目标
最终游戏是拥有一个excel电子表格,其中包含注册日期和显示该注册日期何时需要更新的日期。一旦更新日期是注册日期的18个月,并且电子邮件(通过CDO)发送到excel电子表格中捕获的电子邮件地址。

此问题

将我的最终目标分解成碎片,我目前正试图找出如何完成日期计算,以确定18个月是否已经完成。

我正沿着这条线走下去

Sub TestDatediff()

Dim RegDate As Range
Dim UpDate As Range

Set RegDate = Sheets("Sheet1").Range("G4:G5")
Set UpDate = Sheets("Sheet1").Range("H4:H5")

Answer = DateDiff("m", RegDate, UpDate)
End Sub

RegDate 是初始日期, UpDate 是RegDate加上18个月。 答案将是2之间的结果差异。这将为我提供检查下一步...电子邮件的价值。

但是你可以猜到我没有到达任何地方。我有一种感觉你不能 DateDiff 一个范围?

任何有关如何接近最终游戏或如何解决当前问题的帮助都会很棒。

提前感谢您提供任何帮助

2 个答案:

答案 0 :(得分:1)

DateDiff不能用于范围,只能用于单个值。也许你可以在该范围内指向一个单独的单元格并从中创建一个单独的值,然后是DateDiff?或者使用一个变量,例如:

UpDate = Sheets("Sheet1").Cells("H4") & Sheets("Sheet1").Cells("H5")

这可能需要一些调整,因为我不确定每个单元格中有什么,但你明白了。

答案 1 :(得分:0)

这可能有所帮助:

Sub LoopRange()
Dim rCell As Range, rRng As Range

Set rRng = Worksheets("DDRegister").Range("g4:g6")
    For Each rCell In rRng.Cells
        rCell.Activate
        ActiveCell.Offset(0, 1).FormulaR1C1 = "=RC[-1]+500"
        ActiveCell.Offset(0, 2).FormulaR1C1 = "=RC[-1]-Today()"
    Next rCell
End Sub  

应该在G4:G6中注册日期,分别在H4:H6中添加500天,并将H4:H6与今天进行比较。