Найти тему

📌 Практикум VBA Excel: Событие Worksheet.Change. Отслеживание изменений и проверка значений на соответствие критерию

Оглавление

Использование события Worksheet.Change в Excel позволяет автоматизировать отслеживание изменений в ячейках листа.

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

Это может быть использовано для мониторинга ввода данных пользователем, проверки на соответствие заданным условиям, автоматической обработки данных и многих других сценариев.

Один из примеров, демонстрирующих практическое применение события Worksheet.Change рассмотрен в данном обзоре 😉.

Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Для удобства поиска нужного материала у нас на канале есть удобный рубрикатор, а все видео предыдущих уроков также доступны на youtube (ссылка внизу поста и в описании канала)
Практикум VBA Excel: Событие Worksheet.Change. Отслеживание изменений и проверка значений на соответствие критерию
Практикум VBA Excel: Событие Worksheet.Change. Отслеживание изменений и проверка значений на соответствие критерию

📢 Файл с примером размещен в конце статьи 🔽

Представленный пример демонстрирует практическое применение события Worksheet.Change
Представленный пример демонстрирует практическое применение события Worksheet.Change

▶️ Процедура события Worksheet_Change

▶️ Вывод сообщения при несоответствии критерию

Представленный макрос предназначен для отслеживания изменений, внесенных в столбец D рабочего листа.

Если внесено изменение и новое значение превышает предельное значение, указанное в ячейке A1, пользователю отображается информационное сообщение:

Макрос автоматически запускается при каждом изменении данных в столбце D текущего листа. Если значение в ячейке столбца D превышает установленный предел, определенный значением в ячейке A1, то выводится информационное сообщение пользователю о превышении этого предела
Макрос автоматически запускается при каждом изменении данных в столбце D текущего листа. Если значение в ячейке столбца D превышает установленный предел, определенный значением в ячейке A1, то выводится информационное сообщение пользователю о превышении этого предела

🔔 Это достигается путем объединения нескольких концепций и методов VBA:

  • Метод Intersect используется для проверки наличия измененных ячеек в столбце D: проверяем, принадлежит ли измененный диапазон столбцу D. Если нет, то завершаем выполнение макроса.
  • Цикл For Each используется для прохождения каждой измененной ячейки.
  • Условие If проверяет, пуста ли ячейка и превышает ли значение предел.
  • Функция MsgBox используется для отображения информационного сообщения.

➡️ Результат:

Если значение в ячейке не пустое и превышает установленный предел, то выводится информационное сообщение с предупреждением о превышении предела
Если значение в ячейке не пустое и превышает установленный предел, то выводится информационное сообщение с предупреждением о превышении предела

⚠️ Недостаток рассмотренного макроса заключается в том, что, несмотря на установленное ограничение и сообщение пользователю о недопустимом значении, оно все равно попадает в ячейку.

▶️ Отмена ввода значения при несоответствии критерию

Чтобы предотвратить ввод значений, превышающих установленный предел, можно использовать команду Application.Undo внутри условия, где происходит проверка значения.

Это позволит отменить введенное пользователем значение и вернуть ячейку к предыдущему состоянию. После этого можно вывести сообщение об ошибке.

🔘 Например:

Отменить введенное пользователем значение и вернуть ячейку к предыдущему состоянию
Отменить введенное пользователем значение и вернуть ячейку к предыдущему состоянию

Аналогично рассмотренному ранее примеру макрос циклически проходит каждую ячейку в пределах целевого диапазона и проверяет, превышает ли введенное значение предел, определенный в A1.

🔔 Отличие: Если значение ячейки не пусто и больше xNum, выполняется оператор Application.Undo, отменяющий запись.

Теперь, если пользователь попытается ввести значение, превышающее установленный предел, оно будет автоматически удалено, а пользователю будет выведено предупреждающее сообщение:

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

Подводя итог отметим, что представленный пример является типовым решением и может быть дополнен и изменен в соответствии с условиями конкретной задачи.

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel.

➡️ Ознакомиться с дополнительными материалами VBA Excel вы можете в наших предыдущих обзорах 🔽

Быстрый поиск решения. Путеводитель Excel - Google Диск
Справочные материалы VBA Excel | Excel на ИЗИ: ✅ Приемы эффективной работы в Microsoft Excel | Дзен
Примеры макросов VBA Excel | Excel на ИЗИ: ✅ Приемы эффективной работы в Microsoft Excel | Дзен

🙌 Оставайся с нами на связи и узнавай больше о других методах и приемах работы в Excel:

It's Moskovskaya_Excel на ИЗИ - YouTube
Следите за новостями, чтобы узнать больше о VBA и Excel, в частности.
Следите за новостями, чтобы узнать больше о VBA и Excel, в частности.
Excel на ИЗИ

СКАЧАТЬ ПРИМЕР 🔽

Событие Worksheet.Change. Отслеживание изменений и проверка значений на соответствие критерию.xlsm