当结果时,电子表格齿轮#Value包含正确的返回值



我正在处理一个项目移植VBA代码到C#的电子表格齿轮。我的团队已成功移植了大约150个自定义Excel加载项功能。对于其中一个函数,我们的回归电子表格将返回#Value,其中48个功能呼叫中的4个,其余的返回预期结果。当我逐步浏览代码时,所有内容都按预期运行,并且正确的结果将写入结果。我完全困惑!请帮助我 - 我什至不知道从哪里开始。

函数的末尾如下:

if (retval < 0)
{
     result.Text = UtilFuncs.ErrorNum(retval);
}
else
{
     result.Number = retval;
}

retval包含从调用到单独的DLL返回的正确结果。当我悬停在result.Number上时,它还包含正确的结果。但是我得到了#Value。

我可以在必要时提供更多代码。我的最大问题是为什么除4个以外的所有人都适用。

没有更具体的示例,就不可能为此提供确定的答案。不过,我会在黑暗中射击。

如果您使用IARGOMELST getLogical(...)等要访问您的自定义函数的论点,您可以通过这些文档阅读。例如,请参见以下评论(...):

  • 如果可能的话,将非逻辑参数转换为逻辑值。否则,该方法将返回false,内部标志为设置表明发生了错误,导致公式为错误

因此,如果您将非树注的值传递到您期望布尔值的参数中,则您的功能可能最终会设置此内部"错误"标志,因此导致#Value!无论您在方法末尾设置结果对象如何,都将显示此单元格的错误。

如果是这种情况,您可以使用iarguments.clearerror(...)方法清除错误。

最新更新