有没有一种方法可以让UDF提供像本地Excel函数一样的描述,当用户单击Fxbutton时?

如果我在公式栏中键入=vlookup( (或任何其他本地Excel函数),然后单击公式左边的小Fxbutton,我将得到一个带有所有可用参数的函数参数提示符。参数,是从每个参数的input框中移动光标时,函数和每个参数的一个或两个句子描述。

当我input我的UDF的名称,然后单击Fx我得到一个input框的所有我的论点,但就是这样。 有没有一种方法可以添加原生Excel函数具有的那些相同types的描述?

是的,有一个隐藏的方法可以做到这一点:

在VBA中定义UDF后,转到Visual Basic编辑器( F2 )中的对象浏览器。 在这里,在顶部的下拉菜单中selectVBAProject 。 在下面的窗口中,导航到您的UDF并右键单击它 – selectProperties

在这里输入图像描述

在属性中,可以提供描述。

在这里输入图像描述

如果你需要更多的信息,比如如何将这个函数添加到某个类别,请查看这篇OzGrid文章 !

Type =FormulaName(进入单元格,然后按Ctrl+Shift+A ,它将填入参数的引用名称

我build议进一步调查Application.MacroOptions方法。 该方法允许您不仅提供该函数的描述,还提供每个参数的描述。 例如,如果您有一个名为“SampleFunction”的函数接受两个参数,那么您可以运行下面的代码,它会很好地为您的函数使用fxbutton。

 Private Sub RegisterMyFunction() Application.MacroOptions _ Macro:="SampleFunction", _ Description:="calculates a result based on provided inputs", _ Category:="My UDF Category", _ ArgumentDescriptions:=Array( _ "is the first argument. tell the user what it does", _ "is the second argument. tell the user what it does") End Sub 

编辑

我刚刚注意到你正在VBA中创buildUDF,因此我的回复可能不适用于你的情况。


查看一个名为Generic的Excel SDK示例项目。

这是一个最基本的骨架

紧跟在头部包含语句之后,您将注意到一个二维数组的声明,其中行表示XLL中的UDF数量,并且这些列用于描述特定的UDF

第一列用于UDF的名称,后跟包含表示UDF中每个参数的数据types的字母的string。

这些列可以用来为UDF中的每个参数放置描述文本

列的数量由具有最多参数数量的UDF确定,而具有较less参数的UDF使用空string作为超出此类UDF中的参数数量的值

但是当你点击Fx图标时,这些描述将显示在popup的对话框中