如果我=vlookup(
在公式栏中键入(或任何其他本机 Excel 函数),然后单击公式左侧的小 Fx 按钮,我会得到一个包含所有可用参数的函数参数提示。在该提示中,函数参数下方是函数和每个参数的一两句话描述,当您将光标从每个参数的输入框中移动时。
当我输入我的 UDF 的名称并单击 Fx 时,我会得到一个输入框,用于输入我的所有参数,但仅此而已。有没有一种方法可以添加与原生 Excel 函数相同的有用类型的描述?
我建议进一步调查 Application.MacroOptions 方法。该方法不仅允许您提供函数的描述,还允许您提供每个参数的描述。例如,如果您有一个名为“SampleFunction”的函数,它接受两个参数,您可以运行以下命令,它将很好地设置您在函数中使用 fx 按钮:
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
在单元格中键入=FormulaName(
,然后按Ctrl+Shift+A
,它将填写参数的引用名称
是的,有一种隐藏的方法可以做到这一点:
在 VBA 中定义 UDF 后,转到 Visual Basic 编辑器 ( F2) 中的对象浏览器。在这里,在顶部下拉菜单中,选择VBAProject
。在下面的窗口中,导航到您的 UDF 并右键单击它 - 选择Properties
:
在属性中,您可以提供描述。
如果您需要更多信息,例如如何将功能添加到某个类别,请查看这篇OzGrid 文章!
编辑
我刚刚注意到您正在 VBA 中创建 UDF,因此我的回复可能不适用于您的情况。
查看 Excel SDK 中名为 Generic 的示例项目之一。
它是一个可以构建的最低限度的骨架
在头包含语句之后,您会注意到二维数组的声明,其中行表示 XLL 中的 UDF 数量,列用于描述特定 UDF
第一列用于 UDF 的名称,后跟一个字符串,其中包含表示 UDF 中每个参数的数据类型的字母。
这些列可用于将每个参数的描述文本放在 UDF 中
列数由参数数量最多的 UDF 确定,参数较少的 UDF 使用空字符串作为超出此类 UDF 中参数数量的值
但随后这些描述会显示在您点击 Fx 图标时弹出的对话框中
像我在下面创建的那样创建函数:函数 CompanyNames:
Function CompanyNames(CompanyCode As Integer, Data As Range) As String
CompanyNames = WorksheetFunction.VLookup(CompanyCode, Data, 2, False)
End Function
运行以下代码一次,您将在 Function 中获得参数描述
Sub DescribeFunction()
Dim FuncName As String
Dim FuncDesc As String
Dim Category As String
Dim ArgDesc(1 To 2) As String
FuncName = "CompanyNames"
FuncDesc = "Returns the Company Name"
ArgDesc(1) = "Provide the Company Code"
ArgDesc(2) = "Select Range to lookup"
Application.MacroOptions _
Macro:=FuncName, _
Description:=FuncDesc, _
Category:=Category, _
ArgumentDescriptions:=ArgDesc
End Sub