Использование события Worksheet.Change в Excel позволяет автоматизировать отслеживание изменений в ячейках листа.
Когда пользователь вносит изменения в ячейки событие срабатывает, что позволяет выполнить определенные действия в ответ на изменения данных.
Это может быть использовано для мониторинга ввода данных пользователем, проверки на соответствие заданным условиям, автоматической обработки данных и многих других сценариев.
Один из примеров, демонстрирующих практическое применение события Worksheet.Change рассмотрен в данном обзоре 😉.
📢 Файл с примером размещен в конце статьи 🔽
▶️ Процедура события Worksheet_Change
▶️ Вывод сообщения при несоответствии критерию
Представленный макрос предназначен для отслеживания изменений, внесенных в столбец D рабочего листа.
Если внесено изменение и новое значение превышает предельное значение, указанное в ячейке A1, пользователю отображается информационное сообщение:
🔔 Это достигается путем объединения нескольких концепций и методов VBA:
- Метод Intersect используется для проверки наличия измененных ячеек в столбце D: проверяем, принадлежит ли измененный диапазон столбцу D. Если нет, то завершаем выполнение макроса.
- Цикл For Each используется для прохождения каждой измененной ячейки.
- Условие If проверяет, пуста ли ячейка и превышает ли значение предел.
- Функция MsgBox используется для отображения информационного сообщения.
➡️ Результат:
⚠️ Недостаток рассмотренного макроса заключается в том, что, несмотря на установленное ограничение и сообщение пользователю о недопустимом значении, оно все равно попадает в ячейку.
▶️ Отмена ввода значения при несоответствии критерию
Чтобы предотвратить ввод значений, превышающих установленный предел, можно использовать команду Application.Undo внутри условия, где происходит проверка значения.
Это позволит отменить введенное пользователем значение и вернуть ячейку к предыдущему состоянию. После этого можно вывести сообщение об ошибке.
🔘 Например:
Аналогично рассмотренному ранее примеру макрос циклически проходит каждую ячейку в пределах целевого диапазона и проверяет, превышает ли введенное значение предел, определенный в A1.
🔔 Отличие: Если значение ячейки не пусто и больше xNum, выполняется оператор Application.Undo, отменяющий запись.
Теперь, если пользователь попытается ввести значение, превышающее установленный предел, оно будет автоматически удалено, а пользователю будет выведено предупреждающее сообщение:
Подводя итог отметим, что представленный пример является типовым решением и может быть дополнен и изменен в соответствии с условиями конкретной задачи.
➡️ Ознакомиться с дополнительными материалами VBA Excel вы можете в наших предыдущих обзорах 🔽
🙌 Оставайся с нами на связи и узнавай больше о других методах и приемах работы в Excel:
✅ СКАЧАТЬ ПРИМЕР 🔽