dd/mm/yyyy 格式的日期 return 1004 Excel 中的错误 Vba

Dates in dd/mm/yyyy format return 1004 Error in Excel Vba

我有这段代码,它有效:

Sub try3()
Dim dates(1 To 2) As Date
Dim values(1 To 2) As Double
Dim TIR As Double

dates(1) = #1/1/2015#
dates(2) = #1/1/2016#

values(1) = -1000
values(2) = 1101

TIR = Application.WorksheetFunction.xirr(values, dates)

End Sub

但是,如果我将日期更改为

dates(1) = #1/15/2015#
dates(2) = #1/15/2016#

,然后我收到错误 1004:

"Property Xirr of class WorksheetFuntion could not be obtained".

我的计算机日期格式是欧洲格式 (dd/mm/yyyy)。如果我将其更改为美国 (mm/dd/yyyy),则我的代码有效。

我想在我的系统中保留欧洲格式,我希望我的代码可以在任何计算机上运行,​​无论他们系统的日期格式如何

我试过如下定义日期,但我得到了同样的错误。

dates(1) = DateSerial(2015, 1, 15)
dates(2) = DateSerial(2016, 1, 15)

知道如何让 VBA 理解日期同时在我的计算机中保留欧洲格式吗?

谢谢

问题不在XIRR(),已经尽力了:

Sub TestMe()

    Dim TIR As Double
    TIR = Application.WorksheetFunction.Xirr(Array(-1000, 1101), Array(42019, 42384))
    Debug.Print TIR

End Sub

只需尝试使用 CLng 转换为 Long,无论您使用的是哪个日期,它都应该 return 4201942384 在 Excel, 如果你没有使用 Date1904 "feature".