Haluat ehkä suorittaa makro-/VBA -koodinpätkän, kun tietty työkirja on valittu, työkirjan arkki on valittu, solu muuttaa arvon, kun kaksoisnapsautus tapahtuu, kun arkki lisätään jne. Kaikissa näissä tapauksissa käytämme Työkirjan tapahtumien käsittelijä. Tapahtumakäsittelijä auttaa meitä suorittamaan VBA -koodin aina, kun tietty tapahtuma tapahtuu.
Tässä artikkelissa opimme lyhyesti jokaisesta työkirjan tapahtumakäsittelijästä.
Mikä on työkirjan tapahtumienkäsittelijä?
Työkirjan tapahtumien käsittelijä on aliohjelma, joka on paikallinen työkirjalle. Nämä koodit toimivat vain työkirjan osissa. Nämä ovat itse työkirja, arkit ja alueet.
Minne kirjoittaa työkirjan tapahtumakäsittelijän koodi?
Työkirjan tapahtumat on kirjoitettu vain työkirjaobjektiin. Jos kirjoitat työkirjan tapahtuman jollekin normaalille moduulille, virheitä ei tule, mutta ne eivät vain toimi.
Työkirjaobjektiin kirjoittaminen. Kaksoisnapsauta sitä tai napsauta hiiren kakkospainikkeella ja napsauta näkymäkoodia. Koodin kirjoitusalue tulee näkyviin.
Kuinka kirjoittaa tietyn tapahtuman koodi työkirjaan?
Nyt kun olet muokkaustilassa, vasemman yläkulman avattavassa valikossa näet yleisen. Napsauta avattavaa valikkoa ja valitse työkirja. Kaikki tapahtumat näkyvät oikean yläkulman avattavassa valikossa. Valitse kumpi tarvitset ja lupauskoodi tälle tapahtumalle kirjoitetaan sinulle.
Jokaisella tapahtumalla on kiinteä menettelyn nimi. Nämä ovat varattuja aliohjelmanimiä, jotka alkavat työkirjalla_. Et voi käyttää niitä muihin aliohjelmiin
(voit, mutta ne ovat normaaleja aliohjelmia).
Tärkeä: Jokainen luettelon aliohjelma suoritetaan määritetyssä tapahtumassa.
Yksi työkirjan tapahtumatyyppi voidaan kirjoittaa vain kerran yhteen työkirjaan. Jos kirjoitat kaksi samaa tapahtumakäsittelymenettelyä yhteen työkirjaan, tuloksena on virhe, eikä mitään suoriteta. Virhe on tietysti epäselviä aliohjelmia.
Opetellaan lyhyesti jokaisesta tapahtumasta.
1. The Workbook_SheetChange (ByVal Sh objektina, ByVal Target as Range) Tapahtuma
Tämä tapahtuma käynnistyy, kun teemme muutoksia laskentataulukoiden sisällyttämiseen (muotoilu pois lukien). Jos haluat tehdä jotain, jos muutoksia tehdään johonkin taulukkoon, koodi on:
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'tee jotain Msgbox "tehnyt jotain" End Sub
"Sh" on aina aktiivinen taulukko. "Kohde" on aina aktiivinen solu.
Toinen esimerkki: Voit lisätä päivämäärän ja kellonajan cel, prl B1, jos A1 muuttuu. Tässä tapauksessa käytämme workbook_sheetchange -tapahtumaa. Koodi näyttäisi tältä:
Private Sub Workbook_SheetChange (ByVal Sh objektina, ByVal Target as Range) If Target.Address = "$ A $ 1" then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub
Tämä kohdistaa vain jokaisen arkin soluun A1, koska emme ole määrittäneet "sh" -objektia.
2. The Workbook_Activate () Tapahtuma
Tämä tapahtuma käynnistyy, kun työkirjan sisältävä tapahtumakoodi aktivoituu. Tämän tapahtuman luuranko on:
Yksityinen alityökirja_Activate () Lopeta ala
Yksinkertainen esimerkki on työkirjan nimen näyttäminen, kun se valitaan.
Private Sub Workbook_Activate () MsgBox "Olet työkirjassa" ja Activeworkbook.Name End Sub
Heti kun tulet työkirjaan, joka sisältää tämän koodin, tapahtuma suoritetaan ja näytetään viesti "Olet työkirjan nimessä" (arkki 2 on minun tapauksessani).
3. The Työkirja_Avaa () Tapahtuma
Tämä on yksi kysytyimmistä kysymyksistä, kuinka makro suoritetaan heti, kun työkirja avautuu. Tämä on vastaus. Tämä työkirjatapahtuma suoritetaan heti, kun työkirja avataan. Toisin kuin Workbook_Activate (), tämä koodi toimii vain kerran, ei aina, kun se aktivoidaan.
Private Sub Workbook_Open () 'your code' End Sub
Alla oleva esimerkki Workbook_Open -tapahtumasta tulee vain tervetuloviesti, kun avaat työkirjan sisältävän koodin.
Private Sub Workbook_Open () MsgBox "Welcome to the Master File" End Sub
4. The Workbook_Deactivate () Tapahtuma
Tämä tapahtuma käynnistyy, kun poistut työkirjan sisältävästä koodista. Toisin sanoen, jos haluat tehdä jotain, kuten piilottaa arkit tai jotain, kun vaihdat työkirjaa, käytä tätä VBA -tapahtumaa. Syntaksi on:
Private Sub Workbook_Deactivate () 'your code' End Sub
Alla oleva esimerkki Workbook_Deativate -tapahtumasta tulee vain viesti, jonka olet jättänyt pääarkista, kun poistut tästä taulukosta.
Private Sub Workbook_Deactivate () MsgBox "You Left the Master Sheet" End Sub
5. The Työkirja_BeforeClose () Tapahtuma
Tämä tapahtuma käynnistyy, kun vahvistat VBA -tapahtuman sisältävän taulukon poistamisen. Syntaksi on yksinkertainen:
Yksityinen alityökirja_BeforeClose (Peruuta Booleanina) End Sub
Peruuta -asetukseksi voidaan asettaa tosi, jos haluat pitää työkirjan auki.
Alla oleva koodi kysyy, haluatko tallentaa sulkeutuvan työkirjan sisällön.
Yksityinen alityökirja_BeforeClose (Peruuta Booleanina) ans = MsgBox ("Haluatko tallentaa tämän työkirjan sisällön?", VbYesNo) If ans = True Sitten tämä työkirja.tallenna loppu Jos loppu
6. The Workbook_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) Tapahtuma
Tämä tapahtuma käynnistyy, kun työkirja tallennetaan. Syntaksi on yksinkertainen:
Yksityinen alityökirja_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) End Sub
SaveAsUI -asetuksena on True, jos työkirjassa on muutoksia (ei VBA: ssa).
Peruuta voidaan asettaa arvoon tosi, jos haluat pitää työkirjan tallentamattomana.
Alla oleva koodi kysyy, haluatko tallentaa tallennettavan työkirjan sisällön.
Yksityinen alityökirja_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) ans = MsgBox ("Haluatko todella tallentaa tämän työkirjan sisällön?", VbYesNo) If ans = False then Cancel = True End If End Sub
7. The Workbook_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) Tapahtuma
Tämä tapahtuma käynnistyy, kun ennen työkirjan tallentamista. Syntaksi on yksinkertainen:
Yksityinen alityökirja_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) End Sub
SaveAsUI -asetuksena on True, jos työkirjassa on muutoksia (ei VBA: ssa).
Peruuta -asetukseksi voidaan asettaa tosi, jos haluat pitää työkirjan tallentamattomana.
Alla oleva koodi kysyy, haluatko tallentaa tallennettavan työkirjan sisällön.
Yksityinen alityökirja_BeforeSave (ByVal SaveAsUI as Boolean, Cancel as Boolean) ans = MsgBox ("Haluatko todella tallentaa tämän työkirjan sisällön?", VbYesNo) If ans = False then Cancel = True End If End Sub
8. The Workbook_NewSheet (ByVal Sh objektina) Tapahtuma
Tämä tapahtuma käynnistyy, kun lisäät uuden taulukon työkirjaan. Syntaksi on yksinkertainen:
Yksityinen alityökirja_Uusi -arkki (ByVal Sh objektina) Loppuosa
Sh on arkki -objekti. Tyyppi on itse asiassa ydinobjekti, joten jos lisäämme kaavioarkin, makroarkin tai valintaikkunan, tapahtuma toimii edelleen.
Alla oleva koodi lisää ja näyttää äskettäin lisätyn taulukon nimen.
Yksityinen alityö Työkirja_Uusi -arkki (ByVal Sh As Object) MsgBox "Lisäsit uuden taulukon." & Sh.Name End Sub
Työkirjaobjektin tapahtumia on paljon enemmän. Emme voi keskustella niistä kaikista täällä. Jos haluat tietää tietystä tapahtumasta, kysy alla olevasta kommenttiosasta. Toivottavasti pystyin selittämään työkirjan tapahtumien perusasiat tässä artikkelissa. Kerro minulle, jos se auttoi sinua alla olevassa kommenttiosiossa.
Aiheeseen liittyvät artikkelit:
Laskentataulukon muutostapahtuman käyttäminen makron suorittamiseen, kun muutos on tehty | Joten makron suorittamiseen aina, kun taulukko päivittyy, käytämme VBA: n laskentataulukkotapahtumia.
Suorita makro, jos taulukkoon tehdään muutoksia määritetyllä alueella | Käytä tätä VBA -koodia makrokoodin suorittamiseen määritetyn alueen arvon muuttuessa. Se havaitsee määritetylle alueelle tehdyt muutokset ja laukaisee tapahtuman.
Yksinkertaisin VBA -koodi nykyisen rivin ja sarakkeen korostamiseen | Käytä tätä pientä VBA -katkelmaa korostamaan taulukon nykyinen rivi ja sarake.
Suosittuja artikkeleita:
50 Excel -pikanäppäintä tuottavuuden lisäämiseksi | Nopeuta tehtävääsi. Nämä 50 pikanäppäintä nopeuttavat työtäsi Excelissä.
VLOOKUP -toiminto Excelissä | Tämä on yksi eniten käytetyistä ja suosituimmista Excel -toiminnoista, jota käytetään arvon etsimiseen eri alueilta ja arkeilta.
COUNTIF Excel 2016: ssa | Laske arvot olosuhteilla käyttämällä tätä hämmästyttävää toimintoa. Sinun ei tarvitse suodattaa tietojasi tietyn arvon laskemiseksi. Laskutoiminto on välttämätön kojelaudan valmistelemiseksi.
SUMIF -toiminnon käyttäminen Excelissä | Tämä on toinen kojelaudan olennainen toiminto. Tämä auttaa sinua laskemaan yhteen arvot tietyissä olosuhteissa.