Užduoties įvykiai „Excel VBA“

Turinys:

Anonim

Galbūt norėsite paleisti makrokomandą/VBA fragmentą, kai langelis pakeičia vertę, kai dukart spustelėjama, kai pasirenkamas lapas ir tt Visais šiais atvejais mes naudojame darbalapio įvykių tvarkyklę. Įvykių tvarkytojas padeda mums paleisti VBA kodą, kai įvyksta tam tikras įvykis.

Šiame straipsnyje trumpai sužinosime apie kiekvieną darbalapio įvykių tvarkytoją.

Kas yra darbalapių įvykių tvarkytojas?

Skaičiuoklės įvykių tvarkytojas yra paprograma, lokali darbalapio moduliui.

Kur parašyti darbalapio įvykių tvarkytojo kodą?

Skaičiuoklė Įvykiai rašomi tik lapų objektais. Jei kuriame nors modulyje ar klasės modulyje rašysite darbalapio įvykį, klaidos nebus, bet jie tiesiog neveiks.

Rašyti lapo objekte. Dukart spustelėkite jį arba dešiniuoju pelės mygtuku spustelėkite ir spustelėkite rodinio kodą. Bus rodoma kodo rašymo sritis.

Kaip darbalapyje į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 darbalapį. Dabar 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 paprogramių pavadinimai. Negalite jų naudoti kitoms lapo paprogramėms. Moduliuose jie veiks kaip įprasta paprograma.

Svarbu: Kiekviena to sąrašo paprogramė bus vykdoma nurodytu įvykiu.
Vieno tipo darbalapio įvykio procedūra gali būti parašyta tik vieną kartą viename lape. Jei viename lape užrašysite dvi tas pačias įvykių tvarkymo procedūras, atsiras klaida ir nė viena iš jų nebus vykdoma. Žinoma, klaida bus dviprasmiška paprograma.

Trumpai sužinokime apie kiekvieną įvykį.

1. TheWorksheet_Change („ByVal Target As Range“)Įvykis

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

Privatus antrinis darbalapio keitimas („ByVal Target As Range“) „daryti kažką„ Msgbox “kažką padarė“ Pabaiga 

„Tikslas“ visada yra aktyvi ląstelė.

Kitas pavyzdys: jei pasikeičia A1, galbūt norėsite įvesti langelį B1 datą ir laiką. Tokiu atveju mes naudojame įvykį worksheet_change. Kodas atrodytų taip:

Privatus antrinis darbalapio keitimas („ByVal Target As Range“) Tikslas.Address = "$ A $ 1" Tada diapazonas ("B1"). Reikšmė2 = Formatas (dabar (), "hh: mm: ss") Pabaiga, jei pabaiga 

Tai bus taikoma tik langeliui A1.

Jei norite taikyti pagal diapazoną, naudokite toliau pateiktą pavyzdį:

Vykdykite makrokomandą, jei lape bus atlikti pakeitimai nurodytame diapazone

2. TheWorksheet_SelectionChange („ByVal Target As Range“)Įvykis

Kaip rodo pavadinimas, šis įvykis suaktyvėja pasikeitus pasirinkimui. Kitaip tariant, jei žymeklis yra langelyje A1 ir jis persikelia į kitą langelį, šios paprogramės kodas bus paleistas.

Žemiau pateiktas kodas pakeis aktyvių langelių spalvą, jei ji pasikeis ir jei ji bus lygi.

Privatus antrinis darbalapis_SelectionChange („ByVal Target as Range“), jei yra „Target.Row Mod 2“ = 0, tada „Target.Interior.ColorIndex“ = 22 pabaiga, jei pabaiga 

Dabar, kai mano žymeklis judės lygioje eilutėje, jis bus spalvotas. Bus sutaupytos nelyginės eilutės langeliai.

Kitas „Worksheet_SelectionChange“ įvykio pavyzdys:

Paprasčiausias VBA kodas, skirtas paryškinti dabartinę eilutę ir stulpelį

3. The Worksheet_Activate () Įvykis

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

Privatus antrinis darbalapis_Aktyvinti () Pabaiga 

Paprastas pavyzdys yra lapo pavadinimo rodymas, kai jis pasirenkamas.

Privatus antrinis darbalapis_Activate () „MsgBox“ „Esate“ ir „ActiveSheet.Name“ 

Kai tik pateksite į lapą, kuriame yra šis kodas, įvykis bus vykdomas ir jam bus parodytas pranešimas „Jūs esate lapo pavadinime“ (mano atveju yra 2 lapas).

4. The Worksheet_Deactivate () Įvykis

Šis įvykis suaktyvinamas paliekant kodą, kuriame yra lapas. Kitaip tariant, jei norite ką nors padaryti, pavyzdžiui, slėpti eilutes ar ką nors, kai išeinate iš lapo, naudokite šį VBA įvykį. Sintaksė yra tokia:

Privatus antrinis darbalapis_Deaktyvinti () 'jūsų kodas' Pabaiga 

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

Privatus antrinis darbalapis_Deaktyvinti () „MsgBox“ „Jūs palikote pagrindinį lapą“ pabaigos poskyris 

5. The Worksheet_BeforeDelete ()Įvykis

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

Privatus antrinis darbalapis_BeforeDelete () Pabaiga 

Žemiau pateiktas kodas paklaus, ar norite nukopijuoti turinio, kurį ketinate ištrinti, lapą.

Privatus antrinis darbalapis_BeforeDelete () ans = MsgBox ("Ar norite nukopijuoti šio lapo turinį į naują lapą?", VbYesNo) If ans = True then 'code to end if End Sub 

6. The Worksheet_BeforeDoubleClick („ByVal Target As Range“, „Cancel as Boolean“) Įvykis

Šis įvykis suaktyvinamas, kai dukart spustelėjate taikomą langelį. Šio VBA darbalapio įvykio sintaksė yra tokia:

Privatus antrinis darbalapis_BeforeDoubleClick („ByVal Target As Range“, „Cancel as Boolean“) Pabaiga 

Jei nenustatysite tikslinės langelio ar diapazono, jis bus suaktyvintas kiekvieną dvigubą lapo paspaudimą.
Kintamasis atšaukti yra loginis kintamasis. Jei nustatysite „True“, numatytasis veiksmas neįvyks. Tai reiškia, kad jei dukart spustelėsite langelį, jis neįeis į redagavimo režimą.
Žemiau pateiktas kodas užpildys langelį spalva, jei dukart spustelėsite bet kurį langelį.

Privatus antrinis darbalapis_BeforeDoubleClick („ByVal Target As Range“, „Cancel as Boolean“) „Cancel = True Target.Interior.ColorIndex = 7 pabaiga“ 

Žemiau pateiktas kodas yra skirtas langeliui A1. Jei jis jau užpildytas nurodyta spalva, jis išnyks. Tai labai panašu į mygtuką „Patinka“ arba žymės langelį.

Privatus sub Worksheet_BeforeDoubleClick(„ByVal Target As Range“, atšaukti kaip loginis) If Target.Address = "$ A $ 1" Tada Cancel = True If Target.Interior.ColorIndex = 4 Tada Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Pabaiga Jei pabaiga Sub 

7. The Worksheet_BeforeRightClick („ByVal Target As Range“, „Cancel as Boolean“) Įvykis

Šis įvykis suaktyvinamas, kai dešiniuoju pelės mygtuku spustelėjate nukreiptą langelį. Šio VBA darbalapio įvykio sintaksė yra tokia:

Privatus sub Worksheet_BeforeRightClick(„ByVal Target As Range“, „Cancel as Boolean“) „Cancel = True“ „jūsų kodas“ Pabaiga 

Žemiau pateiktas kodas užpildys langelį 1 reikšme, jei dešiniuoju pelės mygtuku spustelėkite jį. Jame nebus rodomos numatytosios dešiniojo pelės mygtuko paspaudimo parinktys, nes „Atšaukti“ operatorių nustatėme į „True“.

Privatus antrinis darbalapis_BeforeRightClick („ByVal Target As Range“, „Cancel as Boolean“) „Cancel = True Target.Value = 1 End Sub“ 

8. The Worksheet_Calculate () Įvykis

Jei norite, kad kažkas atsitiktų, kai „Excel“ apskaičiuoja lapą, naudokite šį įvykį. Jis suveiks, kai „Excel“ apskaičiuoja lapą. Sintaksė paprasta:

Private Sub Worksheet_Calculate () '' your code 'End Sub 

6. The Worksheet_FollowHyperlink („ByVal Target“ kaip hipersaitas)Įvykis

Ši procedūra bus vykdoma spustelėjus lapo hipersaitą. Pagrindinė šio įvykių tvarkyklės sintaksė yra:

Privatus antrinis darbalapis_FollowHyperlink („ByVal Target As Hyperlink“) „jūsų kodas“ Pabaiga 

Jei norite, galite nustatyti tikslinę hipersaitą. Jei nenustatysite tikslinės hipersaito, ji bus įvykdyta, jei spustelėsite bet kurią hipersaitą, esančią lape, kuriame yra kodas.

Taigi taip, vaikinai, tai buvo keli pagrindiniai darbalapio įvykiai, kurie bus naudingi, jei žinosite apie juos. Žemiau yra keletas susijusių straipsnių, kuriuos galbūt norėsite perskaityti.

Jei turite kokių nors abejonių dėl šio straipsnio ar bet kurio kito su „Excel“/VBA susijusio straipsnio, praneškite mums toliau pateiktame komentarų skyriuje.

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į naudojant | 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.