gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:29:31 28 4
gpt4 key购买 nike

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

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

最佳答案

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

文档说:

Placing a # character after the last parameter code in pxTypeText gives the function the same calling permissions as functions on a macro sheet. These are as follows:

  • The function can retrieve the values of cells that have not yet been calculated in this recalculation cycle.

  • The function can call any of the XLM information (Class 2) functions, for example, xlfGetCell.

If the number sign (#) is not present:

  • evaluating an uncalculated cell results in an xlretUncalced error, and the current function is called again once the cell has been calculated;
  • calling any XLM information function other than xlfCaller results in an xlretInvXlfn error.


将函数标记为 IsMacroType=true 的一些缺点:
  • 它们不能是多线程的 - Excel-DNA 在注册时不会添加“$”后缀,即使它们被标记为 IsThreadSafe=true
  • 如果它们至少包含一个标记为 object[ExcelArgument(AllowReference=true)] 类型的参数,那么 Excel 会自动将该函数视为 volatile(即使该函数被明确标记为 IsVolatile=false 。)

  • 此外,我的理解是,在 Excel 计算期间的依赖处理中,此类函数的处理方式不同。因此,您可能会期望工作表计算的顺序发生一些变化。不过,我对此没有引用或复制。

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

    关于excel-dna - Excel-DNA中标记函数IsMacroType的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058110/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com