динамически запускайте макрос, хранящийся в ячейке

#excel #vba #combobox

Вопрос:

У меня есть поле с заголовками макросов, связанное с ячейкой B1, и я хочу запустить выбранный макрос по его названию в связанной ячейке B1

Я пробовал этот код, но он выдает ошибку

 Application.Run Range("B1").Value
 

Это сообщение об ошибке, которое я получаю
Ошибка времени выполнения «1004»
Нельзя использовать макрос «Материальные покупки». Макрос может быть недоступен в этой книге или все макросы могут быть отключены

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

Есть какие-нибудь зацепки?

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

1. «это выдает мне ошибку», какую конкретно ошибку? Мы не можем догадаться… Видишь rondebruin.nl/win/s9/win001.htm для получения хорошего обзора использования приложения.Запустите

2. хорошо, конечно, я введу ошибку, как только доберусь до своего рабочего офиса примерно через 8 часов

3. Отсутствует имя рабочей книги в ячейке B1? … Попробуйте сделать это Application.Run "WorkbbokName.xlsm!MaterialsPurchases" , если это работает, а затем измените значение в выпадающем списке соответствующим образом, чтобы отразить его в ячейке.

4. Ага, вы имеете в виду, что я должен ввести имя книги, используя Thisworkbook.name amp; Диапазон(«B1»).Значение ?

5. Да .. Добавьте имя книги с расширением xlsm или xlsb amp; «!» перед именем процедуры … и если макрос находится в другой открытой книге, то вам придется заключать имя файла в одинарные кавычки, как приложение. Запустите «‘workbook.xlsb’!Имя процедуры»