c# - 如果我在没有括号的情况下调用函数,为什么我在 Excel DNA 中的用户定义的 excel 函数会返回随机数?
问题描述
我正在制作一个 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。
在我的这种情况下,我没有给出括号。那么有人可以告诉我为什么会这样吗?我该如何解决这个问题?
提前致谢。
解决方案
调用不带括号的函数时看到的数字不是随机数,而是用户定义函数的“注册 ID”。它是 Excel 分配给注册 UDF 的内部名称的内部 ID。
当公式只有不带括号的 UDF 名称时,Excel 永远不会调用加载项,因此加载项实际上无法返回类似 #NAME? 的其他内容。
在某些情况下,甚至可以使用此“功能”构建更强大的函数,您可以使用不带括号的函数名称并在内部对其进行评估。
但是对于正常使用,我不知道您可以做些什么来解决这个内置的 Excel 行为。
推荐阅读
- python-3.x - 如何执行函数并保存在新的 csv 文件中?
- javascript - 如何从 JSON 对象的“名字”这样的键中获取值?
- html - CSS网格中的元素不跨越两行
- regex - 在记事本++中使用正则表达式替换文本
- youtube-data-api - 使用 API 从 YouTube 直播频道播放列表
- python - 是否存在可以修复错误时间格式的模块?
- scheme - 如何在 Racket/Plait 中给出特定类型的函数作为参数?
- html - 具有响应式圆角的响应式矩形
- r - 如何使用反引号样式的代码块将 rander rmarkdown 文件渲染为 markdown 文件
- javascript - 反应按钮没有响应点击