Запуск макроса Если любое изменение на листе в требуемом диапазоне
На протяжении всей вашей практики 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 и скопируйте приведенный ниже код или общий код выше и внесите изменения в соответствии с вашими требованиями.
В этом примере я хочу запустить код макроса / 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]
| Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.