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

Cuprins:

Anonim

De-a lungul practicilor dvs. VBA, veți avea nevoie să rulați macrocomenzi atunci când un anumit interval sau celulă se schimbă. În acest caz, pentru a rula macrocomenzi atunci când se face o modificare a unui interval țintă, folosim evenimentul de modificare. Evenimentele din VBA ne permit să rulăm macrocomenzile atunci când apare un anumit eveniment.

Sintaxă VBA Range Change Event

Private Sheet Worksheet_Change (ByVal Target As Range) Dacă nu se intersectează (Target, Range ("your_range")) Nu este nimic Apelați your_macro End If End Sub

Evenimentul nu funcționează în module. Trebuie să le scrieți în obiecte (foaie de lucru, diagrame, registru de lucru).

Latii au un exemplu pentru a afla cum să ruleze o macro când se face o modificare într-un interval specificat.

Exemplu: Rulați o macro VBA când se face o modificare în intervalul A2: A100

Mai întâi, alegem foaia pe care va avea loc evenimentul. Faceți dublu clic pe foaia respectivă în editorul VBA și copiați mai jos codul sau codul generic de mai sus și efectuați modificări conform cerințelor dvs.

În acest exemplu, vreau să rulez un cod macro / VBA când se face o modificare în intervalul A2: A100 pe foaia 2. Pentru a face acest lucru, dau dublu clic pe foaia2 în project explorer. Se deschide pagina de codificare pentru foaia respectivă. Puteți face clic dreapta pe foaie și faceți clic pe codul de vizualizare pentru a face același lucru.

Trebuie să folosesc evenimentul de schimbare. Pentru aceasta, folosim subrutina implicită Worksheet_Change (ByVal Target As Range). Se declanșează atunci când se face o modificare specificată. Deci, codul nostru este următorul:

Private Sheet Worksheet_Change (ByVal Target As Range) Dacă nu se intersectează (Target, Range ("A2: A100")) Nu este nimic, atunci sunați TestEvent End dacă End Sub 

Când faceți modificări în intervalul A2: A100 pe Sheet2, se va apela subrutina TestEvent, așa cum puteți vedea în giful de mai sus.

TestEvent este subrutina publică din modul2. Pur și simplu apare un mesaj că evenimentul funcționează.

Sub TestEvent () MsgBox "Evenimentul funcționează!" Sfârșitul Sub 

Cum functioneazã?

Am pus o condiție:

Dacă nu se intersectează (țintă, interval ("A2: A100")) nu este nimic atunci

Aici Intersectează (Țintă, Interval ("A2: A100")) Nimic nu se întoarce Adevărat dacă nu se face nicio modificare în Intervalul A2: A100. Am pus un operator Not înainte de această afirmație care inversează ieșirea dată de „Intersect (Target, Range („ A2: A100 ”))”. Prin urmare, dacă nu se face nicio modificare în intervalul A2: A100, expresia returnează Falls și sub TestEvent nu primește apelul. Dacă efectuați o modificare în orice celulă din intervalul A2: A100, expresia va reveni True și evenimentul va avea loc. Și asta se întâmplă aici.

Notă: Puteți pune orice subrutină în acest bloc. Poate fi din orice modul. Dar ar trebui să fie un subrutină publică. Puteți seta intervalul în orice măsură. Întreaga foaie este limita.

Deci, băieți, așa puteți să apelați un subrutină sau să rulați un cod macro / VBA atunci când se face o modificare într-un interval specificat. A fost un exemplu de eveniment de bază. Acest eveniment se va declanșa numai atunci când modificarea se bazează pe text. Prin text, vreau să spun că dacă scrieți ceva în celule sau ștergeți, evenimentul se va declanșa. Dacă modificați formatarea celulelor, aceasta nu se va declanșa. Există și alte metode pentru a face acest lucru.

Sper că a fost de ajutor. Dacă aveți întrebări legate de acest subiect VBA sau orice alt subiect legat de Excel, anunțați-mi secțiunea de comentarii de mai jos. Și consultați celelalte postări similare și populare menționate mai jos.

Executați macrocomanda atunci când orice modificare se face pe foaie| Deci, pentru a rula macro-ul dvs. ori de câte ori se actualizează foaia, folosim Evenimentele Foaiei de lucru ale VBA.

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.

Foaia de lucru Evenimente în Excel VBA| Evenimentul foii de lucru este foarte util atunci când doriți să ruleze macrocomenzile atunci când apare un eveniment specificat pe foaie.

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.