Этот вопрос задавался ранее , но каждый раз принятый ответ - это просто отказ от предоставления описаний функций с использованием Application.MacroOptions
( VBA6 ) ( VBA7 ), но эта информация фактически не отображается в виде всплывающей подсказки, поэтому она не решает мою проблему.
Цель
Все мы хотим иметь возможность определять пользовательские функции любыми средствами (надстройка VBA, VSTO или COM) и давать пользователю преимущество в виде всплывающего / всплывающего описания функции и ее параметров, как появляется для каждой встроенной функции Excel, встроенной или в строке формул:
Широко распространенный ответ на эту потребность заключается в том, что это невозможно для пользовательских функций, но я хочу бросить вызов этому убеждению.
Эта проблема
В настоящее время лучшее, что я видел, - это определять функции (часто с использованием вышеуказанного вызова MacroOptions), чтобы при открытии диалогового окна функции (кнопка fx в строке формул) их функции и описания параметров отображались следующим образом:
Как видите, это сложная функция с множеством параметров. Если пользователь не знает об этом диалоговом окне «аргументы функции» и о том, как его вызвать, а вместо этого знаком только со стандартной всплывающей подсказкой Excel, он увидит только имя формулы и никакой дополнительной помощи:
При этом у них нет шансов правильно предоставить требуемые параметры. (Без чтения документации, что, конечно, никогда не делает ни один пользователь.)
Теперь опытный пользователь может знать, что, набрав Ctrl+ Shift+ A, ему будет предоставлен автоматически заполняемый список параметров функции, например:
Но, конечно же, у нас есть та же проблема, что и выше, а именно: стандартные пользователи Excel будут использовать поведение по умолчанию только из первого изображения и, вероятно, никогда не узнают эту функцию.
К этому моменту должно быть ясно, почему этого недостаточно, и нам нужно то, что есть у каждой встроенной функции - встроенную подсказку, которая сообщает пользователю, как использовать функцию.
Дразнить
Сначала я мог быть уверен, что это просто невозможно, кроме как с собственными функциями приложения Excel. Надстройки и VBA являются функциями расширяемости, и эта подсказка может просто не расширяться. Но эта теория ставится под сомнение существованием надстройки Analysis Toolpak. Конечно, он встроен в Microsoft, но ANALYS32.xll - это отдельная надстройка XLL, точно такая же, как и те, которые могут быть созданы на VB, C, C ++ и C #. Разумеется, когда этот XLL загружается в приложение, функции, которые он предоставляет, имеют те же подсказки, что и собственные функции Excel:
Конечно, если эта информация каким-то образом закодирована в этом файле XLL и передана в Excel, есть ли способ воспроизвести ее с помощью наших собственных надстроек? Я подошел к тому моменту, когда я собираюсь начать немного учить себя декомпиляции и посмотреть, смогу ли я реконструировать все, что происходит в пакете инструментов анализа.
Как ты можешь помочь
Я почти уверен, что изучил всю общедоступную информацию об этой проблеме. Если кто-то знает что-то, чего я не знаю, что могло бы помочь с этим, не стесняйтесь вмешиваться. Я очень не знаком с скомпилированными dll / xlls с помощью обратного проектирования, поэтому, если кому-то захочется открыть свою локальную копию Analysis32.xll и Разобравшись, что происходит с определениями пользовательских функций, я был бы очень признателен. В противном случае я просто буду копаться в этом сам, пока не заеду во все тупики и не доложу о том, что обнаружил.