Догађаји радног листа у програму Екцел ВБА

Преглед садржаја:

Anonim

Можда ћете желети да покренете свој макро/ВБА исечак када ћелија промени своју вредност, када се деси двоструки клик, када се изабере лист итд. У свим овим случајевима користимо алатку за руковање догађајима радног листа. Руковалац догађајима помаже нам да покренемо ВБА код кад год се догоди одређени догађај.

У овом чланку ћемо укратко научити о сваком управљачу догађајима на радном листу.

Шта је управљач догађајима на радним листовима?

Руковалац догађајима радног листа је потпрограм који је локални за модул радног листа.

Где написати код за руковање догађајима на радном листу?

Догађаји радног листа су записани само у објектима листова. Ако напишете догађај радног листа у неки модул или модул класе, неће бити грешке, али једноставно неће радити.

За писање у објекат листа. Двапут кликните на њега или кликните десним тастером миша и кликните на код за приказ. Приказаће се област за писање кода.

Како написати код за одређени догађај на радном листу?

Сада када сте у режиму уређивања, у падајућем менију у горњем левом углу видећете опште. Кликните на падајући мени и изаберите радни лист. Сада ће се у падајућем менију у горњем десном углу приказати сви догађаји. Одаберите шта год вам је потребно и за вас ће бити написан скелетни код за тај догађај.

Сваки догађај има фиксно име процедуре. Ово су резервисани називи потпрограма. Не можете их користити за друге потпрограме на листу. У модулу ће радити као нормална потпрограм.

Важно: Свака потпрограм са те листе ће се изводити на наведеном догађају.
Једна врста поступка на радном листу може се написати само једном на један лист. Ако напишете две исте процедуре управљања догађајима на један лист, то ће довести до грешке и ниједна од њих неће бити извршена. Наравно, грешка ће бити двосмислене потпрограми.

Хајде да укратко сазнамо о сваком од догађаја.

1. ТхеРадни лист_Промени (БиВал циљ као опсег)Догађај

Овај догађај се активира када извршимо било какву промену у садржају радних листова (форматирање је искључено). Ако желите да учините нешто ако се промени цео лист, код ће бити:

Привате Суб Ворксхеет_Цханге (БиВал Таргет Ас Ранге) 'до сомехтинг Мсгбок "доне доне" Енд Суб 

"Циљ" је увек активна ћелија.

Још један пример: Можда желите да ставите датум и време у ћелију Б1 ако се А1 промени. У том случају користимо догађај ворксхеет_цханге. Код би изгледао овако:

Привате Суб Ворксхеет_Цханге (БиВал Таргет Ас Ранге) Ако Таргет.Аддресс = "$ А $ 1" Затим Ранге ("Б1"). Валуе2 = Формат (Нов (), "хх: мм: сс") Енд Иф Енд Суб 

Ово ће циљати само ћелију А1.

Ако желите да циљате опсег, користите следећи пример:

Покрените макро ако је на листу унета било каква промена у наведеном опсегу

2. ТхеРадни лист_СелецтионЦханге (БиВал циљ као опсег)Догађај

Као што име говори, овај догађај се активира када се промени избор. Другим речима, ако се курсор налази у ћелији А1 и премести се у неку другу ћелију, код у овој потпрограми ће се покренути.

Код у наставку ће променити боју активних ћелија ако се промени кад год се појави и ако је то паран ред.

Привате Суб Ворксхеет_СелецтионЦханге (БиВал Таргет Ас Ранге) Иф Таргет.Ров Мод 2 = 0 Тхен Таргет.Интериор.ЦолорИндек = 22 Енд Иф Енд Суб 

Сада, кад год се курсор помери на парни ред, биће обојен. Непарне ћелије реда ће бити поштеђене.

Још један пример догађаја Ворксхеет_СелецтионЦханге:

Најједноставнији ВБА код за означавање тренутног реда и колоне помоћу

3. Тхе Радни лист_Ацтивате () Догађај

Овај догађај се активира када се активира код догађаја који садржи лист. Скелетни код за овај догађај је:

Привате Суб Ворксхеет_Ацтивате () Енд Суб 

Једноставан пример је приказивање имена листа када се изабере.

Привате Суб Ворксхеет_Ацтивате () МсгБок "Иоу аре он" & АцтивеСхеет.Наме Енд Суб 

Чим дођете на лист који садржи овај код, догађај ће се покренути и приказаће вам се порука „Ви сте на имену листа“ (лист 2 је у мом случају).

4. Тхе Радни лист_Деактивирај () Догађај

Овај догађај се активира када напустите код који садржи лист. Другим речима, ако желите да учините нешто, као што је сакривање редова или било шта када напустите лист, користите овај ВБА догађај. Синтакса је:

Привате Суб Ворксхеет_Деацтивате () 'ваш код' Енд Суб 

Доле наведени пример Ворксхеет_Деативате једноставно ће искочити порука да сте напустили главни лист, када напустите овај лист.

Приватни под -радни лист_Деацтивате () МсгБок "Напустили сте главни лист" Крај Суб 

5. Тхе Радни лист_БефореДелете ()Догађај

Овај догађај се активира када потврдите брисање листа са догађајем ВБА. Синтакса је једноставна:

Привате Суб Ворксхеет_БефореДелете () Енд Суб 

Код испод ће вас питати желите ли копирати садржај листа о брисању.

Привате Суб Ворксхеет_БефореДелете () анс = МсгБок ("Да ли желите да копирате садржај овог листа на нови лист?", ВбИесНо) Иф анс = Труе тхен 'код за копирање Енд Иф Енд Суб 

6. Тхе Ворксхеет_БефореДоублеЦлицк (БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Догађај

Овај догађај се активира када двапут кликнете на циљану ћелију. Синтакса овог догађаја ВБА радног листа је:

Привате Суб Ворксхеет_БефореДоублеЦлицк (БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Енд Суб 

Ако не поставите циљну ћелију или опсег, активираће се при сваком двоструком клику на листу.
Варијабла Цанцел је логичка променљива. Ако поставите вредност Труе, подразумевана радња се неће догодити. То значи да ако двапут кликнете на ћелију, она неће ући у режим уређивања.
Код испод ће учинити да се ћелија испуни бојом ако двапут кликнете на било коју ћелију.

Привате Суб Ворксхеет_БефореДоублеЦлицк (БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Цанцел = Труе Таргет.Интериор.ЦолорИндек = 7 Енд Суб 

Код у наставку циља ћелију А1. Ако је већ испуњен наведеном бојом, боја ће нестати. То је слично дугмету за потврду или пољу за потврду.

Привате Суб Радни лист_БефореДоублеЦлицк(БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Иф Таргет.Аддресс = "$ А $ 1" тхен Цанцел = Труе Иф Таргет.Интериор.ЦолорИндек = 4 Онда Таргет.Интериор.ЦолорИндек = клЦолорИндекНоне Елсе Таргет.Интериор.ЦолорИндек = 4 Енд Иф Енд Иф Енд Суб 

7. Тхе Ворксхеет_БефореРигхтЦлицк (БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Догађај

Овај догађај се активира када десном типком миша кликнете на циљану ћелију. Синтакса овог догађаја ВБА радног листа је:

Привате Суб Радни лист_БефореРигхтЦлицк(БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Цанцел = Труе '' ваш код 'Енд Суб 

Код испод ће испунити ћелију вредношћу 1 ако је притиснете десним тастером миша. Неће приказати подразумеване опције десног клика јер смо оператор „Откажи“ поставили на Тачно.

Привате Суб Ворксхеет_БефореРигхтЦлицк (БиВал Таргет Ас Ранге, Цанцел Ас Боолеан) Цанцел = Труе Таргет.Валуе = 1 Енд Суб 

8. Тхе Радни лист_Прорачунај () Догађај

Ако желите да се нешто догоди када Екцел израчуна лист, користите овај догађај. Покренуће се сваки пут када Екцел израчуна лист. Синтакса је једноставна:

Привате Суб Ворксхеет_Цалцулате () '' ваш код 'Енд Суб 

6. Тхе Радни лист_ФолловХиперлинк (БиВал циљ као хипервеза)Догађај

Ова процедура ће се покренути када кликнете на хипервезу на листу. Основна синтакса овог руковаоца догађајима је:

Привате Суб Ворксхеет_ФолловХиперлинк (БиВал Таргет Ас Хиперлинк) '' ваш код 'Енд Суб 

Можете поставити циљну хипервезу ако желите. Ако не поставите циљну хипервезу, она ће се извршити ако кликнете на било коју хипервезу на листу са кодом.

Па да, момци, ово су били неки основни догађаји на радном листу који ће бити корисни ако знате за њих. Испод су неки повезани чланци које бисте можда желели да прочитате.

Ако имате било каквих недоумица у вези са овим чланком или било којим другим чланком везаним за Екцел/ВБА, јавите нам у одељку за коментаре испод.

Коришћење догађаја промене радног листа за покретање макроа када се изврши било каква промена| Дакле, за покретање вашег макроа кад год се лист ажурира, користимо ВБА догађаје радног листа.

Покрените макро ако је на листу унета било каква промена у наведеном опсегу| Да бисте покренули макро код када се вредност у наведеном опсегу промени, користите овај ВБА код. Он детектује сваку промену направљену у наведеном опсегу и покреће догађај.

Најједноставнији ВБА код за означавање тренутног реда и колоне помоћу | Користите овај мали ВБА исечак да означите тренутни ред и колону листа.

Популарни чланци:

50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће ваш рад учинити још бржим у Екцелу.

Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.

ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате да филтрирате податке да бисте рачунали одређену вредност. Цоунтиф функција је неопходна за припрему ваше контролне табле.

Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.