Nëse po përpiqeni të kuptoni mirë Excel VBA , ndoshta mund të përfitoni nga disa shembuj për të zhvilluar atë aftësi bazë vizuale. Këtu, ju gjeni disa shembuj Excel VBA, në mënyrë që të mund të përfitoni nga ky biznes i trajtimit të ngjarjeve.
Shembull Excel VBA: Ngjarja e hapur për një libër pune
Një nga ngjarjet më të përdorura të Excel VBA është ngjarja e Workbook Open. Supozoni se keni një libër pune që e përdorni çdo ditë. Procedura Workbook_Open në këtë shembull ekzekutohet sa herë që hapet libri i punës. Procedura kontrollon ditën e javës; nëse është e premte, kodi shfaq një mesazh rikujtues për ju.
Për të krijuar procedurën Excel VBA që ekzekutohet sa herë që ndodh ngjarja Openbook Workbook, ndiqni këto hapa:
Hapni librin e punës në Excel.
Çdo libër pune në Excel do të funksionojë.
Shtypni Alt+F11 për të aktivizuar VBE.
Gjeni librin e punës në dritaren e Projektit.
Klikoni dy herë mbi emrin e projektit për të shfaqur artikujt e tij, nëse është e nevojshme.
Klikoni dy herë mbi artikullin ThisWorkbook.
VBE shfaq një dritare të zbrazët të Kodit për objektin ThisWorkbook.
Në dritaren e Kodit, zgjidhni Workbook nga lista rënëse Object (majtas).
VBE fut deklaratat e fillimit dhe të përfundimit për një procedurë Workbook_Open.
Futni deklaratat e mëposhtme, kështu që procedura e plotë e ngjarjes duket si kjo:
Nën-libër pune privat_Open()
Dim Msg As String
Nëse Dita e javës (Tani) = 6 Atëherë
Msg = "Sot është e premte. Mos harroni të "
Msg = Msg & "paraqit Raportin TPS!"
MsgBox Msg
Fundi Nëse
Fundi Nën
Dritarja e Kodit duhet të duket kështu.

Kjo procedurë e mbajtësit të ngjarjeve ekzekutohet kur hapet libri i punës.
Workbook_Open ekzekutohet automatikisht sa herë që hapet libri i punës. Ai përdor funksionin WeekDay të VBA për të përcaktuar ditën e javës. Nëse është e premte (dita 6), një kuti mesazhi i kujton përdoruesit të dorëzojë një raport. Nëse nuk është e premte, asgjë nuk ndodh.
Nëse sot nuk është e premte, mund ta keni të vështirë ta provoni këtë procedurë. Ju thjesht mund të ndryshoni numrin 6 që të korrespondojë me numrin aktual të ditës së sotme.
Dhe sigurisht, ju mund ta modifikoni këtë procedurë si të dëshironi. Për shembull, versioni i mëposhtëm shfaq një mesazh sa herë që hapet libri i punës. Kjo bëhet e bezdisshme pas një kohe.
Një procedurë Workbook_Open mund të bëjë pothuajse çdo gjë. Këta mbajtës ngjarjesh përdoren shpesh për sa vijon:
- Shfaqja e mesazheve të mirëseardhjes (si p.sh. në librin e mirë të punës të Frank)
- Hapja e librave të tjerë të punës
- Aktivizimi i një flete të caktuar pune në librin e punës
- Konfigurimi i menuve të shkurtoreve të personalizuara
Këtu është një shembull përfundimtar i Excel VBA i një procedure Workbook_Open që përdor funksionet GetSetting dhe SaveSetting për të mbajtur shënim se sa herë është hapur libri i punës. Funksioni SaveSetting shkruan një vlerë në regjistrin e Windows dhe funksioni GetSetting e merr atë vlerë (shih sistemin e ndihmës për detaje). Shembulli i mëposhtëm i Excel VBA e merr numërimin nga regjistri, e rrit atë dhe më pas e ruan përsëri në regjistër. Ai gjithashtu i tregon përdoruesit vlerën e Cnt që korrespondon me numrin e herëve që është hapur libri i punës.
Nën-libër pune privat_Open()
Dim Cnt Për aq kohë sa
Cnt = GetSetting ("MyApp", "Cilësimet", "Open", 0)
Cnt = Cnt + 1
SaveSetting "MyApp", "Settings", "Open", Cnt
MsgBox "Ky libër pune është hapur " & Cnt & " herë."
Fundi Nën
![Shembuj të Excel VBA: Shembuj të ngjarjeve hyrëse]()
Përdorimi i një trajtuesi të ngjarjeve Workbook_Open për të mbajtur shënim se sa herë është hapur një libër pune.
Shembull Excel VBA: Ngjarja BeforeClose për një libër pune
Këtu është një shembull i procedurës së trajtuesit të ngjarjeve të Excel VBA Workbook_BeforeClose, e cila ekzekutohet automatikisht menjëherë përpara se të mbyllet libri i punës. Kjo procedurë ndodhet në dritaren e Kodit për një objekt ThisWorkbook:
Nën-libër pune privat_BeforeClose (Anulo si Boolean)
Dim Msg As String
Dim Ans Sa Long
Dim FName si varg
Msg = "Dëshironi të bëni një kopje rezervë të këtij skedari?"
Përgjigje = MsgBox (Msg, vbPo Jo)
Nëse Ans = vbPo Atëherë
FName = "F:\BACKUP\" & This Workbook.Name
ThisWorkbook.SaveCopyAs FName
Fundi Nëse
Fundi Nën
Kjo rutinë përdor një kuti mesazhesh për të pyetur përdoruesin nëse dëshiron të bëjë një kopje rezervë të librit të punës. Nëse përgjigja është po, kodi përdor metodën SaveCopyAs për të ruajtur një kopje rezervë të skedarit në diskun F. Nëse e përshtatni këtë procedurë për përdorimin tuaj, duhet të ndryshoni diskun dhe shtegun.
Programuesit e Excel shpesh përdorin një procedurë Workbook_BeforeClose për të pastruar veten. Për shembull, nëse përdorni një procedurë Workbook_Open për të ndryshuar disa cilësime kur hapni një libër pune (duke fshehur shiritin e statusit, për shembull), është e përshtatshme që t'i ktheni cilësimet në gjendjen e tyre origjinale kur mbyllni librin e punës. Ju mund ta kryeni këtë ruajtje elektronike me një procedurë Workbook_BeforeClose.
Kur përdorni ngjarjen Workbook_BeforeClose, mbani parasysh këtë: Nëse mbyllni Excel dhe çdo skedar i hapur është ndryshuar që nga ruajtja e fundit, Excel shfaq kutinë e zakonshme të mesazhit "A doni të ruani ndryshimet tuaja". Klikimi i butonit Anulo anulon të gjithë procesin e mbylljes. Por ngjarja Workbook_BeforeClose do të jetë ekzekutuar gjithsesi.
Shembull Excel VBA: Ngjarja BeforeSave për një libër pune
Ngjarja BeforeSave, siç nënkupton edhe emri i saj, aktivizohet përpara se të ruhet një libër pune. Kjo ngjarje ndodh kur zgjidhni Skedar → Ruaj ose Skedar → Ruaj si.
Procedura e mëposhtme, e cila vendoset në dritaren e Kodit për një objekt ThisWorkbook, demonstron ngjarjen BeforeSave. Rutina përditëson vlerën në një qelizë (qeliza A1 në Fletën1) sa herë që ruhet libri i punës. Me fjalë të tjera, qeliza A1 shërben si një numërues për të mbajtur gjurmët e numrit të herëve që skedari është ruajtur.
Nën-libër pune privat_ParaSave(ByVal SaveAsUI _
Si Boolean, Anulo si Boolean)
Numëruesi i zbehtë si varg
Set Counter = Fletë ("Fletë1"). Gama ("A1")
Counter.Value = Counter.Vlera + 1
Fundi Nën
Vini re se procedura e Workbook_BeforeSave ka dy argumente: SaveAsUI dhe Cancel. Për të demonstruar se si funksionojnë këto argumente, shqyrtoni makronë e mëposhtme, e cila ekzekutohet përpara se të ruhet libri i punës. Kjo procedurë përpiqet të parandalojë përdoruesin të ruajë librin e punës me një emër tjetër. Nëse përdoruesi zgjedh Skedar → Ruaj si, argumenti SaveAsUI është i vërtetë.
Kur kodi ekzekutohet, ai kontrollon vlerën SaveAsUI. Nëse kjo variabël është e vërtetë, procedura shfaq një mesazh dhe vendos Cancel në True, e cila anulon operacionin Save.
Nën-libër pune privat_ParaSave(ByVal SaveAsUI _
Si Boolean, Anulo si Boolean)
Nëse SaveAsUI Atëherë
MsgBox "Nuk mund të ruash një kopje të këtij libri pune!"
Anulo = E vërtetë
Fundi Nëse
Fundi Nën
Vini re se kjo procedurë nuk do të pengojë askënd që të ruajë një kopje me një emër tjetër. Nëse dikush me të vërtetë dëshiron ta bëjë këtë, ai ose ajo thjesht mund të hapë librin e punës me makro të çaktivizuara. Kur makro-të çaktivizohen, procedurat e menaxhimit të ngjarjeve janë gjithashtu të çaktivizuara, gjë që ka kuptim sepse ato janë, në fund të fundit, makro.