Как да създавате събития на ниво приложение в Excel VBA

Съдържание:

Anonim

Събитията на ниво приложение работят върху цялото приложение (Excel в тази справка). Но активирането на събитието на приложението не е толкова лесно, колкото създаването на събития на работна книга или работен лист. Но ви уверявам, че и това не е толкова сложно. В тази статия ще научим как да създавате и използвате събитието за приложение в Excel VBA в няколко лесни стъпки.

Стъпка 1: Създайте обект на събитие в модул от клас

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

  • Поставете модул на клас. Назовете го както искате. Нарекох го MyAppEvents.
  • Определете променлива на събитие от Тип на приложението с ключова дума WithEvents.
    Частен WithEvents myApp като приложение
  • Инициализирайте това събитие в подпрограмата class_initialize ().
    От падащото меню вляво изберете клас. След това в горния десен падащ прозорец изберете инициализиране.

    Частен подклас_Initialize () Задайте myApp = Подкан
  • Сега определете събитията, които искате да използвате. От падащото меню в горния ляв ъгъл изберете обекта на събитието. Всички налични процедури за обработка на събития ще бъдат достъпни за вас в горното дясно падащо меню. Изберете каквото ви е необходимо и определете какво искате да направите, когато това събитие се задейства.
    Използвам събитието SheetActivate. Всеки път, когато потребител превключва между листове на която и да е отворена работна книга, тя ще показва името на работната книга и потребителят на листа е избрал.

    Частен под myApp_SheetActivate (ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub 

Тук можете да дефинирате толкова събития, които искате да дефинирате.

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

Сега трябва само да започнем тези събития от нормална подпрограма.

Стъпка 2: Създайте подпрограма за стартиране на събития в нормален модул

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

  • Поставете нормален модул.
  • Определете променлива от класа, който сте създали.
    Частен AppE като MyAppEvents
  • Инициализирайте го в подпрограма. Можете да го кръстите както искате.
    Private Sub StartEvents () Set AppE = New MyAppEvents End Sub
  • Изпълнете този код, като използвате клавиша F5. По избор можете да присвоите този макрос на бутона на работния лист, ако искате да стартирате събитията от работния лист.

И е направено. Сега, когато превключвате листа, ще се появи съобщение с името на работната книга и листа, стига кодът, съдържащ работна книга, да е отворен.

Трудно ли беше? Не мисля така. Кажете ми какво мислите в секцията за коментари по -долу.

Включване и изключване на събития от приложението VBA

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

  • Анулиране на обекта на събитието
  • Задайте EnableEvents на False

1. Анулиране на обекта на събитието

В отделна подпрограма задайте обекта на събитието на Nothing

Private Sub StopEvents () Set AppE = Nothing End Sub

След като стартирате този код, събитията ще спрат да работят. Можете да го поставите в бутон на работния лист, за да спрете събитията. Сега ще имате два бутона за стартиране и спиране на тези конкретни събития. Той просто ще спре събития, създадени от обекта AppE.

2. Задайте EnableEvents на False

Вторият метод е да деактивирате събитията. За да направим всички събития недоловими, ние задаваме свойството EnableEvents на клас Application на Фалшиво.

Private Sub StopEvents () Application.EnableEvents = Подложка за фалшив край

Горният код ще деактивира всички събития. Дори събитията по подразбиране в Excel. Те няма да работят, докато не ги стартирате отново. Дори ако стартирате подпрограмата StartEvents () (по -горе), събитието няма да работи. За да заработите отново всички събития, ще трябва да зададете свойството EnableEvents отново на True.

Така че, ако искате вашите събития да работят всеки път, когато стартирате събитията, добавете този ред код в подсистемата.

Private Sub StartEvents () Application.EnableEvents = True Set AppE = New MyAppEvents End Sub

Стартиране на събития за приложение на клиента при всяко отваряне на работна книга

Ако разработвате инструмент за краен потребител, може да искате събитията да работят автоматично. В този случай можете да поставите стартера на събитието в обекта на работната книга със събитие Workbook_open (), вместо в нормален модул. Това ще направи вашия обект на събитие инициализиран веднага щом отворите работната книга, която съдържа събитията.

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

Изтеглете работния файл по -долу:

Събитията в Excel VBA | В Excel има седем вида събития. Всяко събитие се занимава в различен обхват. Събитието за приложение се занимава на ниво работна книга. Работна тетрадка на ниво листове. Събитие на работен лист на ниво Range.

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

Събития от работна книга, използващи VBA в Microsoft Excel | Събитията от работната книга работят върху цялата работна книга. Тъй като всички листове са част от работната книга, тези събития работят и върху тях.

Предотвратяване на автоматични/eventmacro изпълнения с помощта на VBA в Microsoft Excel| За да предотвратите изпълнението на макроса auto_open, използвайте клавиша shift.

Диаграми на обектни събития с помощта на VBA в Microsoft Excel| Диаграмите са сложни обекти и има няколко компонента, които сте прикрепили към тях. За да направим Chart Events използваме модула Class.

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

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

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

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

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