我很累,无意中尝试在VBA中使用Application.WorksheetFunction.Year()
而不是Year()
,但这仍然让我感到困惑,我试图弄清楚为什么会出错。输入以下代码:
Sub Test()
Dim mydate As Date
'In cell A1 on the activesheet is the short date "12/30/2019"
mydate = Range("A1").Value
Debug.Print Application.WorksheetFunction.Year(mydate)
End Sub
当maxdate
是Date
时,结果为
运行时错误'438':对象不支持此属性或方法。
当maxdate
是Long
时,将导致相同的错误。只是为了踢球,我尝试了Integer
(由于日期的序列号大于Integer
的上限,所以显然不起作用),所以会出现溢出错误。
为什么我不能在这里使用Application.WorksheetFunction.Year()
或Application.WorksheetFunction.Month()
?我还尝试使用CLng()
将其转换为我认为函数期望的结果,即相同的结果(运行时错误'438')。
答案 0 :(得分:2)
没有Year
的{{1}}方法,因为Intellisense或documentation将迅速显示。由于WorksheetFunction
和VBA.Year
函数已经存在,因此不需要VBA.Month
版本。
只需使用WorksheetFunction
函数。