2015-04-11 3 views
2

У меня есть простой вопрос относительно ссылок в формулах Excel и VBA.Реферирование и приложения VBA

В настоящее время я изучаю курс ценообразования активов с приложениями в VBA. Поскольку я очень новичок в VBA, я очень расстроился из-за какой-то проблемы, связанной с листами решений от моего преподавателя, со ссылкой на каталоги на его компьютере.

В ходе курса мы постепенно расширяем набор ценной библиотеки analytics.xlsm, и, насколько я понимаю, это книга с поддержкой макросов. В рамках проекта есть модуль, содержащий функции ценообразования.

Итак, когда я загружаю листы для справки лектора, все формулы, содержащие функции ценообразования, ссылаются на каталог на его компьютере. Насколько я понимаю, это «ссылка». Когда я открываю книгу, у меня есть возможность изменить ссылку на мой собственный analytics.xlsm.

Я пробовал это, между прочим, но все, что я получаю, это значение #NAME? в каждой ячейке, на которую ссылается функция или содержит ее функцию от analytics.xlsm.

Я попытался следующие в различных порядках и комбинациях:

  • Включение/отключение analytics надстройки;
  • Обновление Reference в меню Tools в интерфейсе VBA до analytics.xlsm;
  • Обновление моих преподавателей связано с каталогом на моем компьютере, содержащим модуль ценообразования.

Я надеюсь, что кто-то здесь может помочь мне понять, как это работает. В идеале, я просто хочу загрузить свою рабочую книгу с формулами, содержащими только функцию, написанную в модуле ценообразования, и в этом случае я мог бы просто загрузить analytics.xlsm в качестве надстройки. Это работает, когда я сам решаю задания.

Пример:

Я хочу

=swaprate(..,..,.....) 

вместо

='machintosh......analytics.xlsm!swaprate(..,..,.....) 

Я использую Excel для MAC и поэтому мой преподаватель. Заранее спасибо!

ответ

1

Причина, по которой это происходит, заключается в том, что файл надстройки, содержащий функцию swaprate(), является локальным. Иными словами:

  1. Ваш лектор открывает файл с его Excel; analytics.xlsm; его Excel использует надстройку, давайте назовем его functions.xlam, и этот файл хранится на его локальном компьютере, например, C:\Lectures\Financials\functions.xlam
  2. Ваш преподаватель вставляет внешнюю функцию в клетке analytics.xlsm, например, он пишет в A1 функция =swaprate(1,2,3).
  3. Затем он загружает файл в Интернете, чтобы загрузить его.Когда это происходит, надстройки теряются, поэтому файл analytics.xlsm (который содержит функцию , ссылаясь на его локальную надстройку) получает исходный путь источника 'C:\Lectures\Financials\functions.xlam' до имени функции.

Таким образом, технически (для тестирования), решение обновить ссылки должно быть:

  • После загрузки файла с ныне неработающими ссылками, перейдите на «Data», затем «Изменить ссылки» и обновите источник ссылки, где находится ваша локальная надпись;
  • Следовательно, вы получите результат по вашему желанию. Обратите внимание: если вы все еще видите локальный путь до имени функции (например, 'C:\Student\functions.xlam!'swaprate()), это означает, что эта конкретная надстройка (лежащая на C:\Student\) неактивна. Вы можете активировать его с помощью меню «Параметры/надстройки» Excel.
+0

Благодарим вас за разъяснение причины проблемы. Однако это не решило мою проблему. Я сделал так, как вы сказали, и заметил следующее: Ссылка в моих формулах по-прежнему сохраняется, и я проверил, что это правильный путь, но все ячейки имеют #NAME ?. «analytics.xlam» (не .xlsm, извините), является активной надстройкой. Если я вручную удаляю имя пути и сохраняю только свое имя функции, функция работает по назначению и выполняется расчет. Мне было интересно, может ли мой каталог содержать недопустимые символы? Он содержит пробелы, буквы, пунктуации и целые числа – amris