15

如果我=vlookup(在公式栏中键入(或任何其他本机 Excel 函数),然后单击公式左侧的小 Fx 按钮,我会得到一个包含所有可用参数的函数参数提示。在该提示中,函数参数下方是函数和每个参数的一两句话描述,当您将光标从每个参数的输入框中移动时。

当我输入我的 UDF 的名称并单击 Fx 时,我会得到一个输入框,用于输入我的所有参数,但仅此而已。有没有一种方法可以添加与原生 Excel 函数相同的有用类型的描述?

4

5 回答 5

32

我建议进一步调查 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
于 2014-02-20T19:27:57.060 回答
32

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

于 2013-02-06T15:15:25.117 回答
27

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

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

在此处输入图像描述

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

在此处输入图像描述

如果您需要更多信息,例如如何将功能添加到某个类别,请查看这篇OzGrid 文章

于 2013-02-06T15:15:11.390 回答
3

编辑

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


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

它是一个可以构建的最低限度的骨架

在头包含语句之后,您会注意到二维数组的声明,其中行表示 XLL 中的 UDF 数量,列用于描述特定 UDF

第一列用于 UDF 的名称,后跟一个字符串,其中包含表示 UDF 中每个参数的数据类型的字母。

这些列可用于将每个参数的描述文本放在 UDF 中

列数由参数数量最多的 UDF 确定,参数较少的 UDF 使用空字符串作为超出此类 UDF 中参数数量的值

但随后这些描述会显示在您点击 Fx 图标时弹出的对话框中

于 2013-02-06T15:00:43.473 回答
1

像我在下面创建的那样创建函数:函数 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
于 2018-04-02T12:11:49.503 回答