使用 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 类将如何影响它?