Даты в формате дд / мм / гггг возвращают 1004 Ошибка в Excel Vba - PullRequest
0 голосов
/ 25 октября 2018

У меня есть этот код, и он работает:

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:

«Не удалось получить свойство Xirr класса WorksheetFuntion».

Формат даты моего компьютера - европейский (дд / мм / гггг).Если я изменю его на американский (мм / дд / гггг), мой код будет работать.

Я хотел бы сохранить европейский формат в моей системе и хотел бы, чтобы мой код можно было запускать с любого компьютера,независимо от формата даты их системы

Я пытался определить даты следующим образом, но я получаю ту же ошибку.

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

Любая идея, как заставить VBA понимать даты при сохранении европейскогоформат в моем компьютере?

Спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Проблема не в XIRR(), она делает все возможное:

Sub TestMe()

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

End Sub

Просто попробуйте привести к Long с CLng, в зависимости от того, с какой датой вы работаете, она должнаверните 42019 и 42384 в Excel, если вы не используете Date1904 «функцию».

...