Могу ли я вызвать функцию UDF по имени в Excel?

#excel #vba

#excel #vba

Вопрос:

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

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

Кто-нибудь знает, как я мог бы выполнить это, не перепечатывая тестовые уравнения для работы каждого учащегося?

Спасибо!

Комментарии:

1. Вы всегда можете попросить своих студентов найти решение для получения бонусного кредита 😉

2. Должны ли они загружаться как надстройки? Моим инстинктом было бы использовать расширяемость VBA для создания «тестовой рабочей книги».

3. Вы можете сделать это из VBE, вызвав функцию / процедуру из любой открытой книги (при условии, что это не Option Private Module or Private Sub/Function ).

Ответ №1:

Вместо того чтобы использовать собственное дополнение, можете ли вы добавить свои функции в свою личную рабочую тетрадь.xlsb и по очереди добавлять функции каждого учащегося в тестовую рабочую тетрадь? Затем вы можете ссылаться на свои функции как

 =PERSONAL.XLSB!TESTFUNCTION()
  

и функции ваших учеников как

 =TESTWORKBOOK.XLSX!TESTFUNCTION()
  

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

Конечно, вам нужно будет скопировать и вставить работу последнего ученика, так что это не сработает, если вы хотите сравнить каждого ученика с каждым другим.