În general, evenimentele nu sunt altceva decât se întâmplă din ceva. La fel este și în Excel. Dar uneori dorim ca ceva să se întâmple automat atunci când apare un anumit eveniment. Pentru a face ceva atunci când se întâmplă un anumit eveniment în Excel, folosim evenimentul Excel VBA.
Manipulatori de evenimente VBA Excel: tipuri
Există în principal 7 tipuri de gestionare de evenimente în Excel VBA.
- Evenimente de aplicare
- Evenimente din registru de lucru
- Evenimente din foaia de lucru
- Grafic Evenimente
- Evenimente din formularul de utilizator
- Combinație de taste Evenimente (evenimente cu taste de comenzi rapide)
- Evenimente la timp
Să le explorăm pe rând.
Evenimente de aplicații în Excel
Evenimentele la nivel de aplicație sunt declanșate atunci când aplicația (Excel) este închisă, deschisă, activată, protejată, neprotejată etc.
Există mai mult de 50 de tipuri de evenimente la nivelul aplicației. Deci nu le putem discuta pe toate aici.
Domeniul de aplicare al evenimentului de aplicare:
Aceste evenimente vor funcționa pe toate registrele de lucru Excel, atâta timp cât codul care conține registrul de lucru este deschis. De exemplu, dacă ați creat un eveniment la nivel de aplicație pentru a vă spune numele foii foii active, atunci acesta va fi declanșat la fiecare activare a foii din orice registru de lucru.
Cum se creează un handler de evenimente Aplicație în VBA?
Crearea evenimentului aplicației este un pic dificilă. Am explicat aici în detaliu, cu un exemplu.
Evenimente din registru de lucru în Excel
Scopul evenimentului din registrul de lucru
Evenimentele din registrul de lucru funcționează pe întregul registru de lucru care conține codul. Evenimentul poate deschide, închide, activa, dezactiva, schimba foaia etc.
Unde să scrieți evenimente din Workbook?
Evenimentele din registrul de lucru sunt scrise pe obiectul din registrul de lucru.
Cum se scrie un eveniment de registru de lucru?
Urmați acești pași:
1. În exploratorul de proiecte, faceți dublu clic pe obiectul din registrul de lucru. Va fi afișată zona de scriere a codului. Toate evenimentele cuprinse în registrul de lucru sunt scrise aici.
2. În partea stângă sus a zonei de scriere a codului, veți vedea un meniu derulant. Faceți clic pe meniul drop-down și alegeți registrul de lucru. În mod implicit, este general.
3. După ce alegeți registrul de lucru din meniul derulant din stânga, acesta va insera în mod implicit un subrutină de evenimente workbook_open. Dar dacă doriți să utilizați un alt subrutin de evenimente, alegeți-l din meniul derulant din dreapta sus. Acesta va enumera toate evenimentele disponibile din registrul de lucru.
4. Alegeți evenimentul de care aveți nevoie. De exemplu, aleg evenimentul SheetActivate. Acest eveniment se declanșează pe fiecare selecție a foii din codul care conține registrul de lucru.
Exemplu de eveniment de carte de lucru:Acesta este un exemplu simplu. Vreau doar să arăt numele foii de lucru care este activată. Pentru aceasta, pur și simplu folosesc SheetActivate Event în obiectul Workbook.
Sub privat Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name & "Activat" End Sub
Acum, ori de câte ori o nouă foaie din acest registru de lucru va fi activată, acest eveniment se va declanșa. Vi se va solicita masajul, numele foii activate.
Știu că acest cod nu este atât de util, dar puteți pune orice set de instrucțiuni între aceste rânduri. Puteți apela funcțiile și subrutinele din module în sine.
Evenimente foaie de lucru în Excel
Toate intervalele și evenimentele direcționate către celulă sunt scrise în evenimentele din foaia de lucru. Puteți citi despre evenimentele din foaia de lucru aici.
Scopul evenimentului foii de lucru
Evenimentele foii de lucru sunt direcționate către intervalele și celulele unei anumite foi de lucru. Un eveniment de foaie de lucru se va declanșa la evenimentele care se întâmplă pe foaia de lucru specifică (foaia de lucru care conține codul).
Unde sunt scrise evenimentele foii de lucru?
Evenimentele foii de lucru sunt scrise pe obiectul foii de lucru.
Cum se scrie un cod de gestionare a evenimentelor din foaia de lucru?
Este la fel ca evenimentele din registrul de lucru.
1. În exploratorul de proiecte, faceți dublu clic pe obiectul foii de lucru. Zona de scriere a codului va fi afișată pentru foaia de lucru. Toate evenimentele cuprinse în foaia de lucru sunt scrise în aceste foi de lucru.
2. În partea stângă sus a zonei de scriere a codului, veți vedea un meniu derulant. Faceți clic pe meniul derulant și alegeți foaia de lucru. În mod implicit, este general.
3. După ce alegeți foaia de lucru din meniul derulant din stânga, aceasta va insera în mod implicit un subprogram de lucru worksheet_selectionChange. Dar dacă doriți să utilizați un alt subrutin de evenimente, alegeți-l din meniul derulant din dreapta sus. Va enumera toate evenimentele disponibile ale foii de lucru.
4. Alegeți evenimentul de care aveți nevoie. De exemplu, aleg evenimentul Worksheet_SelectionChange (ByVal Target As Range). Acest eveniment se declanșează la fiecare modificare a selecției unui interval pe foaie.
Exemplu de eveniment de foaie de lucru
Private Sub Worksheet_SelectionChange (ByVal Target As Range) MsgBox "You are in" & Target.Address End Sub
Evenimentul de mai sus este scris în foaia 1 a unui registru de lucru. Acest eveniment va afișa adresa intervalului, pe care l-ați selectat pe codul care conține foaia, ori de câte ori veți schimba selecția intervalului. Mai jos sunt câteva exemple de evenimente din foaia de lucru.
Evenimentele foii de lucru sunt utilizate mai ales în tablourile de bord dinamice. Puteți utiliza celulele ca casete de selectare sau selecții active pentru a vă face tablourile dinamice.
Mai jos sunt câteva exemple de evenimente din foaia de lucru.
Utilizarea evenimentului de modificare a foii de lucru pentru a rula macro când se efectuează orice modificare
Executați macro dacă există modificări efectuate pe foaie în intervalul specificat
Cel mai simplu cod VBA pentru a evidenția rândul curent și coloana folosind
Evenimentele din grafic
Există două tipuri de evenimente grafice în Excel. Una dintre acestea este diagramele încorporate în mod normal pe care le-am discutat aici în detaliu. Este la fel ca evenimentele la nivel de aplicație.
O alta este foaia Grafic. Acestea sunt foile speciale care conțin doar diagramele conectate la date pe alte foi.
Când vine vorba de evenimente, acestea seamănă mult cu foile normale.
Unde să scriu evenimente în diagrame?
Evenimentele diagramei sunt scrise în obiectul diagramei. Doar faceți dublu clic pe foaia grafică pentru a deschide zona de cod.
Cum să scrii evenimente în diagramă?
Urmați acești pași:
1. În exploratorul de proiecte, faceți dublu clic pe obiectul foii de diagramă pentru a deschide zona de cod. Toate evenimentele legate de foaia grafică specifică sunt scrise aici.
2. În colțul din dreapta sus al zonei de cod, veți vedea meniul derulant obișnuit. Selectați graficul din meniul drop-down respectiv.
3. Din colțul din dreapta, selectați evenimentul dorit.
De exemplu, dacă vreau să fac ceva de îndată ce utilizatorul selectează graficul, voi folosi evenimentul Chart_Activate.
Exemplu: Eveniment pentru foaia de diagrame
Private Sub Chart_Activate () MsgBox "Diagrama este actualizată" End Sub
Bucata de cod de mai sus se va declanșa imediat ce veți selecta foaia grafică. Aici, va arăta doar mesajul că graficul este actualizat, dar puteți face multe. Ca și cum ați putea selecta dinamic intervalul de date pentru grafic înainte de a afișa acest mesaj.
Mai jos sunt câteva exemple de evenimente ale graficului:
Evenimentele UserForm
Evenimentul formularului de utilizator este la fel ca alte evenimente. Există mai multe evenimente care apar în formularul de utilizator. Puteți utiliza aceste evenimente pentru a declanșa evenimentele.
Unde să scrieți evenimentele din formularul de utilizator?
Pentru a scrie un eveniment de formular de utilizator, trebuie mai întâi să inserați un UserForm.
1. Apoi faceți clic dreapta pe UserForm și faceți clic pe codul de vizualizare. Acum zona de cod se va deschide.
2. Acum, în meniul din stânga sus, selectați Formular de utilizator.
3. Din meniul derulant din stânga, selectați evenimentul pe care doriți să îl utilizați pentru a declanșa executarea codului.
4. Scrieți codul dorit între codul evenimentului de cod.
Exemplul de mai jos arată pur și simplu mesajul când este activat un formular de utilizator.
Private Sub UserForm_Activate () MsgBox "Bună ziua, vă rugăm să verificați dublă informațiile dvs." Sfârșitul Sub
Codul de mai sus afișează doar un mesaj, dar puteți utiliza acest eveniment pentru a umple în prealabil formularul cu unele intrări implicite sau utilizați informații despre foaie pentru a-l completa.
Evenimentul Onkey
Aceste evenimente sunt declanșate atunci când este apăsată o tastă specificată sau o combinație de taste. Se aseamănă mult cu crearea ta pe comenzi rapide.
Evenimentul OnKey este de fapt o funcție sau o metodă a clasei de aplicații care are două argumente așa cum se arată mai jos:
Application.onkey Cheie, [„procedură”]
The cheie este cheia sau combinația de taste pe care doriți să o utilizați ca declanșator.
"Procedură" este un argument opțional care este un nume de șir al procedurii sau macro-ului pe care doriți să îl declanșați. Dacă nu definiți procedura, va declanșa procedura curentă.
Unde să scrie Evenimentele Onkey?
Ei bine, puteți scrie evenimentul Onkey pe orice modul normal. Acestea vor funcționa în module normale, dar mai întâi va fi necesar să rulați acel subrutină care conține Instrucțiunile Onkey. Nu este ca și cum ați fi rulat macro-ul de fiecare dată pentru a utiliza evenimentele Onkey. Doar odată ce va fi necesar să rulați acea macro când deschideți registrul de lucru.
Dacă nu doriți să rulați macro-ul care conține evenimentele Onkey, le puteți pune în evenimentul workbook_open () din obiectul de registru de lucru. Acesta va face evenimentele Onkey active imediat ce deschideți registrul de lucru care conține evenimentele Onkey.
Cum se scrie un manipulator de evenimente Onkey?
Deci, dacă aveți deja câteva macrocomenzi pe care doriți să le rulați cu o comandă rapidă specificată, scrieți o nouă procedură care va conține lista de comenzi rapide. De exemplu, aici am o macro care afișează mesajul pe care comanda rapidă funcționează.
Sub show_msg () MsgBox "Comanda rapidă funcționează" End Sub
Acum vreau să rulez această macro în timp ce apăs combinația de taste CTRL + j. Pentru a face acest lucru, scriu codul VBA de mai jos.
Sub Activate_Onkey () Application.OnKey "j", "show_msg" End Sub
„^” (carate) este pentru tasta CTRL. Mai jos este tabelul pentru toate abrevierile cheie din Excel VBA.
https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey
Cum se activează evenimentul Onkey?
După ce ați scris codul de mai sus într-un modul, dacă mergeți pe vizualizarea excel și utilizați tasta CTRL + J, nu va funcționa. Mai întâi, trebuie să rulați sub-ul care definește evenimentele OnKey. Deci, rulați odată subactivarea Activate_Onkey () și apoi va funcționa pentru întreaga sesiune. După ce închideți registrul de lucru care conține definițiile Onkey, acesta nu va mai funcționa.
Puteți introduce definițiile Onkey în cadrul procedurii pe care doriți să se întâmple. Dar atunci va trebui să rulați macrocomanda o dată manual. De aceea vă sugerez să introduceți evenimentele Onkey în evenimentele Workbook_Open. Va face ca toate evenimentele Onkey să se activeze automat.
Evenimentul Ontime din Excel
După cum sugerează și numele, evenimentul Onkey declanșează subrutina specificată pe sau după cel mai timpuriu timp specificat posibil. Excel poate fi ocupat în alte sarcini, cum ar fi executarea setului de instrucțiuni sau modul de copiere trecut. În acest caz, poate întârzia evenimentul Ontime. Acesta este motivul pentru care argumentul este prezentat ca fiind cel mai timpuriu timp.
Sintaxa evenimentului OnTime
Evenimentul Ontime este o funcție a clasei Application. Are două argumente esențiale și două argumente opționale.
Application.Ontime EarliestTime, "Procedură", [LatestTime], [Programare]
TheEarliestTimeeste momentul în care doriți să ruleze procedura dvs. Dar Excel va rula macro-ul specificat după cel mai devreme timp definit, numai după ce este liber.
The "Procedură" este numele procedurii pe care doriți să o rulați la ora specificată.
După cum am spus că nu există nicio garanție că Excel va rula procedura dvs. la ora specificată. The LastestTimeeste timpul după cel mai devreme timp pentru a oferi Excel unei ferestre pentru a fi liber și a vă executa sarcina.
Dacă doriți să dezactivați evenimentul OnTime programat, atunci setațiprograma la fals.
Unde să scriu Evenimentul Ontime?
Evenimentul OnTime poate fi scris în orice modul. Va trebui să executați evenimentul care conține procedura de activare a evenimentului.
Dacă doriți ca evenimentul dvs. să fie activat imediat ce deschideți registrul de lucru care conține evenimentul, puneți-l în evenimentul workbook_open. Acesta va activa evenimentul imediat ce deschideți codul care conține evenimentul în excel.
Cum se scrie evenimentul Ontime?
Să presupunem că aveți un subrutină care arată data și ora curente
Sub show_msg () MsgBox "Data și ora curente sunt" & Now End Sub
Acum, dacă doriți ca această procedură să ruleze după 5 secunde de rulare a unei alte macrocomenzi, va trebui să puneți acest cod.
Sub OnTimeTest () '- unele alte sarcini Application.ontime Now + (5/24/60/60), "show_msg" End Sub
După ce rulați subrutina OnTimeTest, după cinci secunde de rulare, aceasta va declanșa subrutina show_msg. Deci, va fi bine dacă doriți să faceți ceva după câteva ori de a face altceva, utilizați structura de mai sus.
Dacă doriți ca macro-ul dvs. să ruleze singur după fiecare câteva secunde / minute / ore / etc, atunci puteți apela această funcție în sine. Ar fi un fel de subrutină recursivă.
Sub OnTimeTest () MsgBox "Data și ora curente sunt" & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" End Sub
Subrutina de mai sus va rula după fiecare cinci secunde după ce o porniți.
Deci, băieți, acestea sunt evenimentele din Excel VBA. Unele dintre categoriile de mai sus au o varietate de declanșatoare de evenimente. Desigur, nu le pot explica pe toate aici. Asta va face un articol lung de carte. Aceasta a fost doar o introducere la evenimentele disponibile în Excel VBA. Pentru mai multe informații, urmați linkurile încorporate în articol. Am menționat mai jos câteva articole conexe. Le poți citi și tu.
Dacă aveți îndoieli legate de acest articol sau orice alt gând excel / VBA, întrebați-ne în secțiunea de comentarii de mai jos.
Foaia de lucru Evenimente în Excel VBA| Evenimentul foii de lucru este foarte util atunci când doriți să ruleze macro-urile atunci când apare un eveniment specificat pe foaie.
Evenimente din registrul de lucru folosind VBA în Microsoft Excel | Evenimentele din registrul de lucru funcționează pe întregul registru de lucru. Deoarece toate foile fac parte din registrul de lucru, aceste evenimente funcționează și pe ele.
Preveniți executarea automacro / eventmacro utilizând VBA în Microsoft Excel | Pentru a preveni rularea macro-ului auto_open utilizați tasta Shift.
Diagrama evenimentelor obiectelor folosind VBA în Microsoft Excel | Diagramele sunt obiecte complexe și există mai multe componente pe care le-ați atașat la ele. Pentru realizarea evenimentelor grafice, folosim modulul Class.
Articole populare:
50 de comenzi rapide Excel pentru a vă crește productivitatea | Deveniți mai rapid la sarcina dvs. Aceste 50 de comenzi rapide vă vor face să lucrați și mai rapid pe Excel.
Funcția VLOOKUP în Excel | Aceasta este una dintre cele mai utilizate și populare funcții ale Excel, care este utilizată pentru a căuta valoarea din diferite intervale și foi.
COUNTIF în Excel 2016 | Numărați valorile cu condiții folosind această funcție uimitoare. Nu este nevoie să vă filtrați datele pentru a număra o anumită valoare. Funcția Countif este esențială pentru a vă pregăti tabloul de bord.
Cum se utilizează funcția SUMIF în Excel | Aceasta este o altă funcție esențială a tabloului de bord. Acest lucru vă ajută să rezumați valori în condiții specifice.