result.Number 包含正确的 return 值时的电子表格齿轮 #value
Spreadsheet Gear #value when result.Number contains the correct return value
我正在为 Spreadsheet Gear 开发一个将 VBA 代码移植到 C# 的项目。我的团队已成功移植了大约 150 个自定义 Excel 插件函数。对于其中一个函数,我们的回归电子表格 returns #value 用于 148 次函数调用中的 4 次,其余返回预期结果。当我单步执行代码时,一切都按预期运行并且正确的结果被写入 result.Number,但在 Spreadsheet Gear 中解析为 #value。我完全莫名其妙!请帮助我 - 我什至不知道从哪里开始。
函数结束如下:
if (retval < 0)
{
result.Text = UtilFuncs.ErrorNum(retval);
}
else
{
result.Number = retval;
}
retval
包含从调用单独的 DLL 返回的正确结果。当我将鼠标悬停在 result.Number
上时,它也包含正确的结果。但是我得到了一个#value。
如有必要,我可以提供更多代码。我的大问题是为什么它对除其中 4 个以外的所有人都有效。
没有更具体的示例,几乎不可能对此提供明确的答案。不过,我会在黑暗中拍摄。
如果您使用 IArguments methods like IArguments.GetNumber(...),
GetLogical(...), etc., to access your custom function's arguments, you might read through the documentation for these. For instance, see the following remark for GetLogical(...):
- 如果可能,将非逻辑参数转换为逻辑值。
否则,此方法返回 false,并且 一个内部标志是
set 表明发生错误,导致结果
公式出错.
因此,如果您将非布尔值传递给期望布尔值的参数,您的函数最终可能会设置此内部 "error" 标志,从而导致 #VALUE!无论您在方法末尾设置结果对象是什么,都会为此单元格显示错误。
如果是这种情况,可以使用 IArguments.ClearError(...) 方法清除错误。
我正在为 Spreadsheet Gear 开发一个将 VBA 代码移植到 C# 的项目。我的团队已成功移植了大约 150 个自定义 Excel 插件函数。对于其中一个函数,我们的回归电子表格 returns #value 用于 148 次函数调用中的 4 次,其余返回预期结果。当我单步执行代码时,一切都按预期运行并且正确的结果被写入 result.Number,但在 Spreadsheet Gear 中解析为 #value。我完全莫名其妙!请帮助我 - 我什至不知道从哪里开始。
函数结束如下:
if (retval < 0)
{
result.Text = UtilFuncs.ErrorNum(retval);
}
else
{
result.Number = retval;
}
retval
包含从调用单独的 DLL 返回的正确结果。当我将鼠标悬停在 result.Number
上时,它也包含正确的结果。但是我得到了一个#value。
如有必要,我可以提供更多代码。我的大问题是为什么它对除其中 4 个以外的所有人都有效。
没有更具体的示例,几乎不可能对此提供明确的答案。不过,我会在黑暗中拍摄。
如果您使用 IArguments methods like IArguments.GetNumber(...), GetLogical(...), etc., to access your custom function's arguments, you might read through the documentation for these. For instance, see the following remark for GetLogical(...):
- 如果可能,将非逻辑参数转换为逻辑值。 否则,此方法返回 false,并且 一个内部标志是 set 表明发生错误,导致结果 公式出错.
因此,如果您将非布尔值传递给期望布尔值的参数,您的函数最终可能会设置此内部 "error" 标志,从而导致 #VALUE!无论您在方法末尾设置结果对象是什么,都会为此单元格显示错误。
如果是这种情况,可以使用 IArguments.ClearError(...) 方法清除错误。