Kuidas luua rakenduse tasemel sündmusi Excel VBA -s

Rakendustaseme sündmused töötavad kogu rakenduses (selles viites Excel). Kuid rakenduse sündmuse aktiveerimine pole nii lihtne kui töövihiku või töölehe sündmuste loomine. Kuid ma kinnitan teile, et see pole nii keeruline. Selles artiklis õpime mõne lihtsa sammu abil, kuidas Excelis VBA rakendussündmust luua ja kasutada.

Samm: looge klassimoodulis sündmusobjekt

Sündmusobjekti loomiseks peame kasutama klassi moodulit.

  • Sisestage klassi moodul. Nimetage seda nii, nagu soovite. Panin sellele nimeks MyAppEvents.
  • Määratlege rakenduse tüüpi sündmuse muutuja märksõnaga WithEvents.
    Privaatne koos sündmustega myApp kui rakendus
  • Initsialiseeri see sündmus alamprogrammis class_initialize ().
    Valige vasakpoolsest rippmenüüst klass. Seejärel valige paremas ülanurgas rippmenüüst lähtestamine.

    Private Sub Class_Initialize () Määra myApp = Application End Sub
  • Nüüd määrake sündmused, mida soovite kasutada. Valige vasakus ülanurgas rippmenüüst sündmusobjekt. Kõik saadaolevad sündmuste käsitlemise toimingud on teile saadaval paremas ülanurgas. Valige soovitud ja määrake, mida soovite teha, kui see sündmus käivitub.
    Ma kasutan SheetActivate sündmust. Kui kasutaja vahetab avatud töövihiku lehti, kuvatakse sellel töövihiku nimi ja lehe kasutaja.

    Privaatne alam myApp_SheetActivate (ByVal Sh kui objekt) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub 

Siin saate määratleda nii palju sündmusi, mida soovite määratleda.

Sündmused ei hakka kohe tööle. See oli esimene samm. Kuna see on klassimoodul, peame sündmuste aktiveerimiseks looma selle objekti.

Nüüd peame neid sündmusi alustama ainult tavalisest alamprogrammist.

2. samm: looge sündmuste alustamise alamprogramm tavalises moodulis

Nüüd on meil üritustund. Peame lihtsalt looma selle klassi objekti ja selle initsialiseerima. Kui oleme selle alamprogrammi käivitanud, hakkavad kõik sündmuste klassi määratletud sündmused tööle.

  • Sisestage tavaline moodul.
  • Määrake loodud klassi muutuja.
    Privaatne rakendus kui MyAppEvents
  • Initsialiseeri see alamprogrammis. Võite seda nimetada nii, nagu soovite.
    Private Sub StartEvents () Set AppE = New MyAppEvents End Sub
  • Käivitage see kood, kasutades klahvi F5. Soovi korral saate selle makro töölehe nupule määrata, kui soovite sündmusi töölehelt alustada.

Ja seda tehakse. Nüüd, kui vahetate lehti, kuvatakse sõnumikast töövihiku ja lehe nimega, kui töövihikut sisaldav kood on avatud.

Kas see oli raske? Ma ei usu. Andke mulle teada, mida arvate allpool olevas kommentaaride jaotises.

VBA rakenduse sündmuste sisse- ja väljalülitamine

Kui olete makro tavalises moodulis käivitanud, käivitub see alati, kuni sulgete sündmusi sisaldava töövihiku. Kuid võite soovida, et nad lülitaksid need teie soovil sisse ja välja. Selleks on kaks võimalust.

  • Sündmuse objekti tühistamine
  • Määrake EnableEvents väärtuseks Väär

1. Sündmuse objekti tühistamine

Eraldi alamprogrammis määrake sündmuse objekt väärtuseks Mitte midagi

Private Sub StopEvents () Set AppE = Nothing End Sub

Kui olete selle koodi käivitanud, lakkavad sündmused töötamast. Sündmuste peatamiseks saate selle töölehe nupule panna. Nüüd on teil nende sündmuste alustamiseks ja peatamiseks kaks nuppu. See lihtsalt peatab AppE objekti loodud sündmused.

2. Määrake EnableEvents väärtuseks Väär

Teine meetod on sündmuste keelamine. Kõigi sündmuste kättesaamatuks muutmiseks määrasime rakendusklassi omaduse EnableEvents väärtuseks Vale.

Privaatne alam StopEvents () Application.EnableEvents = False End Sub

Ülaltoodud kood keelab kõik sündmused. Isegi vaikimisi Exceli sündmused. Need ei tööta enne, kui alustate neid uuesti. Isegi kui käivitate alamprogrammi StartEvents () (ülal), ei toimi sündmus. Kõikide sündmuste uuesti toimimiseks peate EnableEvents atribuudi uuesti väärtuseks True määrama.

Nii et kui soovite, et teie sündmused toimiksid iga kord sündmuste käivitamisel, lisage see koodirida alamjaotisse.

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

Mugavate rakendussündmuste käivitamine iga kord, kui töövihik avatakse

Kui arendate lõppkasutajale tööriista, võiksite soovida, et sündmused toimiksid automaatselt. Sellisel juhul saate sündmuse käivitaja panna tavalise mooduli asemel töövihiku objekti sündmusega Workbook_open (). See muudab teie sündmusobjekti initsialiseerituks kohe, kui avate sündmusi sisaldava töövihiku.

Nii et jah, poisid, nii saate rakendusesündmust Excelis kasutada. Andke mulle teada, kas see oli piisavalt selgitav ja aitas teil mõista rakenduse taseme sündmusi Excel VBA-s allpool kommentaaride osas. Kui teil on sellele midagi lisada, kirjutage see ka üles. Allpool olevas kommentaaride jaotises saate esitada oma päringuid, mis on seotud selle artikli või mõne muu Exceli VBA -ga seotud teemaga.

Laadige alla tööfail:

Sündmused Excelis VBA | Excelis on seitset tüüpi sündmusi. Iga sündmus käsitleb erinevat ulatust. Rakendussündmus käsitleb töövihiku taset. Töövihik lehtede tasemel. Töölehe sündmus vahemiku tasemel.

Töölehe sündmused Excel VBA -s| Töölehe sündmus on tõesti kasulik, kui soovite oma makrosid käivitada, kui lehel toimub teatud sündmus.

Töövihikuüritused, kasutades Microsoft Excelis VBA -d | Töövihikuüritused töötavad kogu töövihiku kallal. Kuna kõik lehed on osa töövihikust, töötavad need sündmused ka nende kallal.

Vältige automacro/eventmacro käivitamist Microsoft Excelis VBA abil| Auto_open makro käivitamise vältimiseks kasutage tõstuklahvi.

Diagrammige objekti sündmused Microsoft Excelis VBA abil| Diagrammid on keerulised objektid ja neile on lisatud mitu komponenti. Diagrammi sündmuste tegemiseks kasutame klassi moodulit.

Populaarsed artiklid:

50 Exceli otseteed tootlikkuse suurendamiseks | Saa oma ülesandega kiiremini hakkama. Need 50 otseteed muudavad teie töö Excelis veelgi kiiremaks.

Funktsioon VLOOKUP Excelis | See on üks enim kasutatud ja populaarsemaid Exceli funktsioone, mida kasutatakse erinevate vahemike ja lehtede väärtuse otsimiseks.

COUNTIF Excelis 2016 | Loendage väärtused tingimustega, kasutades seda hämmastavat funktsiooni. Te ei pea konkreetse väärtuse loendamiseks oma andmeid filtreerima. Countif funktsioon on armatuurlaua ettevalmistamisel hädavajalik.

Funktsiooni SUMIF kasutamine Excelis | See on veel üks armatuurlaua oluline funktsioon. See aitab teil teatud tingimustel väärtusi kokku võtta.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave