Всем привет! 👋
Сегодня разберем интересный прием позволяющий применить один элемент управления к разным ячейкам.
📢 Файл с примером размещен в конце статьи 🔽
Полагаем, что вы не раз сталкивались с необходимостью применения различных элементов управления в Excel.
⚠ Но при стандартном использовании проблема заключается в том, что для каждого элемента управления вы создаете связь с ячейкой:
😎 А если таких элементов управления требуется несколько?
Создавать связь для каждого и дублировать несколько элементов управления - не лучшая практика!
🔔 Рассмотренное ниже решение позволит применить один элемент управления к нескольким значениям.
▶️ Диспетчер имен
Определение именованных диапазонов является важным шагом для получения корректных результатов
Для данного примера задаем 3 именованных диапазона:
🔘 ВыбраннаяСтрока
- определяет ссылку на ячейку А1 в которой будет выводится номер строки выбранного значения:
🔘 Диапазон
- определяет диапазон, для которого будет применен элемент управления:
🔘 Ссылка
- данный диапазон потребуется, чтобы установить связь элемента управления с ячейкой:
его задаем формулой:
=СМЕЩ('пример решения'!$C$1;ВыбраннаяСтрока-1;0)
▶️ Макрос
Данный код представляет собой процедуру Worksheet_SelectionChange, которая выполняется автоматически при изменении выделенного диапазона на листе, что позволит применить один элемент управления к разным ячейкам
📝 Описание кода:
- Private Sub Worksheet_SelectionChange(ByVal Target As Range) - объявление процедуры, которая срабатывает при изменении выделенного диапазона на листе. Параметр Target представляет собой измененный диапазон.
- If Intersect(Target, Range("Диапазон")) Is Nothing Then - строка проверяет, находится ли измененный диапазон в указанном диапазоне "Диапазон". Если измененный диапазон не пересекается с "Диапазон", то выполнение процедуры прекращается.
- Range("ВыбраннаяСтрока").Value = 0: Если измененный диапазон не находится в "Диапазон", то значение ячейки "ВыбраннаяСтрока" устанавливается равным 0.
- Range("ВыбраннаяСтрока").Value = Target.Row: Если измененный диапазон находится в "Диапазон", то значение ячейки "ВыбраннаяСтрока" устанавливается равным номеру строки измененного диапазона.
- Application.CalculateFull - строка вызывает полное пересчет всех формул на листе.
Важно! код должен быть добавлен в модуль листа
▶️ Тестируем результат
Теперь, выделив нужную ячейку в столбце С (например, С6) мы можем изменять значения используя элемент управления: