Manyasha, классный приём, но согласно документации был введён с 2010-й версии эксель, а у спрашивающего 2007-я. Возможно, работать не будет, ждём проверки пользователем =)
UPD_01: Если начать вводить в ячейку свою функцию и на этапе =MySum( нажать сочетание Контрол + Шифт + англ. А то нам автоматически заполнится строка. Если мы адекватно назвали переменные - мы всё поймём.
UPD_02: Как вариант, можно для каждой функции сделать дубль, добавив в конце названия "Help". Тогда, если забыл как работает твой механизм - введи в соседнюю ячейку эту же функцию без аргументов. Например:
[vba]
Код
Public Function Rio_Action(intX As Integer, strX As String) As String If CStr(intX) = strX Then Rio_Action = "Сходится" Else Rio_Action = "Не сходится" End Function
Public Function Rio_Action_Help() As String Rio_Action_Help = "Функция проверяет численное равенство аргументов: 1-й аргумент integer-число, 2-й аргумент текстовый." End Function
[/vba]
Manyasha, классный приём, но согласно документации был введён с 2010-й версии эксель, а у спрашивающего 2007-я. Возможно, работать не будет, ждём проверки пользователем =)
UPD_01: Если начать вводить в ячейку свою функцию и на этапе =MySum( нажать сочетание Контрол + Шифт + англ. А то нам автоматически заполнится строка. Если мы адекватно назвали переменные - мы всё поймём.
UPD_02: Как вариант, можно для каждой функции сделать дубль, добавив в конце названия "Help". Тогда, если забыл как работает твой механизм - введи в соседнюю ячейку эту же функцию без аргументов. Например:
[vba]
Код
Public Function Rio_Action(intX As Integer, strX As String) As String If CStr(intX) = strX Then Rio_Action = "Сходится" Else Rio_Action = "Не сходится" End Function
Public Function Rio_Action_Help() As String Rio_Action_Help = "Функция проверяет численное равенство аргументов: 1-й аргумент integer-число, 2-й аргумент текстовый." End Function
Function ЗАПАС(Расч_сопр, Найденное) ЗАПАС = ((Расч_сопр - Найденное) / Расч_сопр) * 100 End Function Sub Ф_ЗАПАС() Dim ФИМЯ As String 'Название функции Dim ФОПИС As String 'Описание функции Dim ФКАТ As String 'Категория для функции Dim Arg1 As String, Arg2 As String'Аргументы функции ФИМЯ = "ЗАПАС" ФОПИС = "Функция вычисляет запас недонапряженности" ФКАТ = "САПР" Arg1 = "Расчетное сопротивление в кгс/см2" Arg2 = "Найденное сопротивление" Application.MacroOptions Macro:=ФИМЯ, Description:=ФОПИС, Category:=ФКАТ, ArgumentDescriptions:=Array(Arg1, Arg2) End Sub
[/vba]
Для того, чтобы работало, нужно формулу вызвать один раз из диспетчера формул, т.е Fx нажать и выбрать формулу из своей категории, потом можно вводить в самой ячейке(=ЗАПАС(Арг1,Арг2))
Казанский
Не по теме:
В 2010 можно сделать Для восстановления исторической справедливости замечу, что этот метод работает в Excel 97, а может, и в более ранних
Нашёл в закромах (с кибера с 2011 года):
[vba]
Код
Function ЗАПАС(Расч_сопр, Найденное) ЗАПАС = ((Расч_сопр - Найденное) / Расч_сопр) * 100 End Function Sub Ф_ЗАПАС() Dim ФИМЯ As String 'Название функции Dim ФОПИС As String 'Описание функции Dim ФКАТ As String 'Категория для функции Dim Arg1 As String, Arg2 As String'Аргументы функции ФИМЯ = "ЗАПАС" ФОПИС = "Функция вычисляет запас недонапряженности" ФКАТ = "САПР" Arg1 = "Расчетное сопротивление в кгс/см2" Arg2 = "Найденное сопротивление" Application.MacroOptions Macro:=ФИМЯ, Description:=ФОПИС, Category:=ФКАТ, ArgumentDescriptions:=Array(Arg1, Arg2) End Sub
[/vba]
Для того, чтобы работало, нужно формулу вызвать один раз из диспетчера формул, т.е Fx нажать и выбрать формулу из своей категории, потом можно вводить в самой ячейке(=ЗАПАС(Арг1,Арг2))
Казанский
Не по теме:
В 2010 можно сделать Для восстановления исторической справедливости замечу, что этот метод работает в Excel 97, а может, и в более раннихHugo
Пояснения "из закромов" не работают - нужно выполнить макрос, и тогда всё работает. Но чтоб всегда было описание аргументов - нужно при каждом старте приложения выполнять этот макрос.
Заработало, но полностью только в 2010:
Пояснения "из закромов" не работают - нужно выполнить макрос, и тогда всё работает. Но чтоб всегда было описание аргументов - нужно при каждом старте приложения выполнять этот макрос.Hugo
Тогда можно все описание функции, вместе с описанием аргументов запихать в Description (использовала пример Hugo). Чтобы каждый раз не запускать макрос, запихала ее вызов в [vba]
Код
Private Sub Workbook_Open() Ф_ЗАПАС End Sub
[/vba]
Тогда можно все описание функции, вместе с описанием аргументов запихать в Description (использовала пример Hugo). Чтобы каждый раз не запускать макрос, запихала ее вызов в [vba]
Если у меня например пара десятков своих функций - это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать - маловато инфы в мастере видно... Гемор. Я сделал иначе - все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке). Т.е. некий свой мастер по выбору функции, со своим функционалом. И работает в любой версии. Файл не кину - 1. сейчас не могу 2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально
Так что только дарю идею.
Если у меня например пара десятков своих функций - это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать - маловато инфы в мастере видно... Гемор. Я сделал иначе - все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке). Т.е. некий свой мастер по выбору функции, со своим функционалом. И работает в любой версии. Файл не кину - 1. сейчас не могу 2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально
Попробовал по примеру Manyasha c помощью MacroOptions - работает. Запихал макрос в Workbook_Open.
Загвоздка в том, что при этом макрос с описанием функции привязвывается к конкретной книге. Есть ли возможность что бы описание макросов (а они у меня автоматически загружаютя при старте Excel) Загружалось автоматически без привязки к конкретной книге.
И это частный пример.. На фирме "блуждает" много полезных макросов, но не все ими постоянно пользуются. Хочется максимально облегчить людями доступ к этим функциям, хотя бы что бы они знали об их существовании.
Попробовал по примеру Manyasha c помощью MacroOptions - работает. Запихал макрос в Workbook_Open.
Загвоздка в том, что при этом макрос с описанием функции привязвывается к конкретной книге. Есть ли возможность что бы описание макросов (а они у меня автоматически загружаютя при старте Excel) Загружалось автоматически без привязки к конкретной книге.
И это частный пример.. На фирме "блуждает" много полезных макросов, но не все ими постоянно пользуются. Хочется максимально облегчить людями доступ к этим функциям, хотя бы что бы они знали об их существовании.MetalHeart