Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 电子表格档位#结果时的值。数字包含正确的返回值_C#_Spreadsheetgear - Fatal编程技术网

C# 电子表格档位#结果时的值。数字包含正确的返回值

C# 电子表格档位#结果时的值。数字包含正确的返回值,c#,spreadsheetgear,C#,Spreadsheetgear,我正在做一个将VBA代码移植到C#的项目,用于电子表格设备。我的团队已经成功移植了大约150个自定义Excel加载项函数。对于其中一个函数,我们的回归电子表格为148个函数调用中的4个返回#值,其余的返回预期结果。当我逐步完成代码时,一切都按预期运行,正确的结果写入result.Number,但在电子表格中解析为#value。我完全困惑了!请帮帮我-我甚至不知道从哪里开始 函数的结尾如下所示: if (retval < 0) { result.Text = UtilFuncs.E

我正在做一个将VBA代码移植到C#的项目,用于电子表格设备。我的团队已经成功移植了大约150个自定义Excel加载项函数。对于其中一个函数,我们的回归电子表格为148个函数调用中的4个返回#值,其余的返回预期结果。当我逐步完成代码时,一切都按预期运行,正确的结果写入result.Number,但在电子表格中解析为#value。我完全困惑了!请帮帮我-我甚至不知道从哪里开始

函数的结尾如下所示:

if (retval < 0)
{
     result.Text = UtilFuncs.ErrorNum(retval);
}
else
{
     result.Number = retval;
}
if(retval<0)
{
result.Text=UtilFuncs.ErrorNum(retval);
}
其他的
{
结果:数字=返回值;
}
retval
包含调用单独DLL返回的正确结果。当我将鼠标悬停在
result.Number
上时,它也包含正确的结果。但我得到了一个#值

如果需要,我可以提供更多的代码。我的大问题是,为什么它对除4个以外的所有人都有效。
如果没有更具体的例子,就不可能给出一个明确的答案。不过,我还是要在黑暗中试一试

如果你使用像IArguments(…)这样的方法, (…)等,要访问自定义函数的参数,可以通读这些参数的文档。例如,请参见以下有关(…)的备注:

  • 如果可能,非逻辑参数将转换为逻辑值。 否则,此方法将返回false,并且将显示一个内部标志 指示已发生错误的集合,导致 公式将成为错误
因此,如果将一个非布尔值传递到一个参数中,而该参数需要一个布尔值,那么函数可能最终设置了这个内部“error”标志,从而产生一个#值!无论在方法末尾设置了什么结果对象,此单元格显示错误


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

谢谢!我使用了IArguments.ClearError()方法,现在得到了预期的结果。似乎所有参数都是使用正确的GetNumber或GetText检索的。