Če poskušate dobro razumeti Excel VBA , bi vam verjetno lahko koristilo nekaj primerov za razvoj te vizualne osnovne sposobnosti. Tukaj najdete nekaj primerov Excel VBA, da se boste lahko navadili na to podjetje z obravnavo dogodkov.
Primer Excel VBA: dogodek Odpri za delovni zvezek
Eden najpogosteje uporabljenih dogodkov Excel VBA je dogodek Open Workbook. Predpostavimo, da imate delovni zvezek, ki ga uporabljate vsak dan. Postopek Workbook_Open v tem primeru se izvede vsakič, ko odprete delovni zvezek. Postopek preverja dan v tednu; če je petek, vam koda prikaže sporočilo z opomnikom.
Če želite ustvariti Excelov postopek VBA, ki se izvede vsakič, ko pride do dogodka Odpiranje delovnega zvezka, sledite tem korakom:
Odprite Excelov delovni zvezek.
Vsak Excelov delovni zvezek bo primeren.
Pritisnite Alt+F11, da aktivirate VBE.
Poiščite delovni zvezek v oknu Projekt.
Če je potrebno, dvokliknite ime projekta, da prikažete njegove elemente.
Dvokliknite element ThisWorkbook.
VBE prikaže prazno okno kode za objekt ThisWorkbook.
V oknu Koda izberite Delovni zvezek s spustnega seznama Objekt (levo).
VBE vnese začetne in končne stavke za proceduro Workbook_Open.
Vnesite naslednje izjave, tako da bo celoten postopek dogodka videti tako:
Zasebni delovni zvezek_Open()
Zatemni sporočilo kot niz
Če je dan v tednu (zdaj) = 6 Potem
Msg = "Danes je petek. Ne pozabite"
Sporočilo = Sporočilo & "pošlji poročilo TPS!"
MsgBox Msg
Konec Če
Končni sub
Okno kode bi moralo izgledati takole.

Ta postopek za obravnavo dogodkov se izvede, ko se odpre delovni zvezek.
Workbook_Open se izvede samodejno vsakič, ko se odpre delovni zvezek. Za določitev dneva v tednu uporablja funkcijo WeekDay VBA. Če je petek (6. dan), okence s sporočilom uporabnika opomni, naj predloži poročilo. Če ni petek, se ne zgodi nič.
Če danes ni petek, boste morda težko preizkusili ta postopek. Lahko samo spremenite 6, da ustreza današnji dejanski številki dneva.
In seveda lahko ta postopek spremenite na poljuben način. Naslednja različica na primer prikaže sporočilo vsakič, ko odprete delovni zvezek. To postane moteče čez nekaj časa.
Postopek Workbook_Open lahko naredi skoraj vse. Ti obdelovalci dogodkov se pogosto uporabljajo za naslednje:
- Prikazovanje pozdravnih sporočil (na primer v Frankovem kul delovnem zvezku)
- Odpiranje drugih delovnih zvezkov
- Aktiviranje določenega delovnega lista v delovnem zvezku
- Nastavitev bližnjičnih menijev po meri
Tukaj je zadnji primer Excel VBA postopka Workbook_Open, ki uporablja funkciji GetSetting in SaveSetting za spremljanje, kolikokrat je bil delovni zvezek odprt. Funkcija SaveSetting zapiše vrednost v register Windows, funkcija GetSetting pa pridobi to vrednost (za podrobnosti glejte sistem pomoči). Naslednji primer Excel VBA pridobi štetje iz registra, ga poveča in nato shrani nazaj v register. Uporabniku tudi pove vrednost Cnt, ki ustreza številu, kolikokrat je bil delovni zvezek odprt.
Zasebni delovni zvezek_Open()
Dim Cnt As Long
Cnt = GetSetting("MyApp", "Settings", "Open", 0)
Cnt = Cnt + 1
SaveSetting "MyApp", "Settings", "Open", Cnt
MsgBox "Ta delovni zvezek je bil odprt " & Cnt & " krat."
Končni sub
![Primeri Excel VBA: primeri uvodnih dogodkov]()
Uporaba obdelovalca dogodkov Workbook_Open za spremljanje, kolikokrat je bil delovni zvezek odprt.
Primer Excel VBA: dogodek BeforeClose za delovni zvezek
Tukaj je primer postopka za obravnavo dogodkov Excel VBA Workbook_BeforeClose, ki se izvede samodejno tik pred zaprtjem delovnega zvezka. Ta postopek se nahaja v oknu kode za predmet ThisWorkbook:
Private Sub Workbook_BeforeClose(Prekliči kot Boolean)
Zatemni sporočilo kot niz
Dim Ans As Long
Dim FName kot niz
Msg = "Ali želite narediti varnostno kopijo te datoteke?"
Ans = MsgBox(Msg, vbYesNo)
Če Ans = vbYes Potem
FName = "F:\BACKUP\" & ThisWorkbook.Name
Ta delovni zvezek.SaveCopyAs FName
Konec Če
Končni sub
Ta rutina uporablja polje za sporočilo, da vpraša uporabnika, ali želi narediti varnostno kopijo delovnega zvezka. Če je odgovor pritrdilen, koda uporablja metodo SaveCopyAs, da shrani varnostno kopijo datoteke na pogon F. Če ta postopek prilagodite za lastno uporabo, morate spremeniti pogon in pot.
Excelovi programerji pogosto uporabljajo postopek Workbook_BeforeClose, da počistijo za seboj. Če na primer uporabite postopek Workbook_Open za spreminjanje nekaterih nastavitev, ko odprete delovni zvezek (na primer skrijete vrstico stanja), je primerno le, da nastavitve vrnete v prvotno stanje, ko zaprete delovni zvezek. To elektronsko gospodinjstvo lahko izvedete s postopkom Workbook_BeforeClose.
Ko uporabljate dogodek Workbook_BeforeClose, upoštevajte to: Če zaprete Excel in je bila katera koli odprta datoteka spremenjena od zadnjega shranjevanja, Excel prikaže svoje običajno sporočilo »Ali želite shraniti spremembe«. S klikom na gumb Prekliči prekličete celoten postopek zapiranja. Toda dogodek Workbook_BeforeClose bo vseeno izveden.
Primer Excel VBA: dogodek Pred Shrani za delovni zvezek
Dogodek BeforeSave, kot pove njegovo ime, se sproži, preden se delovni zvezek shrani. Ta dogodek se zgodi, ko izberete Datoteka → Shrani ali Datoteka → Shrani kot.
Naslednji postopek, ki je postavljen v okno Code za predmet ThisWorkbook, prikazuje dogodek PreSave. Rutina posodobi vrednost v celici (celica A1 na listu1) vsakič, ko je delovni zvezek shranjen. Z drugimi besedami, celica A1 služi kot števec za sledenje, kolikokrat je bila datoteka shranjena.
Delovni zvezek zasebnega podpora_pred shranjevanjem(ByVal SaveAsUI _
Kot Boolean, Prekliči kot Boolean)
Dim Counter As Range
Nastavi števec = Listi("List1").Razpon("A1")
Counter.Value = Counter.Value + 1
Končni sub
Upoštevajte, da ima postopek Workbook_BeforeSave dva argumenta: SaveAsUI in Cancel. Če želite pokazati, kako ti argumenti delujejo, preglejte naslednji makro, ki se izvede, preden se delovni zvezek shrani. Ta postopek poskuša uporabniku preprečiti, da bi shranil delovni zvezek z drugim imenom. Če uporabnik izbere Datoteka → Shrani kot, je argument SaveAsUI True.
Ko se koda izvede, preveri vrednost SaveAsUI. Če je ta spremenljivka True, postopek prikaže sporočilo in nastavi Prekliči na True, kar prekliče operacijo Shrani.
Delovni zvezek zasebnega podpora_pred shranjevanjem(ByVal SaveAsUI _
Kot Boolean, Prekliči kot Boolean)
Če SaveAsUI Potem
MsgBox "Ne morete shraniti kopije tega delovnega zvezka!"
Prekliči = Res
Konec Če
Končni sub
Upoštevajte, da ta postopek v resnici nikomur ne bo preprečil, da bi shranil kopijo z drugim imenom. Če nekdo to res želi narediti, lahko preprosto odpre delovni zvezek z onemogočenimi makri. Ko so makri onemogočeni, so onemogočeni tudi postopki za obravnavo dogodkov, kar je smiselno, ker so navsezadnje makri.