Excel dna Excel DNA中标记函数IsMacroType的优点/缺点是什么?

Excel dna Excel DNA中标记函数IsMacroType的优点/缺点是什么?,excel-dna,Excel Dna,只有当函数的excelffunction属性指定IsMacroType=true时,Excel DNA才允许对Excel的XLL API进行多次调用。我不清楚的是,为什么简单地将它添加到我所有的函数中,并使用它不是一个好主意;我假设它不是,否则它将是默认值 是否与Excel本身计算函数的波动性有关?如果网上有一个很好的资源来描述IsMacroType=true的优缺点,我很想看看 属性IsMacroType=true更改Excel DNA在注册函数时使用的参数,这是通过调用xlfRegister

只有当函数的
excelffunction
属性指定
IsMacroType=true
时,Excel DNA才允许对Excel的XLL API进行多次调用。我不清楚的是,为什么简单地将它添加到我所有的函数中,并使用它不是一个好主意;我假设它不是,否则它将是默认值


是否与Excel本身计算函数的波动性有关?如果网上有一个很好的资源来描述
IsMacroType=true
的优缺点,我很想看看

属性
IsMacroType=true
更改Excel DNA在注册函数时使用的参数,这是通过调用
xlfRegister
完成的,如下所述:特别是,Excel DNA在
pxTypeText
参数的末尾添加了一个“#”

文件说:

pxTypeText
为函数提供与上的函数相同的调用权限 宏表。详情如下:

  • 该函数可以检索在此重新计算周期中尚未计算的单元格值

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

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

  • 计算未计算的单元格会导致
    xlretUncalced
    错误,当前函数为 计算完单元格后再次调用
  • 调用任何XLM 非
    xlfCaller
    的信息功能会导致
    xlretInvXlfn
    错误
将函数标记为
IsMacroType=true
的一些缺点:

  • 它们不能是多线程的-Excel DNA在注册时不会添加“$”后缀,即使它们标记为
    IsThreadSafe=true
  • 如果它们至少包含一个标记为
    [ExcelArgument(AllowReference=true)]
    的类型为
    object
    的参数,则Excel会自动将该函数视为易失性(即使该函数被显式标记为
    IsVolatile=false
此外,我的理解是,在Excel计算期间,这些函数在依赖关系处理中的处理方式不同。因此,您可能希望图纸的计算顺序发生一些变化。不过,我没有这方面的参考或复制品

我的建议是仅在例外情况下设置
IsMacroType=true
,前提是您知道确实需要设置,并且准备调查可能出现的任何问题