Переопределение встроенной функции Excel с помощью макроса - PullRequest
5 голосов
/ 16 января 2011

Можно ли переопределить встроенную функцию Excel на пользовательскую из макроса VBA или из надстройки?Например, я бы хотел переопределить функцию SUM и выполнять там свои собственные функции (здесь SUM - только пример).

1 Ответ

4 голосов
/ 28 марта 2013

Это может быть простой вопрос, но ответ на него должен знать каждый программист vba (excel):

Существует иерархия, которой следует придерживаться при столкновении имени функции.

Вот структура с приоритетом:

  1. 1-й приоритет, отданный функциям Excel по умолчанию (например, Sum, Count, ...)
  2. 2-й приоритет, отданный эталонным функциям dll. ( позже) ...)
  3. 3-й приоритет для надстроечных функций (например, Days360 - в случае Excel 2003)
  4. Четвёртый приоритет отдается функциям модуля или пользовательской пользовательской функции, которую вы создаете.

Также помните, во втором случае приоритета: Если две или более ссылок имеют одно и то же имя функции (например, если мы ссылаемся на библиотеку ADO и библиотеку DAO вместе, возможно, существует некоторое столкновение имен), приоритет может быть установлен вами вручную в соответствии с требованием. В Excel VBA IDE перейдите в Инструменты >> Ссылки >> Выберите любую библиотеку и в правой части окна нажмите Приоритет ВВЕРХ / ВНИЗ, чтобы увеличить или уменьшить приоритет библиотеки функций.

Надеюсь, это поможет всем:)

...