На протяжении всей вашей практики VBA вам понадобится запускать макросы при изменении определенного диапазона или ячейки. В этом случае для запуска макросов при изменении целевого диапазона мы используем событие изменения.

`link: / excel-macros-and-vba-events-in-vb [События в VBA] позволяет нам запускать макросы при наступлении определенного события.

Синтаксис VBA Range Change Event

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("your_range")) Is Nothing Then

call your_macro

End If

End Sub

Событие не работает в модулях. Вам нужно записать их в объекты (рабочий лист, диаграммы, рабочую книгу).

У Lat есть пример, чтобы узнать, как запускать макрос, когда изменение сделано в указанном диапазоне.

Пример: запуск макроса VBA при внесении изменений в диапазон A2: A100 Сначала мы выбираем лист, на котором будет происходить событие. Дважды щелкните этот лист в редакторе VBA и скопируйте приведенный ниже код или общий код выше и внесите изменения в соответствии с вашими требованиями.

image

В этом примере я хочу запустить код макроса / VBA при внесении изменений в диапазон A2: A100 на листе 2. Для этого я дважды щелкаю лист2 в проводнике проекта. Он открывает страницу кодирования для этого листа. Вы можете щелкнуть правой кнопкой мыши на листе и щелкнуть код просмотра, чтобы сделать то же самое.

Мне нужно использовать событие изменения. Для этого мы используем по умолчанию subroutineWorksheet_Change (ByVal Target As Range). Он срабатывает при внесении указанного изменения. Итак, наш код такой:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2:A100")) Is Nothing Then

Call TestEvent

End If

End Sub

Когда вы вносите какие-либо изменения в диапазон A2: A100 на Sheet2, будет вызываться подпрограмма TestEvent, как вы можете видеть на гифке выше.

TestEvent — это общедоступная подпрограмма в module2. Он просто выдает сообщение о том, что событие работает.

Sub TestEvent()

MsgBox "Event is working!"

End Sub

Как это работает?

Мы поставили условие:

Если Not Intersect (Target, Range («A2: A100»)) Is Nothing, тогда HereIntersect (Target, Range («A2: A100»)) Is Nothing возвращает True, если в диапазоне A2: A100 не было внесено никаких изменений. Мы помещаем оператор Not перед этим оператором, который меняет вывод, полученный с помощью «Intersect (Target, Range (» A2: A100 «))». Следовательно, если в диапазоне A2: A100 не было внесено никаких изменений, выражение возвращает Falls, а subTestEvent не получает вызова. Если вы внесете изменение в любую ячейку в диапазоне A2: A100, выражение вернет True, и произойдет событие. И вот что здесь происходит.

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

Так что да, ребята, вот как вы можете вызвать подпрограмму или запустить код макроса / VBA, когда изменение сделано в указанном диапазоне. Это был простой пример события. Это событие сработает, только если изменение является текстовым. Под текстовым я подразумеваю, что если вы что-нибудь напишите в ячейках или удалите, событие сработает. Если вы измените форматирование ячеек, он не сработает. Для этого есть и другие способы.

Надеюсь, это было полезно. Если у вас есть какие-либо вопросы, связанные с этой темой VBA или любой другой темой, связанной с Excel, дайте мне знать в разделе комментариев ниже. И ознакомьтесь с другими нашими похожими и популярными сообщениями, упомянутыми ниже.

Статьи по теме:

link: / events-in-vba-simplest-vba-code-to-highlight-current-row-and-column-using [Простейший код VBA для выделения текущей строки и столбца с помощью] * | Используйте этот небольшой фрагмент VBA для выделите текущую строку и столбец листа.

link: / events-in-vba-the-worksheet-events-in-excel-vba [События рабочего листа в Excel VBA] * | Событие рабочего листа действительно полезно, когда вы хотите, чтобы ваши макросы запускались, когда на листе происходит указанное событие.

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-вашу-продуктивность [50 комбинаций клавиш Excel для повышения вашей продуктивности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков заставят вас работать в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее часто используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов. link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию. Вам не нужно фильтровать данные для подсчета определенного значения.

Функция Countif важна для подготовки вашей приборной панели.

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.