Этот вопрос задавался ранее , но каждый раз принятый ответ - это просто отказ от предоставления описаний функций с использованием 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 и Разобравшись, что происходит с определениями пользовательских функций, я был бы очень признателен. В противном случае я просто буду копаться в этом сам, пока не заеду во все тупики и не доложу о том, что обнаружил.
Ответы:
Я разместил экспериментальный проект на GitHub как проект Excel-DNA IntelliSense , реализующий его.
При использовании классов автоматизации пользовательского интерфейса для отслеживания соответствующих событий пользовательского интерфейса Excel при необходимости отображается форма.
Код заключен в надстройку Excel-DNA и работает на моем компьютере с Excel 2013 / Windows 8. Я тестировал еще одну конфигурацию (64-разрядный Excel 2010 в Windows Server 2008) и у меня возникли серьезные проблемы.
Для функции C #, определенной с помощью таких атрибутов Excel-DNA:
мы получаем как описание функции
а при выборе функции получаем помощь по аргументу
Выглядит неплохо, но все еще очень нестабильно, работает только на моей машине и иногда дает сбой в Excel. Хотя это могло быть началом ...
Обновление 9 мая 2014 г .:
Я добился некоторого прогресса в выяснении того, как заставить аргументы работать в старых версиях Excel и Windows. Однако для того, чтобы все было надежно, необходимо еще немало поработать. Любой, кто хотел бы помочь с этим, должен связаться со мной напрямую.
Обновление 18 июня 2016 г .:
В настоящее время тестируется поддержка Excel UDF IntelliSense как для надстроек Excel-DNA, так и для функций VBA. Инструкции см. На странице « Начало работы» на GitHub.
источник
Как насчет
Это приемлемо?
Это немного некрасиво, но проще.
источник
Что такое XLL?
Как вы разрабатываете XLL?
Где я могу найти краткое руководство по созданию простого XLL?
Как я получаю всплывающие подсказки?
pxArgumentText, pxFunctionHelp, pxArgumentHelp1
К сожалению, надстройка Analysis Toolpak также не имеет всплывающих подсказок.
Мое решение было неправильным, но исходный постер опубликовал неверную информацию. Отображение изображения с БИНОМРАСП, если его ссылка ясно показывает, что это не функция ANALYS32.xll.
Это означает, что я пытался решить невозможный вопрос. Потому что не существует XLL, который мог бы делать то, что просил плакат. Если вы найдете версию Excel, в которой отображаются всплывающие подсказки XLL, сообщите мне.
Что касается того, о чем спрашивал плакат, пытаясь имитировать поведение XLL, я уверен, что мой ответ был наиболее правильным в отношении того, что делает ANALYS32.xll.
источник