Ja mēģināt iegūt labu izpratni par Excel VBA , iespējams, jums noderēs daži piemēri, lai attīstītu šo vizuālo pamatprasmi. Šeit ir daži Excel VBA piemēri, lai jūs varētu uzzināt par šo notikumu apstrādes biznesu.
Excel VBA piemērs: darbgrāmatas atvēršanas notikums
Viens no visbiežāk izmantotajiem Excel VBA notikumiem ir darbgrāmatas atvēršanas notikums. Pieņemsim, ka jums ir darbgrāmata, kuru izmantojat katru dienu. Procedūra Workbook_Open šajā piemērā tiek izpildīta katru reizi, kad tiek atvērta darbgrāmata. Procedūra pārbauda nedēļas dienu; ja ir piektdiena, kods parāda jums atgādinājuma ziņojumu.
Lai izveidotu Excel VBA procedūru, kas tiek izpildīta ikreiz, kad notiek darbgrāmatas atvēršanas notikums, veiciet šīs darbības:
Atveriet Excel darbgrāmatu.
Derēs jebkura Excel darbgrāmata.
Nospiediet Alt+F11, lai aktivizētu VBE.
Atrodiet darbgrāmatu logā Projekts.
Veiciet dubultklikšķi uz projekta nosaukuma, lai vajadzības gadījumā parādītu tā vienumus.
Veiciet dubultklikšķi uz vienuma ThisWorkbook.
VBE parāda tukšu Code logu ThisWorkbook objektam.
Logā Kods nolaižamajā sarakstā Objekts (pa kreisi) atlasiet Darbgrāmata.
VBE ievada sākuma un beigu priekšrakstus procedūrai Workbook_Open.
Ievadiet šādus paziņojumus, lai visa notikuma procedūra izskatītos šādi:
Privāta apakšdarbgrāmata_Open()
Dim Msg As String
Ja nedēļas diena (tagad) = 6, tad
Msg = "Šodien ir piektdiena. Neaizmirstiet "
Msg = Ziņojums & "iesniedziet TPS ziņojumu!"
MsgBox Ziņojums
Beigas Ja
Beigt apakš
Koda logam vajadzētu izskatīties šādi.
Šī notikumu apstrādātāja procedūra tiek izpildīta, atverot darbgrāmatu.
Workbook_Open tiek izpildīts automātiski, kad tiek atvērta darbgrāmata. Tas izmanto VBA WeekDay funkciju, lai noteiktu nedēļas dienu. Ja ir piektdiena (6. diena), ziņojuma lodziņš atgādina lietotājam iesniegt ziņojumu. Ja nav piektdiena, nekas nenotiek.
Ja šodien nav piektdiena, jums var būt grūti pārbaudīt šo procedūru. Varat vienkārši mainīt 6, lai tas atbilstu šodienas faktiskajam dienas skaitlim.
Un, protams, jūs varat modificēt šo procedūru, kā vēlaties. Piemēram, nākamajā versijā tiek parādīts ziņojums katru reizi, kad tiek atvērta darbgrāmata. Pēc kāda laika tas kļūst kaitinoši.
Procedūra Workbook_Open var darīt gandrīz jebko. Šos notikumu apdarinātājus bieži izmanto:
- Sveiciena ziņojumu parādīšana (piemēram, Frenka foršajā darbgrāmatā)
- Citu darbgrāmatu atvēršana
- Konkrētas darblapas aktivizēšana darbgrāmatā
- Pielāgotu īsceļu izvēlņu iestatīšana
Šis ir pēdējais Excel VBA procedūras Workbook_Open piemērs, kurā tiek izmantotas funkcijas GetSetting un SaveSetting, lai izsekotu, cik reižu darbgrāmata ir atvērta. Funkcija SaveSetting ieraksta vērtību Windows reģistrā, un funkcija GetSetting izgūst šo vērtību (sīkāku informāciju skatiet palīdzības sistēmā). Šis Excel VBA piemērs izgūst skaitu no reģistra, palielina to un pēc tam saglabā to atpakaļ reģistrā. Tas arī norāda lietotājam Cnt vērtību, kas atbilst darbgrāmatas atvēršanas reižu skaitam.
Privāta apakšdarbgrāmata_Open()
Dim Cnt Tik ilgi
Cnt = GetSetting ("MyApp", "Iestatījumi", "Atvērt", 0)
Cnt = Cnt + 1
SaveSetting "MyApp", "Settings", "Open", Cnt
MsgBox "Šī darbgrāmata ir atvērta " & Cnt & " reizes."
Beigt apakš
Notikumu apstrādātāja Workbook_Open izmantošana, lai izsekotu, cik reižu darbgrāmata ir atvērta.
Excel VBA piemērs: notikums BeforeClose darbgrāmatai
Šeit ir piemērs Excel VBA Workbook_BeforeClose notikumu apstrādātāja procedūrai, kas tiek izpildīta automātiski tieši pirms darbgrāmatas aizvēršanas. Šī procedūra atrodas ThisWorkbook objekta koda logā:
Private Sub Workbook_BeforeClose (Atcelt kā Būla)
Dim Msg As String
Dim Ans As Long
Dim FName kā virkne
Msg = "Vai vēlaties izveidot šī faila dublējumu?"
Ans = MsgBox(Ziņojums, vbYesNo)
Ja Ans = vbJā Tad
FName = "F:\BACKUP\" & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs FName
Beigas Ja
Beigt apakš
Šī rutīna izmanto ziņojuma lodziņu, lai jautātu lietotājam, vai viņš vēlas izveidot darbgrāmatas dublējumkopiju. Ja atbilde ir jā, kods izmanto SaveCopyAs metodi, lai saglabātu faila dublējumkopiju diskā F. Ja pielāgojat šo procedūru savām vajadzībām, jums ir jāmaina disks un ceļš.
Excel programmētāji bieži izmanto procedūru Workbook_BeforeClose, lai sakoptu aiz sevis. Piemēram, ja izmantojat procedūru Workbook_Open, lai mainītu dažus iestatījumus, atverot darbgrāmatu (piemēram, paslēpjot statusa joslu), iestatījumus var atjaunot sākotnējā stāvoklī, kad aizverat darbgrāmatu. Šo elektronisko mājturību varat veikt ar procedūru Workbook_BeforeClose.
Izmantojot notikumu Workbook_BeforeClose, paturiet prātā: ja aizverat programmu Excel un kāds atvērts fails ir mainīts kopš pēdējās saglabāšanas, programma Excel parāda parasto ziņojuma lodziņu “Vai vēlaties saglabāt izmaiņas”. Noklikšķinot uz pogas Atcelt, tiek atcelts viss aizvēršanas process. Bet notikums Workbook_BeforeClose tik un tā būs izpildīts.
Excel VBA piemērs: notikums BeforeSave darbgrāmatai
Notikums BeforeSave, kā norāda tā nosaukums, tiek aktivizēts pirms darbgrāmatas saglabāšanas. Šis notikums notiek, kad izvēlaties Fails → Saglabāt vai Fails → Saglabāt kā.
Tālāk norādītā procedūra, kas tiek ievietota ThisWorkbook objekta koda logā , demonstrē notikumu BeforeSave. Rutīna atjaunina vērtību šūnā (šūna A1 lapā 1) katru reizi, kad tiek saglabāta darbgrāmata. Citiem vārdiem sakot, šūna A1 kalpo kā skaitītājs, lai sekotu līdzi faila saglabāšanas reižu skaitam.
Privāta apakšdarbgrāmata_BeforeSave(byVal SaveAsUI _
Kā Būla vērtība, Atcelt kā Būla)
Dim Counter As Range
Iestatīt skaitītāju = loksnes("1. lapa"). Diapazons("A1")
Skaitītājs.Vērtība = Counter.Value + 1
Beigt apakš
Ņemiet vērā, ka procedūrai Workbook_BeforeSave ir divi argumenti: SaveAsUI un Cancel. Lai parādītu, kā šie argumenti darbojas, pārbaudiet šo makro, kas tiek izpildīts pirms darbgrāmatas saglabāšanas. Šī procedūra mēģina neļaut lietotājam saglabāt darbgrāmatu ar citu nosaukumu. Ja lietotājs izvēlas Fails → Saglabāt kā, SaveAsUI arguments ir True.
Kad kods tiek izpildīts, tas pārbauda SaveAsUI vērtību. Ja šis mainīgais ir True, procedūra parāda ziņojumu un iestata Cancel uz True, kas atceļ saglabāšanas darbību.
Privāta apakšdarbgrāmata_BeforeSave(byVal SaveAsUI _
Kā Būla vērtība, Atcelt kā Būla)
Ja SaveAsUI Tad
MsgBox "Jūs nevarat saglabāt šīs darbgrāmatas kopiju!"
Atcelt = patiess
Beigas Ja
Beigt apakš
Ņemiet vērā, ka šī procedūra nevienam netraucēs saglabāt kopiju ar citu nosaukumu. Ja kāds patiešām vēlas to darīt, viņš vai viņa var vienkārši atvērt darbgrāmatu ar atspējotiem makro. Ja makro ir atspējoti, tiek atspējotas arī notikumu apstrādātāja procedūras, kas ir loģiski, jo tie galu galā ir makro.