В Excel VBA вы наверняка сталкивались с событием Worksheet_Change, которое срабатывает при любом изменении на листе. Но что если вам нужно, чтобы макрос выполнялся только тогда, когда пользователь изменяет значение в определённом диапазоне, например, B2:B4? Сегодня разберём профессиональный приём: использование метода Intersect. Он позволяет точно задать, при каких изменениях должен запускаться код. Это ключ к написанию чистых, надёжных макросов. Метод Intersect проверяет, есть ли пересечение между двумя (или более) диапазонами. Если пересечение есть, он возвращает объект типа Range. Если пересечения нет — возвращается значение Nothing. Таким образом, мы можем задать условие: если пользователь изменил ячейку в нужном нам диапазоне, запускается макрос. Если нет — ничего не происходит. Часто новички пишут вот так: If Target.Address = "$B$2" Or Target.Address = "$B$3" Or Target.Address = "$B$4" Then Работает? Да.
Удобно? Нет.
Что если у вас 100 ячеек? Этот подход не масштабируется. Имен