Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как задать подсказки параметрам пользовательской функции? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как задать подсказки параметрам пользовательской функции?
sttt Дата: Четверг, 26.02.2015, 15:59 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Как задать подсказки входным параметрам пользовательской функции?
 
Ответить
СообщениеКак задать подсказки входным параметрам пользовательской функции?

Автор - sttt
Дата добавления - 26.02.2015 в 15:59
Manyasha Дата: Четверг, 26.02.2015, 16:41 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
sttt, попробуйте так:
[vba]
Код
Public Function MySum(ByVal A As Range) As Double
     MySum = WorksheetFunction.Sum(A)
End Function

Public Sub DescriptForMySum()
     Application.MacroOptions "MySum", Description:="Моя функция", ArgumentDescriptions:=Array("А - диапазон")
End Sub
[/vba]
Сначала запустить макрос, потом найти функцию MySum в справке.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеsttt, попробуйте так:
[vba]
Код
Public Function MySum(ByVal A As Range) As Double
     MySum = WorksheetFunction.Sum(A)
End Function

Public Sub DescriptForMySum()
     Application.MacroOptions "MySum", Description:="Моя функция", ArgumentDescriptions:=Array("А - диапазон")
End Sub
[/vba]
Сначала запустить макрос, потом найти функцию MySum в справке.

Автор - Manyasha
Дата добавления - 26.02.2015 в 16:41
Rioran Дата: Четверг, 26.02.2015, 16:51 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
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]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Четверг, 26.02.2015, 17:19
 
Ответить
Сообщение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]

Автор - Rioran
Дата добавления - 26.02.2015 в 16:51
Hugo Дата: Четверг, 26.02.2015, 17:04 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Нашёл в закромах (с кибера с 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, а может, и в более ранних


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНашёл в закромах (с кибера с 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
Дата добавления - 26.02.2015 в 17:04
Hugo Дата: Четверг, 26.02.2015, 17:28 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Проверил сейчас на 2003 - ругается на ArgumentDescriptions. Т.е. всёж сомнительно что на 97 уже заработало...


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПроверил сейчас на 2003 - ругается на ArgumentDescriptions. Т.е. всёж сомнительно что на 97 уже заработало...

Автор - Hugo
Дата добавления - 26.02.2015 в 17:28
sttt Дата: Четверг, 26.02.2015, 18:24 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
что-то ничего не заработало. видимо он из справки берет инфу
 
Ответить
Сообщениечто-то ничего не заработало. видимо он из справки берет инфу

Автор - sttt
Дата добавления - 26.02.2015 в 18:24
Hugo Дата: Четверг, 26.02.2015, 23:09 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Заработало, но полностью только в 2010:

Пояснения "из закромов" не работают - нужно выполнить макрос, и тогда всё работает.
Но чтоб всегда было описание аргументов - нужно при каждом старте приложения выполнять этот макрос.
К сообщению приложен файл: 5607009.png (31.6 Kb)


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Четверг, 26.02.2015, 23:14
 
Ответить
СообщениеЗаработало, но полностью только в 2010:

Пояснения "из закромов" не работают - нужно выполнить макрос, и тогда всё работает.
Но чтоб всегда было описание аргументов - нужно при каждом старте приложения выполнять этот макрос.

Автор - Hugo
Дата добавления - 26.02.2015 в 23:09
Manyasha Дата: Пятница, 27.02.2015, 07:54 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
Тогда можно все описание функции, вместе с описанием аргументов запихать в Description (использовала пример Hugo). Чтобы каждый раз не запускать макрос, запихала ее вызов в
[vba]
Код
Private Sub Workbook_Open()
     Ф_ЗАПАС
End Sub
[/vba]
К сообщению приложен файл: 111.xlsm (18.2 Kb) · 4686921.png (15.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеТогда можно все описание функции, вместе с описанием аргументов запихать в Description (использовала пример Hugo). Чтобы каждый раз не запускать макрос, запихала ее вызов в
[vba]
Код
Private Sub Workbook_Open()
     Ф_ЗАПАС
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 27.02.2015 в 07:54
Hugo Дата: Пятница, 27.02.2015, 12:39 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Если у меня например пара десятков своих функций - это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать - маловато инфы в мастере видно...
Гемор.
Я сделал иначе - все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке).
Т.е. некий свой мастер по выбору функции, со своим функционалом.
И работает в любой версии.
Файл не кину -
1. сейчас не могу
2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально :)

Так что только дарю идею.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЕсли у меня например пара десятков своих функций - это ещё нужно столько макросов написать, и всех их выполнить при загрузке. Ещё и помощь бы не мешало написать - маловато инфы в мастере видно...
Гемор.
Я сделал иначе - все UDF расположил в надстройке, в ней есть вызов формы (из контекстного меню ячейки любого листа), где можно выбрать нужную UDF из списка (RAN сделал свою версию понавороченнее, опционально с разбиением по разделам), и там же на форме выводится описание выбранной функции. В описании можно написать что угодно, и сколько хочешь (вернее в актуальной версии сколько можно уместить в одной ячейке).
Т.е. некий свой мастер по выбору функции, со своим функционалом.
И работает в любой версии.
Файл не кину -
1. сейчас не могу
2. для публикации сыро, нужно дорабатывать. Но мне как всегда лениво и некогда, да и так нормально :)

Так что только дарю идею.

Автор - Hugo
Дата добавления - 27.02.2015 в 12:39
MetalHeart Дата: Вторник, 19.11.2019, 17:39 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Попробовал по примеру Manyasha c помощью MacroOptions - работает.
Запихал макрос в Workbook_Open.

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

И это частный пример.. На фирме "блуждает" много полезных макросов, но не все ими постоянно пользуются. Хочется максимально облегчить людями доступ к этим функциям, хотя бы что бы они знали об их существовании.
 
Ответить
СообщениеПопробовал по примеру Manyasha c помощью MacroOptions - работает.
Запихал макрос в Workbook_Open.

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

И это частный пример.. На фирме "блуждает" много полезных макросов, но не все ими постоянно пользуются. Хочется максимально облегчить людями доступ к этим функциям, хотя бы что бы они знали об их существовании.

Автор - MetalHeart
Дата добавления - 19.11.2019 в 17:39
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!