Foaia de lucru Evenimente în Excel VBA

Cuprins:

Anonim

Poate doriți să rulați fragmentul dvs. Macro / VBA atunci când o celulă își schimbă valoarea, când are loc un dublu clic, când este selectată o foaie, etc. În toate aceste cazuri, utilizăm Foaia de lucru Event Handler. 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 foaie de lucru Handler de evenimente.

Ce este un Handler pentru evenimente Worksheets?

Un gestionar de evenimente de foaie de lucru este un subrutină care este local pentru un modul de foaie de lucru.

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

Foaia de lucru Evenimente sunt scrise numai în obiecte de foi. Dacă scrieți un eveniment de foaie de lucru în unele module sau module de clasă, nu va exista nicio eroare, dar pur și simplu nu vor funcționa.

Pentru a scrie în obiectul foaie. 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 cod pentru un anumit eveniment pe foaia 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 foaia de lucru. Acum, în meniul derulant din colțul din dreapta sus, se vor afișa toate evenimentele. 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 rezervate subrutine. Nu le puteți folosi pentru alte subrutine pe o foaie. Într-un modul, acestea vor funcționa ca un subrutină normală.

Important: Fiecare subrutină din lista respectivă va rula la evenimentul specificat.
Un tip de procedură de eveniment a foii de lucru poate fi scris o singură dată pe o singură foaie. Dacă scrieți două proceduri identice de gestionare a evenimentelor pe o singură foaie, 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. TheFoaie de lucru_Change (țintă ByVal ca interval)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 întreaga foaie, atunci codul va fi:

Private Sub Worksheet_Change (ByVal Target As Range) 'do somehting Msgbox "a făcut ceva" End Sub 

„Ținta” este celula activă întotdeauna.

Un alt exemplu: poate doriți să puneți data și ora în celula B1 dacă A1 se schimbă. În acest caz, folosim evenimentul worksheet_change. Codul ar arăta astfel:

Private Sub Worksheet_Change (ByVal Target As Range) Dacă Ţintă.Adresă = "$ A $ 1" Apoi Interval ("B1"). Valoare2 = Format (Acum (), "hh: mm: ss") Sfârșit Dacă se termină Sub 

Aceasta va viza doar celula A1.

Dacă doriți să vizați un interval, utilizați exemplul de mai jos:

Executați macro dacă există modificări efectuate pe foaie în intervalul specificat

2. TheWorksheet_SelectionChange (țintă ByVal ca interval)Eveniment

După cum sugerează și numele, acest eveniment se declanșează atunci când selecția se modifică. Cu alte cuvinte, dacă cursorul dvs. se află în celula A1 și se mută în altă celulă, codul din acest subrutină va rula.

Codul de mai jos va schimba culoarea celulelor active dacă se schimbă ori de câte ori este un rând uniform.

Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub 

Acum, ori de câte ori cursorul meu se va deplasa pe un rând uniform, acesta va fi colorat. Celulele de rânduri impare vor fi salvate.

Un alt exemplu al evenimentului Worksheet_SelectionChange:

Cel mai simplu cod VBA pentru a evidenția rândul curent și coloana folosind

3. The Foaie de lucru_Activați () Eveniment

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

Private Sub Worksheet_Activate () End Sub 

Un exemplu simplu este afișarea numelui foii atunci când este selectată.

Private Sub Worksheet_Activate () MsgBox "Sunteți pe" & ActiveSheet.Name End Sub 

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

4. The Foaie de lucru_Deactivare () Eveniment

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

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

Exemplul de mai jos Eveniment Worksheet_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 Worksheet_Deactivate () MsgBox "Ai părăsit foaia principală" End Sub 

5. The Worksheet_BeforeDelete ()Eveniment

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

Private Sub Worksheet_BeforeDelete () End Sub 

Codul de mai jos vă va întreba dacă doriți să copiați conținutul foii despre ștergere.

Private Sub Worksheet_BeforeDelete () ans = MsgBox ("Doriți să copiați conținutul acestei foi într-o foaie nouă?", VbDa Nu) Dacă ans = Adevărat, apoi 'codul pentru a copia Sfârșit Dacă Sfârșit Sub 

6. The Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Eveniment

Acest eveniment se declanșează când faceți dublu clic pe celula vizată. Sintaxa acestui eveniment al foii de lucru VBA este:

Private Sub Worksheet_BeforeDoubleClick (ByVal Target as Range, Cancel As Boolean) End Sub 

Dacă nu setați celula sau intervalul țintă, se va declanșa la fiecare clic dublu pe foaie.
Variabila Cancel este o variabilă booleană. Dacă îl setați True, acțiunea implicită nu se va întâmpla. Înseamnă că dacă faceți dublu clic pe celulă, nu va intra în modul de editare.
Codul de mai jos va face ca celula să se umple cu o culoare dacă faceți dublu clic pe orice celulă.

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub 

Codul de mai jos vizează celula A1. Dacă este deja umplut cu culoarea specificată, atunci va dispărea. Seamănă mult cu un buton like sau cu o casetă de selectare.

Sub privat Foaie de lucru_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$ A $ 1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If End If End Sub 

7. The Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Eveniment

Acest eveniment se declanșează când faceți clic dreapta pe celula vizată. Sintaxa acestui eveniment al foii de lucru VBA este:

Sub privat Foaie de lucru_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True '' codul dvs. 'End Sub 

Codul de mai jos va umple celula cu valoarea 1 dacă faceți clic dreapta pe ea. Nu va afișa opțiunile implicite de clic dreapta, deoarece am setat operatorul „Anulare” la Adevărat.

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub 

8. The Foaie de lucru_Calcula () Eveniment

Dacă doriți să se întâmple ceva atunci când un Excel calculează o foaie, utilizați acest eveniment. Se va declanșa ori de câte ori Excel calculează o foaie. Sintaxa este simplă:

Private Sub Worksheet_Calculate () '' codul dvs. 'End Sub 

6. The Foaie de lucru_FollowHyperlink (țintă ByVal ca hyperlink)Eveniment

Această procedură va rula când faceți clic pe un hyperlink pe foaie. Sintaxa de bază a acestui gestionar de evenimente este:

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) „codul dvs.” End Sub 

Dacă doriți, puteți seta hyperlinkul țintă. Dacă nu setați hyperlinkul țintă, acesta va fi executat dacă faceți clic pe un hyperlink pe codul care conține foaia.

Deci, băieți, acestea au fost câteva evenimente de bază ale foii de lucru care vor fi la îndemână dacă știți despre ele. Mai jos sunt câteva articole conexe pe care ați putea dori să le citiți.

Dacă aveți îndoieli cu privire la acest articol sau la orice alt articol legat de Excel / VBA, anunțați-ne în secțiunea de comentarii de mai jos.

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.