当前位置:  开发笔记 > 编程语言 > 正文

在Excel-DNA中标记功能IsMacroType的优点/缺点是什么?

如何解决《在Excel-DNA中标记功能IsMacroType的优点/缺点是什么?》经验,为你挑选了1个好方法。

仅当函数的ExcelFunction属性指定时,Excel-DNA才允许多次调用Excel的XLL API IsMacroType=true。我不清楚的是为什么仅将其添加到我的所有函数中并用它完成不是一个好主意;为什么?我假设不是默认值。

与Excel本身的函数计算的可变性有关吗?如果网上有不错的资源描述IsMacroType=true我的优缺点,我希望看到它!



1> Govert..:

IsMacroType=true属性会更改Excel-DNA在注册函数时使用的参数,此操作通过调用来完成,如此处所述xlfRegister:https : //msdn.microsoft.com/zh-cn/library/office/bb687900.aspx特别是, Excel-DNA在pxTypeText参数末尾添加一个“#” 。

该文件说:

在最后一个参数代码后放置#字符,pxTypeText 可使该函数具有与宏工作表上的函数相同的调用权限。这些如下:

该函数可以检索在此重新计算循环中尚未计算的单元格的值。

该函数可以调用任何XLM信息(第2类)函数,例如xlfGetCell

如果数字符号(#)不存在:

评估未计算的像元会导致xlretUncalced错误,并且一旦计算出像元,就会再次调用当前函数;

调用任何XLM信息函数而不是xlfCaller导致xlretInvXlfn 错误。

将功能标记为的一些缺点IsMacroType=true

它们不能是多线程的-即使注册为,Excel-DNA也不会在注册时添加“ $”后缀IsThreadSafe=true

如果它们包含至少一个object标记为类型的参数,[ExcelArgument(AllowReference=true)]则Excel会自动将该函数视为易失性的(即使该函数被显式标记为IsVolatile=false。)

此外,据我了解,在Excel计算过程中,依赖处理中对此类函数的处理方式有所不同。因此,您可能希望对工作表的计算顺序进行一些更改。我对此没有参考或复制。

我的建议是仅IsMacroType=true在例外情况下进行设置,当您知道确实需要这样做并且准备调查可能出现的任何问题时。

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有