Выполнение макроса по нажатию на кнопку пожалуй одна из самых распространенных техник применяемых в Excel.
Но, что если доступ к определенному макросу требуется ограничить?!😉
В данном обзоре рассмотрим 2 (два) подхода решения позволяющие управлять активацией кнопок вызова макроса в зависимости от значения в целевой ячейке, что позволит регулировать доступность к заданному функционалу.
📢 Файл с примером размещен в конце статьи 🔽
▶️ Подготовка
Для целей данного примера создадим отдельный лист - справочник в котором определим все возможные макросы и их целевое действие:
В качестве кнопок на которые предположительно будут назначены макросы размещаем на листе нужное число элементов ActiveX:
🔘 Дополнительно (для примера 1):
- для ячейки D1 листа-справочника зададим имя:
- на листе с реализуемым примером разместим элемент управления выпадающий список для которого установим связь я ячейкой и критерии для выбора:
- и пропишем формулу:
🔘 Дополнительно (для примера 2) определим именованный диапазон "Значение":
Теперь, когда все подготовительные действия выполнены рассмотрим два примера решения
▶️ Пример 1. Используем событие Worksheet.Calculate
В модуле листа поместим код:
Данный макрос позволяет управлять состоянием трех кнопок (CommandButtonA, CommandButtonB, CommandButtonC) в зависимости от значения, находящегося в указанной целевой ячейке.
Если значение в целевой ячейке соответствует определенным условиям (1, 2, 3 или 4), то соответствующая кнопка включается, а остальные отключаются.
Этот подход позволяет автоматически обновлять состояние кнопок при изменении значения в целевой ячейке, что делает управление элементами удобным и автоматизированным.
▶️ Пример 2. Используем событие Worksheet.Change
Для выбора нужного значения помимо использования элемента управления формы решение задачи можно реализовать посредством простого выпадающего списка.
В этом случае выпадающий список используется для выбора значения, и это значение сравнивается с данными из столбца "Значение". Затем, в зависимости от найденного индекса, соответствующая кнопка включается или отключается.
⚙️ Краткое описание:
- проверяем, была ли изменена ячейка A1 на текущем листе;
- сбрасываем состояние всех кнопок на "Выключено";
- получаем значение из выпадающего списка в ячейке A1.
- поиск соответствующего индекса для выбранного значения в столбце "Значение";
- записываем найденный индекс в ячейку D1. В зависимости от значения индекса включает соответствующую кнопку.
📝 Примечание автора: Поиск индекса осуществляется аналогично тому если была бы применена формула: =ПОИСКПОЗ(A1;Значение;0)
Данный вариант может быть использован как альтернативное решение, когда необходимо динамически управлять состоянием кнопок в зависимости от выбранных данных.
🙌 Оставайся с нами на связи и узнавай больше о других методах и приемах работы в Excel:
✅ СКАЧАТЬ ПРИМЕР 🔽