Есть ли способ сделать 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