我试图找到两个日期之间的日子。例如,在单元格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':应用程序定义或对象定义错误"
我对如何解决此问题有任何想法?谢谢。
答案 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
属性,它应该可以工作。