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

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

Anonim

Генерално, догађаји нису ништа друго него се догађају. Исто је и у екцелу. Али понекад желимо да се нешто догоди аутоматски када се догоди одређени догађај. Да бисмо нешто урадили када се одређени догађај догоди у Екцелу, користимо Екцел ВБА догађај.

Водитељи догађаја Екцел ВБА: врсте

У Екцел ВБА постоји углавном 7 врста управљача догађајима.

  1. Догађаји апликације
  2. Догађаји у радној свесци
  3. Догађаји на радном листу
  4. Догађаји на графикону
  5. Догађаји на обрасцу корисника
  6. Догађаји са комбинацијом тастера (пречаци)
  7. Догађаји на време

Хајде да их истражимо један по један.

Догађаји апликације у Екцелу

Догађаји на нивоу апликације покрећу се када је апликација (Екцел) затворена, отворена, активирана, заштићена, незаштићена итд.

На нивоу апликације постоји више од 50 врста догађаја. Дакле, не можемо овде расправљати о свима њима.

Обим догађаја пријаве:

Ови догађаји ће радити на свим Екцеловим радним свескама, све док је код који садржи радну свеску отворен. На пример, ако сте креирали догађај на нивоу апликације који ће вам рећи име листа активног листа, он ће се покренути при свакој активацији листа било које радне свеске.

Како креирати управљач догађајима апликације у ВБА?

Креирање догађаја апликације је помало незгодно. Овде сам то детаљно објаснио примером.

Догађаји радне свеске у Екцелу

Опсег догађаја радне свеске

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

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

Догађаји радне свеске су записани на објекту радне свеске.

Како написати догађај радне свеске?

Пратите ове кораке:

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

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

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

4. Одаберите догађај који вам је потребан. Ради примера, бирам догађај СхеетАцтивате. Овај догађај се активира при сваком избору листа у коду који садржи радну свеску.

Пример догађаја из радне свеске:Ово је једноставан пример. Само желим да прикажем назив радног листа који је активиран. За то једноставно користим догађај СхеетАцтивате у објекту Воркбоок.

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

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

Знам да овај код није толико користан, али можете ставити било који скуп упутстава између ових редова. Можете позвати функције и потпрограме из самих модула.

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

Сви догађаји циљани на опсег и ћелије записани су у догађаје на радном листу. Овде можете прочитати о догађајима на радном листу.

Опсег догађаја радног листа

Догађаји радног листа циљају се на опсеге и ћелије одређеног радног листа. Догађај радног листа ће се покренути на догађаје који се дешавају на одређеном радном листу (радни лист који садржи код).

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

Догађаји радног листа су записани на објекту радног листа.

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

То је исто што и догађаји из радне свеске.

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

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

3. Када изаберете радни лист са левог падајућег менија, он ће подразумевано уметнути потпрограм догађаја ворксхеет_селецтионЦханге. Али ако желите да користите другу потпрограм догађаја, изаберите је са падајућег менија у горњем десном углу. Он ће навести све доступне догађаје на радном листу.

4. Одаберите догађај који вам је потребан. Ради примера, бирам догађај Ворксхеет_СелецтионЦханге (БиВал Таргет Ас Ранге). Овај догађај се активира при свакој промени избора опсега на листу.

Пример догађаја радног листа

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

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

Догађаји радног листа се углавном користе на динамичким контролним таблама. Ћелије можете да користите као поља за потврду или као активни избор да бисте контролне табле учинили динамичнима.

Испод је још неколико примера догађаја на радном листу.

Коришћење догађаја промене радног листа за покретање макроа када се изврши било каква промена

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

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

Догађаји на графикону

У Екцелу постоје две врсте догађаја графикона. Један су обично уграђени графикони о којима смо овде детаљно разговарали. То је слично догађајима на нивоу апликације.

Други је лист графикона. Ово су посебни листови који садрже само графиконе повезане са подацима на неким другим листовима.

Што се тиче догађаја, они су слични уобичајеним листовима.

Где написати догађаје на графиконима?

Догађаји графикона су записани у објекту графикона. Само двапут кликните на графикон да бисте отворили подручје кода.

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

Пратите ове кораке:

1. У истраживачу пројеката двапут кликните на објект листа графикона да бисте отворили подручје кода. Овде су записани сви специфични догађаји везани за графикон.

2. У горњем десном углу подручја кода видећете уобичајени падајући мени. Изаберите графикон са тог падајућег менија.

3. У десном углу изаберите догађај који желите.

На пример, ако желим да учиним нешто чим корисник изабере графикон, користићу догађај Цхарт_Ацтивате.

Пример: Догађај на листу графикона

Привате Суб Цхарт_Ацтивате () МсгБок "Графикон је освежен" Енд Суб 

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

Испод је још неколико примера догађаја графикона:

Догађаји УсерФорм -а

Догађај корисничког обрасца је исти као и други догађаји. На корисничком обрасцу се дешава неколико догађаја. Те догађаје можете користити за покретање догађаја.

Где написати догађаје Корисничког обрасца?

Да бисте написали догађај корисничког обрасца, прво морате да уметнете УсерФорм.

1. Затим десним тастером миша кликните на УсерФорм и кликните на код приказа. Сада ће се отворити подручје кода.

2. Сада у горњем левом углу изаберите Усерформ.

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

4. Упишите код који желите између кода догађаја кода.

Доњи пример једноставно приказује поруку када је кориснички образац активиран.

Привате Суб УсерФорм_Ацтивате () МсгБок "Здраво, двапут верификујте своје податке." Енд Суб 

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

Догађај на кључу

Ови догађаји се покрећу када се притисне одређени тастер или комбинација тастера. То је слично стварању сопствених пречица.

Догађај ОнКеи је заправо функција или метода класе апликације која има два аргумента као што је приказано испод:

Апплицатион.онкеи Кључ, ["процедура"]

Тхе кључ је кључ или комбинација тастера које желите да користите као окидач.

"Процедура" је опционални аргумент који је назив низа процедуре или макроа који желите да покренете. Ако не дефинишете процедуру, она ће покренути тренутну процедуру.

Где написати Онкеи Догађаје?

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

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

Како написати руковаоца Онкеи догађаја?

Дакле, ако већ имате неке макрое које желите да покренете са наведеном пречицом, напишите нову процедуру која ће садржати листу пречица. На пример, овде имам макро који приказује поруку на којој пречица ради.

Суб схов_мсг () МсгБок "Пречица ради" Енд Суб 

Сада желим да покренем овај макро док притискам комбинацију тастера ЦТРЛ+ј. Да бих то урадио, пишем доњи ВБА код.

Суб Ацтивате_Онкеи () Апплицатион.ОнКеи "^ј", "схов_мсг" Енд Суб

"^" (карате) је за ЦТРЛ тастер. Испод је табела за све кључне скраћенице у екцелу ВБА.

хттпс://доцс.мицрософт.цом/ен-ус/оффице/вба/апи/екцел.апплицатион.онкеи

Како активирати Онкеи Евент?

Након писања горњег кода у модул, ако одете у Екцел екран и користите тастере ЦТРЛ+Ј, неће радити. Прво морате покренути подмени који дефинише ОнКеи догађаје. Зато покрените једном помоћну подлогу Ацтивате_Онкеи () и тада ће радити током целе сесије. Када затворите радну свеску која садржи дефиниције Онкеи -а, она ће престати да ради.

Онкеи дефиниције можете ставити у процедуру за коју желите да се догоди. Али тада ћете морати ручно покренути макро. Зато предлажем да се догађаји Онкеи ставе у догађаје Воркбоок_Опен. То ће омогућити да се сви догађаји на тастатури активирају аутоматски.

Догађај Онтиме у програму Екцел

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

Синтакса догађаја ОнТиме

Догађај Онтиме је функција класе Апплицатион. Има два битна аргумента и два изборна аргумента.

Апплицатион.Онтиме ЕарлиестТиме, "Процедура", [ЛатестТиме], [Сцхедуле]

ТхеЕарлиестТимеје време када желите да се ваша процедура покрене. Али Екцел ће покренути наведени макро након дефинисаног најранијег времена, само када је бесплатан.

Тхе "Процедура" је назив процедуре коју желите да покренете у наведено време.

Као што сам рекао, нема гаранције да ће Екцел покренути вашу процедуру у одређено време. Тхе ЛастестТимеје време после најранијег времена да Екцел -у дате прозор да буде слободан и изврши ваш задатак.

Ако желите да деактивирате заказани догађај ОнТиме, поставите гараспоред до лажних.

Где написати ванредни догађај?

Догађај ОнТиме може се записати у било који модул. Морат ћете извршити догађај који садржи процедуру за активирање догађаја.

Ако желите да се ваш догађај активира чим отворите радну свеску која садржи догађај, ставите га у догађај воркбоок_опен. Он ће активирати догађај чим отворите код који садржи догађај у Екцелу.

Како написати Онтиме догађај?

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

Суб схов_мсг () МсгБок "Тренутни датум и време су" & Нов Енд Суб

Сада, ако желите да се ова процедура покрене након 5 секунди покретања другог макроа, мораћете да унесете овај код.

Суб ОнТимеТест () '-неки други задаци Апплицатион.онтиме Нов + (5 /24 /60 /60), "схов_мсг" Енд Суб

Када покренете потпрограм ОнТимеТест, након пет секунди њеног покретања покренуће се потпрограм схов_мсг. Зато ће бити добро ако желите да учините нешто након неколико пута рада на нечем другом, користите горњу структуру.

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

Суб ОнТимеТест () МсгБок "Тренутни датум и време су" & Нов Апплицатион.онтиме Нов + (5 /24 /60 /60), "ОнТимеТест" Енд Суб

Горња потпрограм ће се покретати након сваких пет секунди након што је покренете.

Па да, момци, ово су догађаји у Екцел ВБА. Неке од горе наведених категорија изазивају разне догађаје. Наравно, не могу све овде да објасним. То ће учинити чланак дугачким за књигу. Ово је био само увод у догађаје доступне у Екцел ВБА. За више информација следите везе уграђене у чланке. У наставку сам споменуо неке повезане чланке. Можете их и прочитати.

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

Догађаји радног листа у програму Екцел ВБА| Догађај радног листа је заиста користан када желите да се ваши макрои покрену када се на листу појави одређени догађај.

Догађаји радне свеске користећи ВБА у Мицрософт Екцелу | Догађаји радне свеске раде на целој радној свесци. Пошто су сви листови део радне свеске, и ови догађаји раде на њима.

Спречите аутоматско извршавање/евентмацро извршавање помоћу ВБА у Мицрософт Екцелу | Да бисте спречили покретање макроа ауто_опен, користите тастер схифт.

Забележите догађаје објеката помоћу ВБА у програму Мицрософт Екцел | Графикони су сложени објекти и постоји неколико компоненти које сте им придружили. За израду Цхарт Евентс -а користимо Цласс модул.

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

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

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

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

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