如果功能的ExcelFunction
属性指定IsMacroType=true
,则只有Excel-DNA才允许进入Excel的XLL API。我不清楚的是,为什么简单地将它添加到我的所有功能中并且完成它并不是一个好主意;我假设它不是,否则它将是默认值。在Excel-DNA中标记函数IsMacroType有哪些优缺点?
与Excel自身的函数计算波动有关吗?如果网上有很好的资源描述IsMacroType=true
的优缺点,我很乐意看到它!
如果功能的ExcelFunction
属性指定IsMacroType=true
,则只有Excel-DNA才允许进入Excel的XLL API。我不清楚的是,为什么简单地将它添加到我的所有功能中并且完成它并不是一个好主意;我假设它不是,否则它将是默认值。在Excel-DNA中标记函数IsMacroType有哪些优缺点?
与Excel自身的函数计算波动有关吗?如果网上有很好的资源描述IsMacroType=true
的优缺点,我很乐意看到它!
的IsMacroType=true
属性改变登记的功能,这与对xlfRegister
呼叫完成时的Excel-DNA使用参数,如记录这里:https://msdn.microsoft.com/en-us/library/office/bb687900.aspx特别地,Excel的DNA添加一个“#”的pxTypeText
的端部参数。
文档说:
加#号的在
pxTypeText
最后一个参数代码之后给人的功能相同的调用权限功能上 宏表。这些如下:
该函数可以检索尚未在此重新计算周期中计算的单元格的值。
该函数可以调用任何XLM信息(2类)函数,例如
xlfGetCell
。如果数字符号(#)不存在:
- 评估在
xlretUncalced
错误未计算细胞的结果,和当前的功能是 再次调用一旦小区已经被计算;- 调用任何XLM 以外的信息功能
xlfCaller
导致xlretInvXlfn
错误。
标志着一个功能IsMacroType=true
的一些缺点:
IsThreadSafe=true
。[ExcelArgument(AllowReference=true)]
则函数由Excel会自动认为是挥发性object
类型的至少一个参数(即使函数被明确标记为IsVolatile=false
。)此外,我的理解是在Excel计算过程中,这些函数在依赖性处理中被区别对待。因此,您可能会预计工作表计算顺序会发生一些变化。不过,我没有参考或复制。
我的建议是只在特殊情况下设置IsMacroType=true
,当您知道它确实是必需的并且您准备调查可能出现的任何问题时。