Не знаю правильно ли здесь выложил файлик-пример для создания справки для пользовательской функции решать модераторам. Хотелось бы помочь тем кто давно искал как создать справку для своей функции и в итоге не нашел. Сильно по голове не бить, потому что это мое больное место.
Почему названия по аргументам я выложил на листе, чтобы на всех языках возможно було бы сформулировать свои ХЕЛПЫ по аргументам Работает так там модуль с именем DescribeFunction надо запустить, только потом уже функцию использовать. Хотя я этот модуль вписал в Workbook_Open() чтоб при открытии сработал
В общем-то на справку не тянет. Этот метод давно обсуждался и не раз и его применение возможно и без макросов. Большую часть куда больше интересует обычно как создать пояснение для каждого аргумента. Когда-то я выкладывал такой пример(во вложении). Но он подходит для малого кол-ва аргументов, т.к. имеет ограничение на 255 символов в общей совокупности для всех аргументов и описания.
Да круто, но у Вас макрос с прибамбасами. Столько кода что при просмотре на глаз не поймешь что для чего работает. Да, у меня тоже ограничение на 255 символов. А если описание для аргументов надо скажем написать на грузинском или или китайском то VBA ругаться будет. Юникодный шрифт разных "языковых барьеров" не всегда в коде можно написать. Кому как видней. Спасибо за критику. Всегда рад когда кому то, чего то не нравится - это стимулирует "оттачивание своих мозгов от мусора"
В декабре выполнял работу, в которой использовались символы Юникода. Все тексты вынес на отдельный лист, откуда массивом подтягивал нужные значения на формы, в сообщения... В таком варианте - хоть сотня языков.
Будет следующий текст в исходном коде, если сохранить модуль с функциями через Export File:
Код
'Получить комментарий указанной ячейки
Public Function GetComment(DataRange As Range) As String
Attribute GetComment.VB_Description = "ddddd" 'Собственно, описание функции
Attribute GetComment.VB_ProcData.VB_Invoke_Func = "a\n14" 'Горячая клавиша и категория функции - в данном случае "Определённая пользователем"
End Function
т.е. команда Application.MacroOptions просто дописывает в код соответствующие строки. Это достаточно сделать всего один раз, а не при каждом запуске книги. Так же, нет смысла удалять описания после отработки кода, поскольку информация хранится в коде, а не в недрах Excel'я А можно сделать так: - сохраняем исходный текст модуля (Export File...); - в любом редакторе вставляем соответствующие атрибуты; - снова загружаем модуль (Import File...) После этого, описанные таким образом функции получат подсказку в диалоге "Вставить функцию"
Самое интересное. Если Вы накосячите, и в коде вместо GetComment.VB_Description напишите имя другой функции, то при загрузке модуля VBA исправит Вашу ошибку, подставив необходимое имя. В приложении модуль с функцией и книга Excel с интегрированным модулем.