Jos yrität saada hyvän käsityksen Excel VBA:sta , saatat hyötyä muutamasta esimerkistä visuaalisen peruskyvyn kehittämiseksi. Täältä löydät muutamia Excel VBA -esimerkkejä, jotta pääset perehtymään tähän tapahtumien käsittelyyn.
Excel VBA -esimerkki: Avaa työkirjan tapahtuma
Yksi yleisimmin käytetyistä Excel VBA -tapahtumista on Workbook Open -tapahtuma. Oletetaan, että sinulla on työkirja, jota käytät joka päivä. Tässä esimerkissä Workbook_Open-toiminto suoritetaan aina, kun työkirja avataan. Toimenpide tarkistaa viikonpäivän; jos on perjantai, koodi näyttää sinulle muistutusviestin.
Voit luoda Excel VBA -proseduurin, joka suoritetaan aina, kun Työkirja Open -tapahtuma tapahtuu, seuraavasti:
Avaa Excel-työkirja.
Mikä tahansa Excel-työkirja käy.
Aktivoi VBE painamalla Alt+F11.
Etsi työkirja Projekti-ikkunasta.
Kaksoisnapsauta projektin nimeä nähdäksesi sen kohteet tarvittaessa.
Kaksoisnapsauta ThisWorkbook-kohdetta.
VBE näyttää tyhjän Code-ikkunan ThisWorkbook-objektille.
Valitse Koodi-ikkunan avattavasta Objekti (vasemmalla) -luettelosta Työkirja.
VBE syöttää Workbook_Open-proseduurin alku- ja loppulausekkeet.
Syötä seuraavat lausunnot, jotta tapahtuman koko menettely näyttää tältä:
Yksityinen alatyökirja_Open()
Dim Msg As String
Jos arkipäivä (nyt) = 6 Sitten
Msg = "Tänään on perjantai. Älä unohda"
Msg = Viesti & "lähetä TPS-raportti!"
Viestilaatikko Viesti
Loppu Jos
Lopeta ala
Koodi-ikkunan pitäisi näyttää tältä.
Tämä tapahtumakäsittelijätoiminto suoritetaan, kun työkirja avataan.
Workbook_Open suoritetaan automaattisesti aina, kun työkirja avataan. Se käyttää VBA:n WeekDay-toimintoa määrittääkseen viikonpäivän. Jos on perjantai (päivä 6), viestilaatikko muistuttaa käyttäjää raportoimaan. Jos ei ole perjantai, mitään ei tapahdu.
Jos tänään ei ole perjantai, tämän menettelyn testaaminen voi olla vaikeaa. Voit vain muuttaa numeron 6 vastaamaan tämän päivän todellista päivänumeroa.
Ja tietysti voit muokata tätä menettelyä haluamallasi tavalla. Esimerkiksi seuraava versio näyttää viestin aina, kun työkirja avataan. Tämä alkaa ärsyttää hetken kuluttua.
Workbook_Open-proseduurilla voidaan tehdä melkein mitä tahansa. Näitä tapahtumakäsittelijöitä käytetään usein seuraaviin:
- Tervetuloviestien näyttäminen (kuten Frankin hienossa työkirjassa)
- Muiden työkirjojen avaaminen
- Tietyn laskentataulukon aktivointi työkirjassa
- Mukautettujen pikavalikoiden määrittäminen
Tässä on viimeinen Excel VBA -esimerkki Workbook_Open-menettelystä, joka käyttää GetSetting- ja SaveSetting-toimintoja seuratakseen, kuinka monta kertaa työkirja on avattu. SaveSetting-toiminto kirjoittaa arvon Windowsin rekisteriin, ja GetSetting-toiminto noutaa sen (katso lisätietoja ohjejärjestelmästä). Seuraava Excel VBA -esimerkki noutaa määrän rekisteristä, lisää sitä ja tallentaa sen sitten takaisin rekisteriin. Se myös kertoo käyttäjälle Cnt:n arvon, joka vastaa sitä, kuinka monta kertaa työkirja on avattu.
Yksityinen alatyökirja_Open()
Dim Cnt As Long
Cnt = GetSetting("OmaApp", "Asetukset", "Avaa", 0)
Cnt = Cnt + 1
SaveSetting "MyApp", "Settings", "Open", Cnt
MsgBox "Tämä työkirja on avattu " & Cnt & " kertaa."
Lopeta ala
Workbook_Open-tapahtumakäsittelijän avulla voit seurata, kuinka monta kertaa työkirja on avattu.
Excel VBA -esimerkki: EnnenClose-tapahtuma työkirjalle
Tässä on esimerkki Excel VBA Workbook_BeforeClose -tapahtumankäsittelyproseduurista, joka suoritetaan automaattisesti välittömästi ennen työkirjan sulkemista. Tämä toimenpide sijaitsee ThisWorkbook-objektin Koodi-ikkunassa:
Yksityinen alatyökirja_BeforeClose(Peruuta Boolean)
Dim Msg As String
Dim Ans As Long
Himmeä FName merkkijonona
Msg = "Haluatko tehdä varmuuskopion tästä tiedostosta?"
Ans = ViestiBox(Viesti, vbYesNo)
Jos Ans = vbYes Sitten
FName = "F:\BACKUP\" & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs FName
Loppu Jos
Lopeta ala
Tämä rutiini käyttää viestiruutua kysyäkseen käyttäjältä, haluaako hän tehdä varmuuskopion työkirjasta. Jos vastaus on kyllä, koodi käyttää SaveCopyAs-menetelmää tiedoston varmuuskopion tallentamiseen asemaan F. Jos mukautat tämän menettelyn omaan käyttöösi, sinun on vaihdettava asemaa ja polkua.
Excel-ohjelmoijat käyttävät usein Workbook_BeforeClose-menettelyä siivotakseen itsensä. Jos esimerkiksi käytät Workbook_Open-menettelyä muuttaaksesi joitain asetuksia, kun avaat työkirjan (piilottamalla esimerkiksi tilapalkin), on tarkoituksenmukaista, että palautat asetukset alkuperäiseen tilaansa, kun suljet työkirjan. Voit suorittaa tämän sähköisen taloudenpidon Workbook_BeforeClose-menettelyllä.
Kun käytät Workbook_BeforeClose-tapahtumaa, muista tämä: Jos suljet Excelin ja mitä tahansa avoinna olevaa tiedostoa on muutettu edellisen tallennuksen jälkeen, Excel näyttää tavallisen "Haluatko tallentaa muutokset" -viestiruudun. Peruuta-painikkeen napsauttaminen peruuttaa koko sulkemisprosessin. Mutta Workbook_BeforeClose-tapahtuma on suoritettu joka tapauksessa.
Excel VBA -esimerkki: EnnenSave-tapahtuma työkirjalle
BeforeSave-tapahtuma käynnistyy, kuten sen nimi kertoo, ennen kuin työkirja tallennetaan. Tämä tapahtuma tapahtuu, kun valitset Tiedosto → Tallenna tai Tiedosto → Tallenna nimellä.
Seuraava menettely, joka sijoitetaan ThisWorkbook-objektin Code-ikkunaan , esittelee BeforeSave-tapahtuman. Rutiini päivittää solun arvon (Set11:n solu A1) aina, kun työkirja tallennetaan. Toisin sanoen solu A1 toimii laskurina, joka seuraa tiedoston tallennuskertojen määrää.
Yksityinen alatyökirja_BeforeSave(ByVal SaveAsUI _
Totuusarvoisena, Peruuta Boolena)
Dim Counter As Range
Aseta laskuri = Sheets("Sheet1").Alue("A1")
Laskuri.Arvo = Counter.Value + 1
Lopeta ala
Huomaa, että Workbook_BeforeSave-proseduurilla on kaksi argumenttia: SaveAsUI ja Cancel. Osoittaaksesi, kuinka nämä argumentit toimivat, tutki seuraavaa makroa, joka suoritetaan ennen työkirjan tallentamista. Tämä toimenpide yrittää estää käyttäjää tallentamasta työkirjaa eri nimellä. Jos käyttäjä valitsee Tiedosto → Tallenna nimellä, SaveAsUI-argumentti on True.
Kun koodi suoritetaan, se tarkistaa SaveAsUI-arvon. Jos tämä muuttuja on True, toimenpide näyttää viestin ja määrittää Peruuta arvoon True, mikä peruuttaa tallennustoiminnon.
Yksityinen alatyökirja_BeforeSave(ByVal SaveAsUI _
Totuusarvoisena, Peruuta Boolena)
Jos SaveAsUI sitten
MsgBox "Et voi tallentaa kopiota tästä työkirjasta!"
Peruuta = Totta
Loppu Jos
Lopeta ala
Huomaa, että tämä toimenpide ei todellakaan estä ketään tallentamasta kopiota eri nimellä. Jos joku todella haluaa tehdä sen, hän voi vain avata työkirjan makrojen ollessa pois käytöstä. Kun makrot on poistettu käytöstä, myös tapahtumakäsittelijän toiminnot poistetaan käytöstä, mikä on järkevää, koska ne ovat loppujen lopuksi makroja.