我有一些相當老的代碼在2007年以前的Excel版本中運行得很好。2007年,它引發運行時錯誤:run-time error 16 : expression is too complex
。表達很簡單,錯誤似乎與實際問題無關。有沒有方法評估在Excel 2007中更改日期類型
我在比較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中基本上是逼我投這些參數?兩者都應該評估爲日期數據類型?
我可以想象的唯一可能的解釋是,在Excel 2007中評估getContractEnd函數的返回值的方式發生了一些變化,但我找不到任何支持該文檔的文檔。
爲我工作。我很高興看到一些文檔解釋了爲什麼會出現這種行爲,但我可以通過修改返回類型並更改爲while循環來更改Excel 2007中的行爲。仍然無法在Excel 2003上打破這一點,但我會接受它更多的是關於Loop的問題,而不是關於從2003年到2007年的問題。謝謝。 – DaveParillo 2009-11-02 17:47:00