Стартирайте макрос, ако на листа са направени промени в посочен диапазон

Съдържание:

Anonim

По време на вашите VBA практики ще имате нужда да стартирате макроси при промяна на определен диапазон или клетка. В този случай, за да стартираме макроси, когато се направи промяна в целевия диапазон, използваме събитието за промяна. Събитията във VBA ни позволяват да изпълняваме макросите, когато се случи определено събитие.

Синтаксис Събитие за промяна на обхвата на VBA

Private Sub Worksheet_Change (ByVal Target As Range) If Not Intersect (Target, Range ("your_range")) is Nothing Тогава се обадете your_macro End If End Sub

Събитието не работи в модули. Трябва да ги запишете в обекти (работен лист, диаграми, работна книга).

Lat имат пример, за да научат как да изпълняват макрос, когато се направи промяна в определен диапазон.

Пример: Изпълнете VBA макрос, когато се направи промяна в обхват A2: A100

Първо избираме листа, на който ще се случи събитието. Щракнете двукратно върху този лист в редактора на VBA и копирайте по -долу кода или общия код по -горе и направете промени според вашите изисквания.

В този пример искам да стартирам макро/VBA код, когато се извърши промяна в обхват A2: A100 на лист 2. За да направя това, щраквам двукратно върху лист2 в Explorer Explorer. Отваря страницата за кодиране на този лист. Можете да щракнете с десния бутон върху листа и да кликнете върху кода за изглед, за да направите същото.

Трябва да използвам събитието за промяна. За това използваме подпрограма по подразбиране Worksheet_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, както можете да видите в gif по -горе.

TestEvent е публичната подпрограма в module2. Просто изскача съобщение, че Събитието работи.

Sub TestEvent () MsgBox "Събитието работи!" End Sub 

Как работи?

Поставихме условие:

Ако не се пресича (Цел, Обхват ("A2: A100")) Няма нищо

Тук Intersect (Target, Range ("A2: A100")) Is Nothing връща True, ако не се правят промени в Range A2: A100. Поставяме оператор Not пред това изявление, което обръща изхода, даден от "Intersect (Target, Range (" A2: A100 "))". Следователно, ако не е направена промяна в обхват A2: A100, изразът връща Falls и подтестовото събитие не получава повикването. Ако направите промяна в която и да е клетка в диапазон A2: A100, изразът ще върне True и събитието ще настъпи. И това се случва тук.

Забележка: Можете да поставите всяка подпрограма в този блок. Тя може да бъде от всеки модул. Но това трябва да е публична подпрограма. Можете да зададете диапазона до всяка степен. Границата е целият лист.

Така че да, момчета, ето как можете да извикате подпрограма или да изпълните макрос/VBA код, когато се направи промяна в определен диапазон. Това беше основен пример за събитие. Това събитие ще се задейства само когато промяната е текстова. Под текстово базиран искам да кажа, ако напишете нещо в клетките или изтриете, събитието ще се задейства. Ако промените форматирането на клетките, то няма да се задейства. Има и други методи за това.

Надявам се да е било полезно. Ако имате някакви запитвания, свързани с тази тема на VBA или друга тема, свързана с Excel, кажете ми секцията за коментари по -долу. И вижте другите ни свързани и популярни публикации, споменати по -долу.

Стартирайте макрос, когато на листа се извърши някаква промяна| Така че, за да стартираме вашия макрос винаги, когато листът се актуализира, използваме събитията от работния лист на VBA.

Най -простият VBA код за маркиране на текущия ред и колона с помощта| Използвайте този малък VBA фрагмент, за да маркирате текущия ред и колона на листа.

Събития на работния лист в Excel VBA| Събитието на работния лист е наистина полезно, когато искате вашите макроси да се изпълняват, когато на листа се появи определено събитие.

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

50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще ви накарат да работите още по -бързо в Excel.

Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.

COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да преброите конкретна стойност. Функцията Countif е от съществено значение за подготовката на вашето табло.

Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.