Найти тему
VBA Excel с нуля

VBA Excel № 73. Функции. Использование метода MacroOptions в VBA.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В статьях 72.1, 72.2, 72.3 были рассмотрены расширенные функции для работы с датами. Но это ПОЛЬЗОВАТЕЛЬСКИЕ функции. И при их вызове пользователь увидит следующее:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

или следующее:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Но можно в результате некоторых манипуляций увидеть и следующее:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

И вот здесь мы можем воспользоваться функционалом метода MacroOptions объекта Application, что предоставляет возможность интегрировать пользовательские функции в стандартный набор функций Excel. Этот метод открывает следующие возможности:

  • Добавление описания функции: С помощью MacroOptions можно предоставить подробное описание пользовательской функции. Это улучшает понимание её назначения и использования.
  • Выбор категории функции: Метод позволяет определить категорию, в которой будет располагаться пользовательская функция. Это полезно для организации функций по тематическим группам, облегчая их поиск.
  • Добавление описания аргументов функции: MacroOptions также предоставляет возможность внесения информации о каждом аргументе функции. Это улучшает документацию и содействует правильному использованию функции.
Полезный совет: еще одним преимуществом при использовании метода MacroOptions является возможность корректировки регистра символов в именах функций. Например, если создана функция "МояФункция", при вводе формулы =мояфцнкция(a) Excel автоматически корректирует её на = МояФункция(a). Это обеспечивает простой способ контроля опечаток в именах функций (если автоматического преобразования регистра не произошло, значит, имя функции введено неправильно).

В приведенном ниже примере представлена процедура, использующая метод MacroOptions для указания необходимой информации о пользовательских функциях (которые мы разобрали в трёх предыдущих статьях):

Скриншот с моего ноутбука
Скриншот с моего ноутбука

И что говорит нам эта процедура?

А говорит она следующее: что процедура SetMacroOptions в данном коде используется для добавления описаний к нескольким функциям и помещения их в категорию "Дата и время". Это удобно, когда пользователь работает с макросами в среде Microsoft Excel, поскольку описания и категории помогают лучше организовать функции и облегчают поиск нужных инструментов.

Давайте разберем, как тут крутятся шестерёнки:

  1. On Error Resume Next: Эта строка указывает на продолжение выполнения кода в случае возникновения ошибки, вместо прерывания выполнения. Это может быть полезным при установке описаний для макросов, чтобы код продолжал работать, даже если какие-то из них не могут быть установлены.
  2. With Application: Этот блок используется для компактного обращения к объекту Application, который представляет собой главный объект приложения (в данном случае, Microsoft Excel).
  3. MacroOptions macro:=...: Это метод для добавления описаний к макросам. Каждый вызов этого метода добавляет описание для конкретного макроса.
  • macro: Имя макроса, к которому добавляется описание.
  • Description: Текст описания макроса.
  • Category: Категория, в которую помещается макрос (в данном случае категория – 2, это категория "Дата и время").
Указание категории функций рассмотрим в следующей статье.

Пример кусочка макроса, описанного выше в скриншоте:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Этот вызов добавляет описание для макроса АДАТА с указанным текстом и помещает его в категорию с номером 2 ("Дата и время").

Итак (если вы читали статьи 72.1, 72.2, 72.3), то уже знаете, что в нашем модуле с девятью функциями, появилась ещё одна процедура.

Важное замечание. Поддержка описания аргументов появилась в Excel 2010. Если книга, в которой определена соответствующая функция, будет открыта в более ранней версии Excel, описания аргументов исчезнут.
Процедура SetMacroOptions вызывается только один раз. После ее вызова информация, связанная с функцией или функциями (если их несколько, как в нашем случае), сохраняется в рабочей книге.