Есть ли способ сделать UDF, который дает описание, например, собственные функции Excel, когда пользователь нажимает кнопку Fx?

Если я наберу =vlookup( (или любую другую собственную функцию Excel) в строке формул, а затем нажмите маленькую кнопку Fx слева от формулы, я получаю приглашение аргументов Function со всеми доступными аргументами. В этом приглашении ниже функциональных аргументов представлено одно или два описания предложения функции и каждого аргумента при перемещении курсора из каждого поля ввода аргументов.

Когда я ввожу имя моего UDF и нажимаю Fx, я получаю окно ввода для всех моих аргументов, но это все. Есть ли способ добавить те же полезные типы описаний, которые имеют встроенные функции Excel?

Ответ 1

Да, есть несколько скрытый способ сделать это:

После того, как вы определили свой UDF в VBA, перейдите в Обозреватель объектов в редакторе Visual Basic (F2). В верхнем раскрывающемся списке выберите VBAProject. В окне ниже перейдите к своему UDF и щелкните его правой кнопкой мыши - выберите Properties:

enter image description here

В свойствах вы можете предоставить описание.

enter image description here

Если вам нужна дополнительная информация, например. как добавить функцию в определенную категорию, проверьте эту статью OzGrid!

Ответ 2

Введите =FormulaName( в ячейку, а затем нажмите Ctrl+Shift+A, и он заполнит ссылочное имя аргументов

Ответ 3

Я предлагаю продолжить исследование метода 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

Ответ 4

ИЗМЕНИТЬ

Я только что отметил, что вы создаете UDF в VBA, поэтому мой ответ может быть неприменим к вашей ситуации.


Посмотрите на один из примеров проектов в Excel SDK под названием Generic.

Это минимальный скелет, основанный на

Сразу после заголовка include заявления вы увидите объявление двухмерного массива, в котором строки представляют количество UDF в вашем XLL, а столбцы используются для описания конкретного UDF

Первый столбец используется для имени UDF, за которым следует строка, содержащая буквы, которые представляют тип данных каждого параметра в вашем UDF.

Эти столбцы могут использоваться для ввода текста описания для каждого из ваших параметров в UDF

Количество столбцов определяется UDF, который имеет наибольшее количество параметров, а UDF, у которых меньше параметров, используют пустые строки как значения, которые превышают количество параметров в таких UDF

Но тогда эти описания будут отображаться в появившемся диалоговом окне, когда вы нажимаете на значок Fx

Ответ 5

Создайте функцию, как я создал ниже: Функция CompanyNames:

Function CompanyNames(CompanyCode As Integer, Data As Range) As String

CompanyNames = WorksheetFunction.VLookup(CompanyCode, Data, 2, False)


End 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