我正在制作Excel DNA excel插件。我已经使用“ ExcelFunctionAttribute”创建了一些用户定义的函数。现在,当我不带括号地调用此函数时,它将返回一个随机数。
假设我的功能是:
[ExcelFunction(Description= "Hello Function", IsVolatile = true)]
public static string Hello(string name)
{
return "Hello "+name;
}
我有3种情况:
如果我在excel中以= Hello(“ XYZ”)的形式调用该函数,则会返回Hello XYZ。
如果我在Excel中以= Hello()的形式调用该函数,则会出错。
如果我在excel中以= Hello形式调用该函数,它将给出一个随机数,例如-17453245。
在这种情况下,我没有给出括号。 所以有人可以告诉我为什么会这样吗?我该如何解决这个问题?
谢谢。
答案 0 :(得分:0)
调用不带括号的函数时看到的数字不是随机数,而是用户定义函数的“注册ID”。这是Excel分配给注册UDF的内部名称的内部ID。
当公式仅具有不带括号的UDF名称时,加载项永远不会被Excel调用,因此该加载项实际上无法返回诸如#NAME之类的其他内容?。
在某些情况下,甚至可以使用此“功能”来构建功能更强大的功能,您可以在函数名称中不带括号并在内部对其进行求值。
但是对于正常使用,我不知道您可以采取任何措施来解决此内置Excel行为。