在VBA中的Excel公式中使用日期变量

时间:2014-10-09 15:27:18

标签: excel vba variables excel-vba

我试图找到两个日期之间的日子。例如,在单元格C2中我有1/1/2014,而在C3中我有12/31/2014。如果我在C4中使用DATEDIF公式,我会得到364天的正确答案。但是,我尝试只使用宏中的变量。目前我有:

Sub dates()


Dim NumDays As Integer
Dim StartDate, EndDate As Date

StartDate = Cells(2, 3)
EndDate = Cells(3, 3)
Range("C4").FormulaR1C1 = "=DATEDIF('" & StartDate & "','" & EndDate & "',""d"")"

End sub

这给了我错误:"运行时错误' 1004':应用程序定义或对象定义错误"

我对如何解决此问题有任何想法?谢谢。

4 个答案:

答案 0 :(得分:2)

实际上不鼓励使用DATEDIF(),因为它是一个古老的公式。而是在vba中内置了一个DateDiff函数。你要做的是:

Range("C4").Value = DateDiff("d", StartDate, EndDate)

Here是DateDiff函数的解释。我建议你看看。

答案 1 :(得分:2)

它是日期值周围的引号。删除单引号,它会将它们视为正确的日期值。基本上,#1/1/2014#与'#1/1 / 2014#'不一样。这个功能。

Sub dates()


Dim NumDays As Integer
Dim StartDate as Date, EndDate As Date

StartDate = Cells(2, 3)
EndDate = Cells(3, 3)
Range("C4").FormulaR1C1 = "=DATEDIF(" & StartDate & "," & EndDate & ",""d"")"

End sub

答案 2 :(得分:1)

我认为这会做你想要的。

Sub dates()


Dim NumDays As Integer
Dim StartDate, EndDate As Date

StartDate = Cells(2, 3)
EndDate = Cells(3, 3)
NumDays = EndDate - StartDate
Range("C4").Value = NumDays

End Sub

答案 3 :(得分:-1)

您正在使用.FormulaR1C1媒体资源。如果切换到.Formula属性,它应该可以工作。