Разрешение имени функции Excel VBA, надстройка против локального модуля
Рассмотрим следующую ситуацию. У меня есть надстройка Excel с именем "X" с модулем с именем "Y", содержащая функцию с именем "Z". Надстройка 'X' включена в Excel через Файл> Параметры> Надстройки...
Я открываю книгу Excel с макросами, которая содержит собственный модуль с именем "A" и функцию с именем "Z". (Я назову это "локальной" версией функции "Z".)
Вопрос 1) Если я вызываю функцию 'Z' из ячейки рабочего листа '=Z()', какая функция 'Z' действительно активизируется по умолчанию? Надстройка "Z" или локальная "Z"? (Если кто-то может указать мне на документ, который хорошо описывает область действия и разрешение имен в Excel VBA, это будет оценено.)
Вопрос 2) Есть ли в ячейке таблицы какой-либо синтаксис, который я могу использовать для явного вызова той или иной функции "Z" (т. Е. "Локальной" Z или надстройки "Z")?
Вопрос 3) В рабочей книге с поддержкой макросов, когда ячейка рабочего листа вызывает функцию '=Z()', Excel по умолчанию вызывает версию Z для надстроек. Если я "разорву ссылку" на версию надстройки "Z" (панель Excel RIBBON> вкладка "ДАННЫЕ"> галерея "СОЕДИНЕНИЯ"> кнопка "РЕДАКТИРОВАТЬ ССЫЛКИ"), Excel разрушит все ячейки рабочего листа, которые вызывают "= Z ()" => '#НАЗВАНИЕ?'. Есть ли способ заставить Excel разорвать ссылку на надстройку "Z" и вместо этого вызвать вместо нее локальный "Z", не ломая все ячейки рабочего листа, которые вызывают "= Z ()"?
1 ответ
Ответ 2) Учитывая, что имя файла рабочей таблицы с поддержкой макросов - "k.xlsm", разрешение имени функции может быть применено в ячейке рабочей таблицы путем добавления префикса вызова функции "=Z()" с именем файла (или полным путем к) книга с поддержкой макросов:
='k.xlsm'!Z()