我有一個問題,當我在C#製作一個簡單的UDF與ExcelDna當xlCoerce返回一個值時,它是否再次評估單元格中的公式?
功能使用此:
var reference = XlCall.Excel(XlCall.xlfCaller);
string oldValue = ((ExcelReference)reference).GetValue().ToString();
它會通過調用造成循環引用錯誤(GetValue
試圖重新評估細胞UDF)除非我指定IsMacroType=true
,它將函數標記爲第2類(將#
添加到公式中)。
我不知道它將如何連接到循環錯誤。但我想ExcelReference.GetValue()
有時會評估細胞,有時不會?
看來類2隻影響xlfCaller
,
後來我檢查的源代碼ExcelReference
,事實證明,它實際上是xlCoerce被調用。
此外,我注意到當我在單元格上按F2時,無論單元格是什麼,GetValue()
都返回0。當我按Ctrl + Alt + F9強制重新計算全部時,GetValue()
返回以前的計算值。
有人能詳細說明我這一點嗎?無論如何,xlCoerce如何在單元值/公式上工作,以及類2如何影響它?