Kaip naudoti darbaknygės įvykius VBA

Galbūt norėsite paleisti makrokomandą/VBA fragmentą, kai pasirinkta konkreti darbaknygė, pasirinktas darbaknygės lapas, langelis keičia jo vertę, dukart spustelėjus, pridėjus lapą ir pan. Visais šiais atvejais mes naudojame Darbo knygos įvykių tvarkytojas. Įvykių tvarkytojas padeda mums paleisti VBA kodą, kai įvyksta tam tikras įvykis.

Šiame straipsnyje trumpai sužinosime apie kiekvieną darbaknygės įvykių tvarkytoją.

Kas yra darbaknygės įvykių tvarkytojas?

Darbaknygės įvykių tvarkytojas yra paprograma, lokali darbo knygai. Šie kodai veikia tik su darbaknygės komponentais. Tai yra pati darbo knyga, tai lapai ir diapazonai.

Kur parašyti darbaknygės įvykių tvarkytojo kodą?

Darbaknygės įvykiai rašomi tik darbaknygės objekte. Jei rašysite darbaknygės įvykį įprastame modulyje, klaidos nebus, bet jie tiesiog neveiks.

Rašyti į darbaknygės objektą. Dukart spustelėkite jį arba dešiniuoju pelės klavišu spustelėkite rodinio kodą. Bus rodoma kodo rašymo sritis.

Kaip darbo knygoje įrašyti konkretaus įvykio kodą?

Dabar, kai esate redagavimo režime, viršutiniame kairiajame kampe esančiame išskleidžiamajame meniu pamatysite bendrą. Spustelėkite išskleidžiamąjį meniu ir pasirinkite darbaknygę. Viršutiniame dešiniajame kampe esančiame išskleidžiamajame meniu bus rodomi visi įvykiai. Pasirinkite, ko jums reikia, ir to įvykio skeleto kodas bus jums parašytas.

Kiekvienas įvykis turi fiksuotą procedūros pavadinimą. Tai rezervuoti paprogramės pavadinimai, prasidedantys darbaknyge_. Negalite jų naudoti kitoms paprogramėms
(galite, bet jos bus normalios paprogramės).

Svarbu: Kiekviena to sąrašo paprogramė bus vykdoma nurodytu įvykiu.

Vienos rūšies darbaknygės įvykio procedūra gali būti parašyta tik vieną kartą vienoje darbaknygėje. Jei į vieną darbaknygę įrašysite dvi tas pačias įvykių tvarkymo procedūras, tai sukels klaidą ir nė viena iš jų nebus vykdoma. Žinoma, klaida bus dviprasmiška paprograma.

Trumpai sužinokime apie kiekvieną įvykį.
1. The Workbook_SheetChange („ByVal Sh“ kaip objektas, „ByVal“ tikslas kaip diapazonas) Įvykis

Šis įvykis suaktyvinamas, kai atliekame bet kokius darbo lapų pakeitimus (neįskaitant formatavimo). Jei norite ką nors padaryti, jei bet kuriame lape bus atlikti pakeitimai, kodas bus toks:

 Privatus antrinis darbaknygių_lapo keitimas („ByVal Sh“ kaip objektas, „ByVal Target“ kaip diapazonas) „padaryti kažką„ Msgbox “kažką padarė 

„Sh“ visada yra aktyvus lapas. „Tikslas“ visada yra aktyvi ląstelė.

Kitas pavyzdys: Jei pasikeičia A1, galbūt norėsite datą ir laiką nurodyti Cel, prl B1. Tokiu atveju mes naudojame įvykį workbook_sheetchange. Kodas atrodytų taip:

 Privatus antrinis darbaknygės_lapo keitimas („ByVal Sh“ kaip objektas, „ByVal“ tikslas kaip diapazonas) Jei „Target.Address“ = „$ A $ 1“ Tada diapazonas („B1“). Value2 = Formatas (Dabar (), „hh: mm: ss“) Pabaiga Jei Pabaiga Sub 

Tai bus nukreipta tik į langelį A1 kiekviename lape, nes nenurodėme „sh“ objekto.

2. The Workbook_Activate () Įvykis

Šis įvykis suaktyvinamas, kai suaktyvinamas įvykio kodas, kuriame yra darbaknygė. Šio įvykio skeleto kodas yra:

 Privatus antrinis darbaknygė_Aktyvinti () Pabaiga

Paprastas pavyzdys - rodomas darbaknygės pavadinimas, kai ji pasirenkama.

 Private Sub Workbook_Activate () MsgBox „Jūs esate darbaknygėje“ ir „Activeworkbook“. Pavadinimas Pabaigos antraštė 

Kai tik pateksite į darbaknygę, kurioje yra šis kodas, įvykis bus paleistas ir bus parodytas pranešimas „Jūs esate darbaknygės pavadinime“ (mano atveju yra 2 lapas).
3. The Workbook_Open () Įvykis

Tai vienas iš dažniausiai užduodamų klausimų, kaip paleisti makrokomandą, kai tik atsidaro darbaknygė. Tai yra atsakymas. Šis darbaknygės įvykis vykdomas iškart atidarius darbaknygę. Skirtingai nuo „Workbook_Activate“ (), šis kodas paleidžiamas tik vieną kartą, o ne kiekvieną kartą jį suaktyvinus.

Private Sub Workbook_Open () 'your code' End Sub 

Žemiau pateiktas „Workbook_Open“ įvykio pavyzdys tiesiog parodys pasveikinimo pranešimą, kai atidarysite kodą, kuriame yra darbaknygė.

 „Private Sub Workbook_Open“) „MsgBox“ „Sveiki atvykę į pagrindinį failą“ pabaigos poskyris

4. The Workbook_Deactivate () Įvykis

Šis įvykis suaktyvinamas paliekant kodą, kuriame yra darbaknygė. Kitaip tariant, jei norite ką nors padaryti, pavyzdžiui, slėpti lapus ar ką nors, kai keičiate darbaknygę, naudokite šį VBA įvykį. Sintaksė yra tokia:

 Private Sub Workbook_Deactivate () 'your code' End Sub 

Žemiau pateiktas „Workbook_Deativate“ įvykio pavyzdys tiesiog paliks pranešimą, kad palikote pagrindinį lapą, kai paliksite šį lapą.

 Privati ​​antrinė darbo knyga_Deaktyvinti () „MsgBox“ „Jūs palikote pagrindinį lapą“ pabaigos poskyris 

5. The Workbook_BeforeClose () Įvykis

Šis įvykis suaktyvinamas, kai patvirtinate VBA įvykio, kuriame yra lapas, ištrynimą. Sintaksė paprasta:

 Privatus antrinis darbaknygės_BeforeClose (Atšaukti kaip loginis) pabaiga 

Atšaukti galima nustatyti į true, jei norite, kad darbo knyga būtų atidaryta.
Žemiau pateiktas kodas paklaus, ar norite išsaugoti beveik uždaromos darbo knygos turinį.

 Private Sub Workbook_BeforeClose (Atšaukti kaip loginį) ans = MsgBox ("Ar norite išsaugoti šios darbaknygės turinį?", VbYesNo) If ans = True tada thisworkbook.save End if End Sub 

6. The Workbook_BeforeSave (ByVal SaveAsUI kaip loginis, atšaukti kaip loginis) Įvykis

Šis įvykis suaktyvinamas prieš įrašant darbaknygę. Sintaksė paprasta:

 Privatus antrinis darbo knyga_BeforeSave (ByVal SaveAsUI kaip loginis, atšaukti kaip loginis) Pabaiga 

„SaveAsUI“ nustatyta kaip „True“, jei pasikeičia darbaknygė (ne VBA).

Atšaukti galima nustatyti į „true“, jei norite, kad darbaknygė būtų neišsaugota.

Žemiau pateiktas kodas paklaus, ar norite išsaugoti beveik išsaugomos darbo knygos turinį.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Ar tikrai norite išsaugoti šios darbaknygės turinį?", VbYesNo) If ans = False then Cancel = True End If End Sub 

7. The Workbook_BeforeSave (ByVal SaveAsUI kaip loginis, atšaukti kaip loginis) Įvykis

Šis įvykis suaktyvinamas prieš įrašant darbaknygę. Sintaksė paprasta:

 Privatus antrinis darbaknygės_BeforeSave (ByVal SaveAsUI kaip loginis, atšaukti kaip loginis) Pabaiga 

„SaveAsUI“ nustatyta kaip „True“, jei pasikeičia darbaknygė (ne VBA).

Atšaukti galima nustatyti į true, jei norite, kad darbaknygė būtų neišsaugota.

Žemiau pateiktas kodas paklaus, ar norite išsaugoti beveik išsaugomos darbo knygos turinį.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Ar tikrai norite išsaugoti šios darbo knygos turinį?", VbYesNo) If ans = False then Cancel = True End If End Sub 

8. The „Workbook_NewSheet“ („ByVal Sh“ kaip objektas) Įvykis

Šis įvykis suaktyvinamas pridėjus naują lapą prie darbaknygės. Sintaksė paprasta:

 Privatus antrinis darbo knygos_naujas lapas (ByVal Sh kaip objektas) Pabaiga 

Sh yra lapo objektas. Tipas iš tikrųjų yra pagrindinis objektas, todėl, jei pridėsime diagramos lapą, makro lapą ar dialogo lapą, įvykis vis tiek veiks.

Žemiau pateiktas kodas pridės ir parodys naujai pridėto lapo pavadinimą.

 „Private Sub Workbook_NewSheet“ („ByVal Sh“ kaip objektas) „MsgBox“ „Pridėjote naują lapą.“ & Sh.Name End Sub 

Yra daug daugiau darbaknygės objekto įvykių. Negalime čia visų aptarti. Jei norite sužinoti apie kokį nors konkretų įvykį, klauskite žemiau esančiame komentarų skyriuje. Tikiuosi, kad šiame straipsnyje man pavyko paaiškinti darbo knygos įvykių pagrindus. Leiskite man žinoti, ar tai jums padėjo žemiau esančiame komentarų skyriuje.
Susiję straipsniai:

Darbo lapo keitimo įvykio naudojimas makrokomandai paleisti, kai atliekami bet kokie pakeitimai | Taigi, norėdami paleisti makrokomandą, kai lapas atnaujinamas, naudojame VBA darbalapio įvykius.

Vykdykite makrokomandą, jei lape bus atlikti pakeitimai nurodytame diapazone | Jei norite paleisti makrokomandą, kai pasikeičia nurodyto diapazono vertė, naudokite šį VBA kodą. Jis aptinka bet kokius pakeitimus, atliktus nurodytame diapazone, ir suaktyvina įvykį.

Paprasčiausias VBA kodas, skirtas paryškinti dabartinę eilutę ir stulpelį | Naudokite šį mažą VBA fragmentą, kad paryškintumėte dabartinę lapo eilutę ir stulpelį.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų dar labiau pagreitins jūsų darbą naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint suskaičiuoti konkrečią vertę, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave