Страницы: 1
RSS
Сделать для UDF окно, подсказывающее на каком аргументе функции ты стоишь (при набирании функции)
 
При написании формулы можно следить, какой именно аргумент ты в данный момент набираешь (см. скрин)  
 
а если ты набираешь UDF такой подсказки нет  
 
допустим есть UDF plus(arg1, arg2), которая суммирует два аргумента  
при написании в ячейку =plus(  
подсказочное окно (как в скрине) не выходит  
 
в 2007 и в 2010 есть такое: при написании формулы выходит список с формулами, там UDF есть, но дальше, когда ты уже открыл скобку и перешёл к аргументам, подсказочное окно (как в скрине) не выходит  
 
Можно ли сделать такое подсказочное окно для UDF ?  
 
если это сложновато объяснить, то дайте ссылки, где про это можно почитать  
 
P.S. Речь именно об окне как в скрине, а не о разных справках, которые выходят после нажатия какой-то кнопки.  
Разница от справки в том, что это окно выходит автоматом и не требует дополнительного нажатия какой-то кнопки  
 
ЗАРАНЕЕ СПАСИБО
 
вот скрин
 
Для мастера функций можно сделать через Application.MacroOptions. Непосредственно при вводе - не документировано, по крайней мере, на такой вопрос так ответил автор ExcelDNA, позволяющее писать надстройки в .NET для Excel.
 
Ребят, а с xll-функциями так случайно не получится?  
http://blogs.msdn.com/b/andreww/archive/2007/12/09/building-an-excel-xll-in-c-c-with-vs-2008.aspx  
 
строка:  
L"Arg1, Arg2",             // Arg name in Func wizard  
Это не оно?
 
subtlety - к сожалению статья на английском :-( и потом если я правильно понял, там речь о том, как в С++ создать xll, а я с С++ не знаком  
 
anvg - "...Для мастера функций можно сделать через Application.MacroOptions..." - А как ?  
чтобы хотя бы для мастера функций сделать: Это будет почти одинаковая процедура для всех UDF, несмотря на количсетво аргументов или как-то по-другому?  
 
Опишите подробней пожалуйста или дайте ссылку.  
 
Например я добавляю UDF в какую-нибудь категорию функций так:  
в окно Immediate набираю application.MacroOptions macro:=asd, category:=10 и нажимаю ENTER  
 
то что вы пишете тоже делается как-то так?
 
вопрос стоит так - при набирании UDF нужно окно, которое подсказывет какой аргумент идёт за каким аргументом, и какой именно аргумент ты в данный момент набираешь (нужное окно есть в скрине в посте повыше)  
 
а причём тут Application.MacroOptions ???  
 
ведь как я закончил писать UDF функцию и закрыл модуль, сразу в мастере функций этот UDF виден и если на него нажать два раза, то выходит доп.окно Аргументы функции, где на каждый аргумент есть отдельное поле в отдельной строке и это окно уже отвечает на все изложенные в начале вопросы (см. скрин)  
 
НО вопрос стоит так, что нужно другое такое маааленькое окно, про которое я уже много написал.  
Преимущества искомого окна  
- Выходит автоматом (не нужно нажимать ничего просто набираешь название функции)  
- подсказывает какой аргумент идёт за каким  
- выделяет жирным аргумент на которм ты стоишь в данный момент  
 
ЗЫ - anvg, когда писал про "...Для мастера функций можно сделать через Application.MacroOptions..." наверно имел ввиду совсем другое - то что, можно добавить ОПИСАНИЯ к аргументам UDF. Но вопрос не про описания
 
извиняюсь в предыдущем посте забыл вложить скрин
 
{quote}{login= Б А Х Т И Ё Р}{date=20.04.2012 04:30}{thema=чё-то сам себя путаю}{post}НО вопрос стоит так, что нужно другое такое маааленькое окно, про которое я уже много написал.  
{/post}{/quote}  
Если найдется - не забудьте поделиться с обществом, плз...
 
subtlety  
Это аналог Application.MacroOptions при написании xll на C++ для мастера функций.  
Б А Х Т И Ё Р  
Я думаю, что стоит доверять Govert van Drimmelen, автору ExcelDNA, он изучил написание xll AddIn на C++ для 2003, 2007 и 2010 (включая 64bit), так что, если им сказано, что недокументировано отображение аргументов при вводе функции в ячейку, то оно недокументировано, и VBA тоже не будет доступно. Не всё Microsoft отдаёт на откуп пользователям и разработчикам. Может ZVI, как MVP, сможет чем-нибудь помочь.
 
{quote}{login=anvg}{date=21.04.2012 10:21}{thema=}{post}...Я думаю, что стоит доверять Govert van Drimmelen..., так что, если им сказано, что недокументировано отображение аргументов при вводе функции в ячейку, то оно недокументировано, и VBA тоже не будет доступно. Не всё Microsoft отдаёт на откуп пользователям и разработчикам. Может ZVI, как MVP, сможет чем-нибудь помочь.{/post}{/quote}  
:-(  
 
RAN - боюсь нечем будет делиться...
 
Я сделал иначе - все UDF сложил в отдельный файл (можно сказать надстройку, но не совсем), при его загрузке в контекстное меню ячейки добавляется меню MyFuncs, при вызове которого появляется форма с перечнем всех UDF, к каждой можно посмотреть описание (как напишешь, так и прочитаешь, т.е. можно хоть в 100 строк подробно каждую описать - все параметры, тонкости применения и т.д.).  
Андрей в курсе - у него есть своя версия такого файла, красивая :)  
Моя непричёсанная, только для личного пользования.
 
спасибо, если нужного решения не найдётся, похоже придётся сделать чё-то типа того, что вы предложили
 
Подсказки (Tooltip) в Excel не предусмотрены для пользовательских функций (UDF), -а только для встроенных функций.  
 
Для пользовательских функций работает Ctrl-Shift-A после ввода имени функции.  
 
Также, с версии Excel 2010 появилась возможность программно задавать описание аргументов функции, которые отображаются в диалоговом окне мастера функций.  
Для этого в Application.MacroOptions добавлен новый аргумент ArgumentDescriptions, которому можно задать массив описаний всех аргументов UDF.  
В предыдущих версиях тоже можно исхитриться с описанием аргументов, но достаточно криво, с помощью неиспользуемые функций внешних DLL.
 
Подсказки (Tooltip) в Excel не предусмотрены для пользовательских функций (UDF), - а только для встроенных функций. ------ ясно  
 
Для пользовательских функций работает Ctrl-Shift-A после ввода имени функции.  
------ вот этим и пользуюсь иногда :-)  
 
Также, с версии Excel 2010 появилась возможность программно задавать описание аргументов функции, которые отображаются в диалоговом окне мастера функций.  
------- у меня как раз 2010, так что можно изучать это как вариант  
 
 
СПАСИБО  ВСЕМ
 
ZVI, спасибо за интересную информацию (в т.ч. Ctrl-Shift-A)  
 
Попробовал разобраться с примером в F1 по Application.MacroOptions.  
Попробовал - как обычно пробую. Вставил в свой модуль и запустил (F8).  
И VBA тут же выдал ошибку.  
У меня просьба, выложить какой-н. свой файл, в котором эта Application.MacroOptions реализована в рабочем состоянии.  
А м.б. просто "ткнете пальцем", что я не так делаю? Где почитать? и т.п....  
 
В любом случае, спасибо.
 
Добавьте в модуль:  
 
Function степень2(число, степень)  
степень2 = число ^ степень  
End Function  
 
Sub добавление_описания_к_аргументам()  
Application.MacroOptions macro:="степень2", argumentdescriptions:=Array(" - это число, которая возводится в степень", " - это число означает, на какую степень должно возводится число")  
End Sub  
 
Выполните sub, и в мастере функций найдите функцию СТЕПЕНЬ2 и дважды нажмите на неё  
Там 2 поля: Число и Степень  
Переходите с одного на другой и посмотрите как меняется описание аргумента
 
Спасибо, то, что надо. Завтра попробую. Интересная вкусность.
 
Попробовал отработать процедуры, как Вы писали. Та же проблема, что и с примером, выложенным в VBA по HELP-у.  
Ругается Run-time error '1004'  
на строчке    
Application.MacroOptions macro:="степень2", argumentdescriptions:=Array(" - это число, которое возводится в степень", " - это число означает, на какую степень должно возводиться число")
 
{quote}{login=}{date=26.04.2012 06:02}{thema=Re: гость    ->    Б А Х Т И Ё Р}{post}Попробовал отработать процедуры, как Вы писали. Та же проблема, что и с примером, выложенным в VBA по HELP-у.  
Ругается Run-time error '1004' ........ {/post}{/quote}  
Разобрался.  
Вставлял в модуль файла PERSONAL.xls (скрытая книга), в нем функция Sub добавление_описания_к_аргументам()  
- не работает.  
Когда вставил в модуль открытой книги, все заработало.  
Почему - не знаю. Наверно потому, что книга - скрытая.
Страницы: 1
Наверх