Kui proovite Excel VBA-st hästi aru saada , võiksite selle visuaalse põhioskuse arendamiseks tõenäoliselt kasu tuua mõnest näitest. Siit leiate mõned Exceli VBA näited, et saaksite sellest sündmuste haldamise ärist aru saada.
Exceli VBA näide: töövihiku avamise sündmus
Üks kõige sagedamini kasutatavaid Exceli VBA sündmusi on töövihiku avamise sündmus. Oletagem, et teil on töövihik, mida kasutate iga päev. Selle näite protseduur Workbook_Open käivitatakse iga kord, kui töövihik avatakse. Protseduur kontrollib nädalapäeva; kui on reede, kuvab kood teile meeldetuletussõnumi.
Exceli VBA protseduuri loomiseks, mis käivitatakse alati, kui töövihiku avamise sündmus ilmneb, toimige järgmiselt.
Avage Exceli töövihik.
Iga Exceli töövihik sobib.
VBE aktiveerimiseks vajutage Alt+F11.
Otsige projekti aknast üles töövihik.
Vajadusel topeltklõpsake projekti nimel, et kuvada selle üksused.
Topeltklõpsake üksust ThisWorkbook.
VBE kuvab ThisWorkbook objekti jaoks tühja koodiakna.
Valige aknas Koodi ripploendist Objekt (vasakul) valik Töövihik.
VBE sisestab protseduuri Workbook_Open algus- ja lõpulaused.
Sisestage järgmised avaldused, et kogu sündmuse protseduur näeks välja järgmine:
Privaatne alamtöövihik_Open()
Hämarda sõnum stringina
Kui nädalapäev (praegu) = 6, siis
Msg = "Täna on reede. Ärge unustage"
Msg = Sõnum & "esita TPS-i aruanne!"
Sõnumikasti sõnum
Lõpeta Kui
Lõpeta alam
Koodi aken peaks välja nägema selline.

See sündmuste töötleja protseduur käivitatakse töövihiku avamisel.
Töövihik_Open käivitatakse automaatselt, kui töövihik avatakse. See kasutab nädalapäeva määramiseks VBA WeekDay funktsiooni. Kui on reede (6. päev), tuletab sõnumikast kasutajale meelde aruande esitamist. Kui pole reede, ei juhtu midagi.
Kui täna pole reede, võib teil olla raske seda protseduuri testida. Saate lihtsalt muuta 6, et see vastaks tänasele tegelikule päevanumbrile.
Ja loomulikult saate seda protseduuri muuta mis tahes viisil. Näiteks järgmises versioonis kuvatakse teade iga kord, kui töövihik avatakse. See muutub mõne aja pärast tüütuks.
Protseduur Workbook_Open saab teha peaaegu kõike. Neid sündmuste käitlejaid kasutatakse sageli järgmistel eesmärkidel.
- Tervitusteadete kuvamine (nagu Franki lahedas töövihikus)
- Teiste töövihikute avamine
- Konkreetse töölehe aktiveerimine töövihikus
- Kohandatud kiirmenüüde seadistamine
Siin on viimane Exceli VBA näide protseduurist Workbook_Open, mis kasutab GetSetting ja SaveSetting funktsioone, et jälgida, mitu korda töövihikut on avatud. Funktsioon SaveSetting kirjutab väärtuse Windowsi registrisse ja funktsioon GetSetting hangib selle väärtuse (üksikasju vaadake spikrisüsteemist). Järgmine Exceli VBA näide hangib loendi registrist, suurendab seda ja salvestab selle seejärel tagasi registrisse. Samuti ütleb see kasutajale Cnt väärtuse, mis vastab töövihiku avamiskordade arvule.
Privaatne alamtöövihik_Open()
Dim Cnt As Long
Cnt = GetSetting ("Minu rakendus", "Seaded", "Ava", 0)
Cnt = Cnt + 1
SaveSetting "MyApp", "Settings", "Open", Cnt
MsgBox "See töövihik on avatud " & Cnt & " korda."
Lõpeta alam

Sündmuste töötleja Workbook_Open kasutamine, et jälgida, mitu korda töövihikut on avatud.
Exceli VBA näide: töövihiku sündmus BeforeClose
Siin on näide Exceli VBA töövihiku_BeforeClose sündmusehalduri protseduurist, mis käivitatakse automaatselt vahetult enne töövihiku sulgemist. See protseduur asub ThisWorkbook objekti koodiaknas:
Privaatne alamtöövihik_BeforeClose (Tühista kui Boolean)
Hämarda sõnum stringina
Dim Ans As Long
Dim FName stringina
Msg = "Kas soovite sellest failist varukoopia teha?"
Ans = MsgBox (SMS, vbYesNo)
Kui Ans = vbJah Siis
FName = "F:\BACKUP\" & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs FName
Lõpeta Kui
Lõpeta alam
See rutiin kasutab sõnumikasti, et küsida kasutajalt, kas ta soovib teha töövihikust varukoopia. Kui vastus on jaatav, kasutab kood meetodit SaveCopyAs, et salvestada faili varukoopia draivi F. Kui kohandate seda protseduuri enda tarbeks, peate muutma draivi ja teed.
Exceli programmeerijad kasutavad enda järelt koristamiseks sageli protseduuri Workbook_BeforeClose. Näiteks kui kasutate töövihiku avamisel mõningate sätete muutmiseks protseduuri Workbook_Open (näiteks olekuriba peitmine), on asjakohane ainult töövihiku sulgemisel seadete algolekusse naasmine. Seda elektroonilist majapidamist saate teha protseduuriga Workbook_BeforeClose.
Kui kasutate sündmust Workbook_BeforeClose, pidage meeles järgmist: kui sulgete Exceli ja mõnda avatud faili on pärast viimast salvestamist muudetud, kuvab Excel oma tavalist teatekasti "Kas soovite muudatused salvestada". Nupul Loobu klõpsamine tühistab kogu sulgemisprotsessi. Kuid sündmus Workbook_BeforeClose on niikuinii käivitatud.
Exceli VBA näide: enne salvestamist sündmus töövihiku jaoks
Sündmus BeforeSave, nagu selle nimigi ütleb, käivitatakse enne töövihiku salvestamist. See sündmus leiab aset, kui valite Fail → Salvesta või Fail → Salvesta nimega.
Järgnev protseduur, mis on paigutatud kood akna jaoks ThisWorkbook objekti, näitab BeforeSave sündmus. Rutiin värskendab väärtust lahtris (lahter A1 lehel Sheet1) iga kord, kui töövihik salvestatakse. Teisisõnu toimib lahter A1 loendurina, et jälgida faili salvestamise kordade arvu.
Privaatne alamtöövihik_BeforeSave(ByVal SaveAsUI _
Booleanina, Tühista kui Boolean)
Dim Counter as Range
Set Counter = Sheets("Sheet1").Range("A1")
Counter.Value = loendur.Väärtus + 1
Lõpeta alam
Pange tähele, et protseduuril Workbook_BeforeSave on kaks argumenti: SaveAsUI ja Cancel. Nende argumentide toimimise demonstreerimiseks uurige järgmist makrot, mis käivitatakse enne töövihiku salvestamist. See protseduur püüab takistada kasutajal töövihikut teise nimega salvestamast. Kui kasutaja valib Fail → Salvesta nimega, on SaveAsUI argument tõene.
Kui kood käivitub, kontrollib see SaveAsUI väärtust. Kui see muutuja on Tõene, kuvab protseduur teate ja määrab Cancel väärtuseks Tõene, mis tühistab toimingu Salvesta.
Privaatne alamtöövihik_BeforeSave(ByVal SaveAsUI _
Booleanina, Tühista kui Boolean)
Kui SaveAsUI Siis
MsgBox "Te ei saa selle töövihiku koopiat salvestada!"
Tühista = Tõene
Lõpeta Kui
Lõpeta alam
Pange tähele, et see protseduur ei takista tegelikult kellelgi teise nimega koopiat salvestamast. Kui keegi tõesti tahab seda teha, võib ta lihtsalt avada töövihiku, kui makrod on keelatud. Kui makrod on keelatud, keelatakse ka sündmuste töötleja protseduurid, mis on mõistlik, kuna need on lõppude lõpuks makrod.