Можда ћете желети да покренете свој макро/ВБА исечак када је изабрана одређена радна свеска, изабран је лист у радној свесци, ћелија мења своју вредност, када се деси двоструки клик, када се дода лист итд. У свим овим случајевима користимо Руковалац догађајима у радној свесци. Руковалац догађајима помаже нам да покренемо ВБА код кад год се догоди одређени догађај.
У овом чланку ћемо укратко научити о сваком водичу догађаја у радној свесци.
Шта је руковалац догађајима радне свеске?
Руковалац догађајима радне свеске је потпрограм који је локални за радну свеску. Ови кодови раде само на компонентама радне свеске. То су сама радна свеска, њени листови и распони.
Где написати код за руковање догађајима радне свеске?
Догађаји радне свеске су записани само у објекту радне свеске. Ако догађај радне свеске напишете у неки нормални модул, неће бити грешке, али једноставно неће радити.
За писање у објекат радне свеске. Двапут кликните на њега или кликните десним тастером миша и кликните на код за приказ. Приказаће се област за писање кода.
Како написати код за одређени догађај у радну свеску?
Сада када сте у режиму уређивања, у падајућем менију у горњем левом углу видећете опште. Кликните на падајући мени и изаберите радну свеску. У падајућем менију у горњем десном углу приказаће се сви догађаји. Одаберите шта год вам је потребно и за вас ће бити написан скелетни код за тај догађај.
Сваки догађај има фиксно име процедуре. Ово су резервисани називи потпрограма који почињу са радна свеска_. Не можете их користити за друге потпрограме
(можете, али то ће бити нормалне потпрограми).
Важно: Свака потпрограм са те листе ће се изводити на наведеном догађају.
Једна врста поступка у радној свесци може се написати само једном у једну радну свеску. Ако у једну радну свеску напишете две исте процедуре за руковање догађајима, то ће довести до грешке и ниједна од њих неће бити извршена. Наравно, грешка ће бити двосмислене потпрограми.
Хајде да укратко сазнамо о сваком од догађаја.
1. Тхе Воркбоок_СхеетЦханге (БиВал Сх као објекат, БиВал циљ као опсег) Догађај
Овај догађај се активира када извршимо било какву промену у садржају радних листова (форматирање је искључено). Ако желите да учините нешто ако дође до промене на било ком листу, код ће бити:
Привате Суб Воркбоок_СхеетЦханге (БиВал Сх Ас Објецт, БиВал Таргет Ас Ранге) 'уради нешто Мсгбок "урадио је нешто" Енд Суб
"Сх" је увек активни лист. "Циљ" је увек активна ћелија.
Други пример: Можда ћете желети да ставите датум и време у Цел, прл Б1 ако се А1 промени. У том случају користимо догађај воркбоок_схеетцханге. Код би изгледао овако:
Привате Суб Воркбоок_СхеетЦханге (БиВал Сх Ас Објецт, БиВал Таргет Ас Ранге) Иф Таргет.Аддресс = "$ А $ 1" тхен Ранге ("Б1"). Валуе2 = Формат (Нов (), "хх: мм: сс") Енд Иф Енд Суб
Ово ће циљати само ћелију А1 на сваком листу јер нисмо навели објекат "сх".
2. Тхе Радна свеска_Активирај () Догађај
Овај догађај се активира када се активира код догађаја који садржи радну свеску. Скелетни код за овај догађај је:
Привате Суб Воркбоок_Ацтивате () Енд Суб
Једноставан пример је приказивање назива радне свеске када се изабере.
Привате Суб Воркбоок_Ацтивате () МсгБок "Иоу аре он воркбоок" & Ацтивеворкбоок.Наме Енд Суб
Чим дођете у радну свеску која садржи овај код, догађај ће се покренути и приказаће вам се порука „Налазите се у имену радне свеске“ (лист 2 је у мом случају).
3. Тхе Воркбоок_Опен () Догађај
Ово је једно од најчешћих питања како покренути макро чим се радна свеска отвори. Ово је одговор. Овај догађај радне свеске покреће се чим се радна свеска отвори. За разлику од Воркбоок_Ацтивате () овај код се покреће само једном, а не сваки пут када се активира.
Привате Суб Воркбоок_Опен () 'иоур цоде' Енд Суб
Доле наведени пример Воркбоок_Опен догађај ће једноставно искочити поруку добродошлице, када отворите код који садржи радну свеску.
Привате Суб Воркбоок_Опен () МсгБок "Добро дошли у главну датотеку" Енд Суб
4. Тхе Воркбоок_Деацтивате () Догађај
Овај догађај се активира при напуштању кода који садржи радну свеску. Другим речима, ако желите да учините нешто, попут скривања листова или било чега другог приликом промене радне свеске, користите овај ВБА догађај. Синтакса је:
Привате Суб Воркбоок_Деацтивате () 'ваш код' Енд Суб
Доле наведени пример Воркбоок_Деативате догађаја ће једноставно појавити поруку да сте напустили главни лист, када напустите овај лист.
Привате Суб Воркбоок_Деацтивате () МсгБок "Иоу Лефт Тхе Мастер Схеет" Енд Суб
5. Тхе Воркбоок_БефореЦлосе () Догађај
Овај догађај се активира када потврдите брисање листа са догађајем ВБА. Синтакса је једноставна:
Привате Суб Воркбоок_БефореЦлосе (Цанцел ас Боолеан) Енд Суб
Отказивање се може поставити на тачно ако желите да радна свеска остане отворена.
У доњем коду ће се поставити питање да ли желите да сачувате садржај радне свеске о затварању.
Привате Суб Воркбоок_БефореЦлосе (Цанцел ас Боолеан) анс = МсгБок ("Желите ли да сачувате садржај ове радне свеске?", ВбИесНо) Иф анс = Труе тхен тхисворкбоок.саве Енд Иф Енд Суб
6. Тхе Воркбоок_БефореСаве (БиВал СавеАсУИ као Боолеан, Цанцел Ас Боолеан) Догађај
Овај догађај се активира пре него што се сачува радна свеска. Синтакса је једноставна:
Привате Суб Воркбоок_БефореСаве (БиВал СавеАсУИ као Боолеан, Цанцел Ас Боолеан) Енд Суб
СавеАсУИ је постављено на Труе ако дође до промене у радној свесци (не у ВБА).
Отказивање се може поставити на тачно ако желите да радна свеска остане несачувана.
У доњем коду ће се поставити питање да ли желите да сачувате садржај радне свеске коју ћете спремити.
Привате Суб Воркбоок_БефореСаве (БиВал СавеАсУИ Као Боолеан, Откажи као Боолеан) анс = МсгБок ("Да ли заиста желите да сачувате садржај ове радне свеске?", ВбИесНо) Иф анс = Фалсе тхен Цанцел = Труе Енд Иф Енд Суб
7. Тхе Воркбоок_БефореСаве (БиВал СавеАсУИ као Боолеан, Цанцел Ас Боолеан) Догађај
Овај догађај се активира пре него што се сачува радна свеска. Синтакса је једноставна:
Привате Суб Воркбоок_БефореСаве (БиВал СавеАсУИ као Боолеан, Цанцел Ас Боолеан) Енд Суб
СавеАсУИ је постављено на Труе ако дође до промене у радној свесци (не у ВБА).
Отказивање се може поставити на тачно ако желите да радна свеска остане несачувана.
У доњем коду ће се поставити питање да ли желите да сачувате садржај радне свеске коју ћете спремити.
Привате Суб Воркбоок_БефореСаве (БиВал СавеАсУИ Као Боолеан, Откажи као Боолеан) анс = МсгБок ("Да ли заиста желите да сачувате садржај ове радне свеске?", ВбИесНо) Иф анс = Фалсе тхен Цанцел = Труе Енд Иф Енд Суб
8. Тхе Воркбоок_НевСхеет (БиВал Сх Ас Објецт) Догађај
Овај догађај се активира када додате нови лист у радну свеску. Синтакса је једноставна:
Привате Суб Воркбоок_НевСхеет (БиВал Сх Ас Објецт) Енд Суб
Сх је објекат листа. Тип је заправо основни објект, па ако додамо лист графикона, макро лист или дијалошки лист, догађај ће и даље функционирати.
Код испод ће додати и приказати назив листа који је недавно додат.
Привате Суб Воркбоок_НевСхеет (БиВал Сх Ас Објецт) МсгБок "Додали сте нови лист." & Сх.Наме Енд Суб
Постоји још много догађаја објекта радне свеске. Не можемо овде расправљати о свима њима. Ако желите да знате о неком конкретном догађају, питајте у одељку за коментаре испод. Надам се да сам успео да објасним основе догађаја из радне свеске у овом чланку. Јавите ми да ли вам је помогло у одељку коментара испод.
Повезани чланци:
Коришћење догађаја промене радног листа за покретање макроа када се изврши било каква промена | Дакле, за покретање вашег макроа кад год се лист ажурира, користимо ВБА догађаје радног листа.
Покрените макро ако је на листу унета било каква промена у наведеном опсегу | Да бисте покренули макро код када се вредност у наведеном опсегу промени, користите овај ВБА код. Он детектује сваку промену направљену у наведеном опсегу и покреће догађај.
Најједноставнији ВБА код за означавање тренутног реда и колоне помоћу | Користите овај мали ВБА исечак да означите тренутни ред и колону листа.
Популарни чланци:
50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће ваш рад учинити још бржим у Екцелу.
Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.
ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате да филтрирате податке да бисте рачунали одређену вредност. Цоунтиф функција је неопходна за припрему ваше контролне табле.
Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.