使用 ExcelDna 在 C# 中制作简单的 UDF 时遇到问题
该函数使用这个:
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 类将如何影响它?