У меня есть довольно старый код, который прекрасно работает в версиях Excel до 2007 года. В 2007 году он выдает ошибку времени выполнения: run-time error 16 : expression is too complex
. Выражение довольно простое, и ошибка кажется не связанной с реальной проблемой.
Я пытаюсь сравнить 2 даты.
Пример кода следующий:
Function getContractEnd() As Date
getContractEnd = Range("ContractEndDate").Value
End Function
Sub Foo()
Dim currentDate As Date
Do
'stuff
Loop Until currentDate > getContractEnd 'run-time error 16
End Sub
Excel 2007 работает нормально при изменении условия на:
Loop Until DateValue(currentDate) > DateValue(getContractEnd)
Почему Excel 2007 по сути заставляет меня приводить эти параметры? Оба должны оценивать типы данных Date?
Единственное возможное объяснение, которое я могу придумать, это то, что что-то изменилось в том, как возвращаемое значение из функции getContractEnd оценивается в Excel 2007, но я не могу найти какую-либо документацию, подтверждающую это.