По време на вашите 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 | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.