2015-12-03 357 views
1

如果功能的ExcelFunction属性指定IsMacroType=true,则只有Excel-DNA才允许进入Excel的XLL API。我不清楚的是,为什么简单地将它添加到我的所有功能中并且完成它并不是一个好主意;我假设它不是,否则它将是默认值。在Excel-DNA中标记函数IsMacroType有哪些优缺点?

与Excel自身的函数计算波动有关吗?如果网上有很好的资源描述IsMacroType=true的优缺点,我很乐意看到它!

回答

3

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的一些缺点:

  • 它们不能被多线程 - Excel的DNA不会增加注册时的“$”后缀,即使它们被标记为IsThreadSafe=true
  • 它们是否包含被标记[ExcelArgument(AllowReference=true)]则函数由Excel会自动认为是挥发性object类型的至少一个参数(即使函数被明确标记为IsVolatile=false。)

此外,我的理解是在Excel计算过程中,这些函数在依赖性处理中被区别对待。因此,您可能会预计工作表计算顺序会发生一些变化。不过,我没有参考或复制。

我的建议是只在特殊情况下设置IsMacroType=true,当您知道它确实是必需的并且您准备调查可能出现的任何问题时。

相关问题