Cum se utilizează evenimente din registrul de lucru în VBA

Cuprins:

Anonim

Poate doriți să rulați fragmentul de macro / VBA atunci când este selectat un anumit registru de lucru, este selectată o foaie din registrul de lucru, celula își schimbă valoarea, atunci când se întâmplă un dublu clic, când se adaugă o foaie etc. În toate aceste cazuri folosim Gestionar de evenimente pentru registru de lucru. Event Handler ne ajută să rulăm codul VBA ori de câte ori apare un anumit eveniment.

În acest articol, vom afla pe scurt despre fiecare Handbook de evenimente din Workbook.

Ce este un Handbook de evenimente Workbook?

Un gestionar de evenimente de registru de lucru este un subrutin care este local pentru un registru de lucru. Aceste coduri funcționează numai pe componentele unui registru de lucru. Acesta este registrul de lucru în sine, este foile și intervalele.

Unde să scrieți codul de gestionare a evenimentelor din Workbook?

Evenimentele din registrul de lucru sunt scrise numai în obiectul din registrul de lucru. Dacă scrieți un eveniment de registru de lucru într-un modul normal, nu va exista nicio eroare, dar pur și simplu nu vor funcționa.

Pentru a scrie în obiectul registrului de lucru. Faceți dublu clic pe acesta sau faceți clic dreapta și faceți clic pe codul de vizualizare. Va fi afișată zona de scriere a codului.

Cum se scrie codul pentru un anumit eveniment în registrul de lucru?

Acum, când vă aflați în modul de editare, în meniul derulant din colțul din stânga sus, veți vedea general. Faceți clic pe meniul derulant și selectați registrul de lucru. În meniul drop-down din colțul din dreapta sus, toate evenimentele vor fi afișate. Alegeți ce aveți nevoie și vi se va scrie un cod scheletic pentru acel eveniment.

Fiecare eveniment are un nume de procedură fixă. Acestea sunt numele subrutine rezervate care încep cu registrul de lucru_. Nu le puteți folosi pentru alte subrutine
(poți, dar vor fi subrutine normale).

Important: Fiecare subrutină din lista respectivă va rula la evenimentul specificat.

Un tip de procedură de eveniment de registru de lucru poate fi scris o singură dată pe un registru de lucru. Dacă scrieți două proceduri identice de gestionare a evenimentelor într-un singur registru de lucru, va rezulta o eroare și niciuna dintre ele nu va fi executată. Desigur, eroarea va fi subrutine ambigue.

Să învățăm pe scurt despre fiecare dintre evenimente.
1. The Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Eveniment

Acest eveniment se declanșează atunci când modificăm fișierele de lucru conținute (formatarea este exclusă). Dacă doriți să faceți ceva dacă orice modificare făcută în orice foaie, atunci codul va fi:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'face ceva Msgbox „a făcut ceva” End Sub 

„Sh” este întotdeauna foaia activă. „Ținta” este celula activă întotdeauna.

Alt exemplu: Poate doriți să introduceți data și ora în Cel, prl B1 dacă A1 se schimbă. În acest caz, folosim evenimentul workbook_sheetchange. Codul ar arăta astfel:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$ A $ 1" Then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If Sfârșitul Sub 

Aceasta va viza doar celula A1 de pe fiecare foaie, deoarece nu am specificat obiectul "sh".

2. The Workbook_Activate () Eveniment

Acest eveniment se declanșează când se activează codul de eveniment care conține registrul de lucru. Codul osos pentru acest eveniment este:

 Private Sub Workbook_Activate () End Sub

Un exemplu simplu este afișarea numelui registrului de lucru atunci când este selectat.

 Private Sub Workbook_Activate () MsgBox „Sunteți în registrul de lucru” & Activeworkbook.Name End Sub 

De îndată ce veți intra pe registrul de lucru care conține acest cod, evenimentul va rula și i se va afișa un mesaj care spune că „Sunteți pe numele registrului de lucru” (foaia 2 este în cazul meu).
3. The Workbook_Open () Eveniment

Aceasta este una dintre cele mai întrebate întrebări despre cum să rulați o macro de îndată ce se deschide registrul de lucru. Acesta este răspunsul. Acest eveniment de registru de lucru se execută imediat ce registrul de lucru este deschis. Spre deosebire de Workbook_Activate (), acest cod rulează o singură dată, nu când este activat de fiecare dată.

Private Sub Workbook_Open () „codul tău” Încheie sub 

Exemplul de mai jos Eveniment Workbook_Open va afișa pur și simplu un mesaj de întâmpinare, atunci când deschideți codul care conține registrul de lucru.

 Private Sub Workbook_Open () MsgBox "Bun venit la fișierul principal" End Sub

4. The Workbook_Deactivate () Eveniment

Acest eveniment se declanșează la părăsirea codului care conține registrul de lucru. Cu alte cuvinte, dacă doriți să faceți ceva, cum ar fi ascunderea foilor sau ceva atunci când schimbați registrul de lucru, utilizați acest eveniment VBA. Sintaxa este:

 Private Sub Workbook_Deactivate () „codul tău” Termină sub 

Exemplul de mai jos Eveniment Workbook_Deativate va afișa pur și simplu un mesaj că ați părăsit foaia principală, când veți părăsi această foaie.

 Private Sub Workbook_Deactivate () MsgBox "Ai părăsit foaia principală" End Sub 

5. The Workbook_BeforeClose () Eveniment

Acest eveniment se declanșează atunci când confirmați ștergerea foii care conține evenimentul VBA. Sintaxa este simplă:

 Private Sub Workbook_BeforeClose (Anulați ca boolean) Finalizați sub 

Anularea poate fi setată la adevărat dacă doriți să mențineți registrul de lucru deschis.
Codul de mai jos vă va întreba dacă doriți să salvați conținutul registrului de lucru aproape de închidere.

 Private Sub Workbook_BeforeClose (Cancel as Boolean) ans = MsgBox („Vreți să salvați conținutul acestui registru de lucru?”, VbDa Nu) Dacă ans = True, atunci acest workbook.save End If End Sub 

6. The Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Eveniment

Acest eveniment se declanșează atunci când este salvat registrul de lucru. Sintaxa este simplă:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub 

SaveAsUI este setat True dacă există o modificare în registrul de lucru (nu în VBA).

Anularea poate fi setată la adevărat dacă doriți să păstrați registrul de lucru nesalvat.

Codul de mai jos vă va întreba dacă doriți să salvați conținutul registrului de lucru despre salvare.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox („Doriți cu adevărat să salvați conținutul acestui registru de lucru?”, VbYesNo) If ans = False Then Cancel = True End If End Sub 

7. The Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Eveniment

Acest eveniment se declanșează atunci când este salvat registrul de lucru. Sintaxa este simplă:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub 

SaveAsUI este setat True dacă există o modificare în registrul de lucru (nu în VBA).

Anularea poate fi setată la adevărat dacă doriți să păstrați registrul de lucru nesalvat.

Codul de mai jos vă va întreba dacă doriți să salvați conținutul registrului de lucru despre salvare.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox („Doriți cu adevărat să salvați conținutul acestui registru de lucru?”, VbYesNo) If ans = False Then Cancel = True End If End Sub 

8. The Workbook_NewSheet (ByVal Sh As Object) Eveniment

Acest eveniment se declanșează când adăugați o foaie nouă în registrul de lucru. Sintaxa este simplă:

 Private Sub Workbook_NewSheet (ByVal Sh As Object) End Sub 

Sh este obiectul foii. Tipul este de fapt este un obiect de bază, astfel încât, dacă adăugăm o foaie de diagramă, o foaie de macro sau o foaie de dialog, evenimentul funcționează în continuare.

Codul de mai jos va adăuga și va afișa numele foii nou adăugate.

 Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Ați adăugat o foaie nouă." & Sh.Name End Sub 

Sunt mult mai multe evenimente ale obiectului caietului de lucru. Nu le putem discuta pe toate aici. Dacă doriți să aflați despre un anumit eveniment, atunci întrebați în secțiunea de comentarii de mai jos. Sper că am putut explica elementele de bază ale evenimentelor din registrul de lucru în acest articol. Spune-mi dacă te-a ajutat în secțiunea de comentarii de mai jos.
Articole similare:

Utilizarea evenimentului de modificare a foii de lucru pentru a rula macro când se efectuează orice modificare | Deci, pentru a rula macro-ul dvs. ori de câte ori se actualizează foaia, folosim Evenimentele Foaiei de lucru ale VBA.

Executați macro dacă există modificări efectuate pe foaie în intervalul specificat | Pentru a rula codul macro atunci când se modifică valoarea dintr-un interval specificat, utilizați acest cod VBA. Acesta detectează orice modificare făcută în intervalul specificat și va declanșa evenimentul.

Cel mai simplu cod VBA pentru a evidenția rândul curent și coloana folosind | Utilizați acest mic fragment VBA pentru a evidenția rândul și coloana curentă a foii.

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 munca ș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 trebuie 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.