Programmai Excel 2016 VBA programmēšanā varat izmantot divu veidu notikumus, kas nav saistīti ar objektiem: laiks un taustiņu nospiešanas. Tā kā laiks un taustiņu nospiešanas nav saistīti ar noteiktu objektu, piemēram, darbgrāmatu vai darblapu, jūs ieprogrammējat šos notikumus parastā VBA modulī.
Pasākums OnTime
Notikums OnTime notiek, kad notiek noteikts diennakts laiks. Nākamajā piemērā ir parādīts, kā panākt, lai programma Excel izpildītu procedūru, kad notiek pulksten 15.00 notikums. Šajā gadījumā robota balss liek jums pamosties, un to pavada ziņojuma lodziņš:
Sub SetAlarm()
Application.OnTime 0.625, “DisplayAlarm”
Beigu apakš
Sub DisplayAlarm()
Lietojumprogramma.Runa.Runā (“Hei, mosties”)
MsgBox “Ir pienācis laiks pēcpusdienas pārtraukumam!”
Beigu apakš
Šajā piemērā tiek izmantota lietojumprogrammas objekta OnTime metode. Šai metodei ir divi argumenti: laiks (0,625 vai 15:00) un apakšprocedūras nosaukums, kas jāizpilda, kad notiek laika notikums (DisplayAlarm).
Šī procedūra ir ļoti noderīga, ja mēdzat tā iegrimt savos darbos, ka aizmirstat par sanāksmēm un tikšanās reizēm. Vienkārši iestatiet OnTime notikumu, lai par sevi atgādinātu.
Lielākajai daļai cilvēku ir grūti iedomāties laiku Excel numerācijas sistēmā. Tāpēc, iespējams, vēlēsities izmantot funkciju VBA TimeValue, lai attēlotu laiku. TimeValue pārvērš virkni, kas izskatās pēc laika, vērtībā, ko programma Excel var apstrādāt. Šis paziņojums parāda vienkāršāku veidu, kā ieprogrammēt pasākumu pulksten 15:00:
Application.OnTime TimeValue (“15:00:00”), “DisplayAlarm”
Ja vēlaties ieplānot notikumu saistībā ar pašreizējo laiku (piemēram, 20 minūtes no šī brīža), varat izmantot šādu paziņojumu:
Application.OnTime Now + TimeValue ("00:20:00"), "DisplayAlarm"
Varat arī izmantot OnTime metodi, lai konkrētā dienā palaistu VBA procedūru. Jums jāpārliecinās, ka dators turpina darboties un darbgrāmata ar procedūru ir atvērta. Šis paziņojums palaiž DisplayAlarm procedūru 2016. gada 31. decembrī plkst. 17:00:
Application.OnTime DateValue (“31/12/2016 17:00”), “DisplayAlarm”
Šī konkrētā koda rindiņa varētu noderēt, lai brīdinātu, ka jādodas mājās un jāsagatavojas Vecgada vakara svētkiem.
Šeit ir vēl viens piemērs, kurā tiek izmantots OnTime notikums. Veicot UpdateClock procedūras, laiks tiek ierakstīts šūnā A1 un pēc piecām sekundēm tiek ieprogrammēts cits notikums. Šis notikums atkārtoti palaiž UpdateClock procedūru. Rezultāts ir tāds, ka šūna A1 tiek atjaunināta ar pašreizējo laiku ik pēc piecām sekundēm. Lai apturētu notikumus, izpildiet StopClock procedūru (kas atceļ notikumu). Ņemiet vērā, ka NextTick ir moduļa līmeņa mainīgais, kas saglabā laiku nākamajam notikumam.
Dim NextTick Kā datums
Sub UpdateClock()
Atjaunina šūnu A1 ar pašreizējo laiku
ThisWorkbook.Sheets(1).Range(“A1”) = laiks
Iestatiet nākamo notikumu pēc piecām sekundēm no šī brīža
NextTick = Tagad + TimeValue ("00:00:05")
Application.OnTime NextTick, “UpdateClock”
Beigu apakš
Sub StopClock()
Atceļ OnTime notikumu (aptur pulksteni)
Kļūdas gadījumā atsākt nākamo
Application.OnTime NextTick, “UpdateClock”, , False
Beigu apakš
Notikums OnTime saglabājas pat pēc darbgrāmatas aizvēršanas. Citiem vārdiem sakot, ja aizverat darbgrāmatu, nepalaižot StopClock procedūru, darbgrāmata atkal tiks atvērta pēc piecām sekundēm (pieņemot, ka programma Excel joprojām darbojas). Lai to novērstu, izmantojiet Workbook_BeforeClose notikuma procedūru, kas satur šādu paziņojumu:
Zvaniet uz StopClock
OnTime metodei ir divi papildu argumenti. Ja plānojat izmantot šo metodi, pilnu informāciju skatiet palīdzības sistēmā.
Ja vēlaties redzēt diezgan sarežģītu lietojumprogrammu, pārbaudiet šo analogā pulksteņa lietojumprogrammu. Pulksteņa ciparnīca faktiski ir diagramma, un diagramma tiek atjaunināta katru sekundi, lai parādītu diennakts laiku. Bezjēdzīgi, bet jautri.
Analogā pulksteņa lietojumprogramma.
Taustiņu nospiešanas pasākumi
Kamēr strādājat, programma Excel pastāvīgi uzrauga jūsu rakstīto. Šī iemesla dēļ varat iestatīt tā, lai taustiņsitiens vai taustiņu kombinācija izpildītu procedūru.
Tālāk ir sniegts piemērs, kurā tiek atkārtoti piešķirtas PgDn un PgUp atslēgas.
Apakšiestatīšana_OnKey()
Application.OnKey “{PgDn}”, “PgDn_Sub”
Application.OnKey “{PgUp}”, “PgUp_Sub”
Beigu apakš
Sub PgDn_Sub()
Kļūdas gadījumā atsākt nākamo
ActiveCell.Offset(1, 0).Aktivizēt
Beigu apakš
Sub PgUp_Sub()
Kļūdas gadījumā atsākt nākamo
ActiveCell.Offset(-1, 0).Aktivizēt
Beigu apakš
Pēc OnKey notikumu iestatīšanas, izpildot procedūru Setup_OnKey, nospiežot PgDn, jūs tiekat pārvietots par vienu rindu uz leju. Nospiežot PgUp, jūs tiekat pārvietots par vienu rindu uz augšu.
Ņemiet vērā, ka atslēgu kodi ir ievietoti iekavās, nevis iekavās. Pilnu tastatūras kodu sarakstu skatiet palīdzības sistēmā. Meklēt OnKey.
Šajā piemērā funkcija On Error Resume Next tiek izmantota, lai ignorētu visas ģenerētās kļūdas. Piemēram, ja aktīvā šūna atrodas pirmajā rindā, mēģinot pārvietoties par vienu rindu uz augšu, rodas kļūda, kuru var droši ignorēt. Un, ja diagrammas lapa ir aktīva, aktīvas šūnas nav.
Izpildot šādu rutīnu, jūs atceļat OnKey notikumus:
Sub Cancel_OnKey()
Application.OnKey “{PgDn}”
Application.OnKey “{PgUp}”
Beigu apakš
Izmantojot tukšu virkni kā otro argumentu OnKey metodei, OnKey notikums netiek atcelts. Drīzāk tas liek Excel vienkārši ignorēt taustiņu nospiešanu. Piemēram, šis paziņojums liek programmai Excel ignorēt Alt+F4. Procentu zīme apzīmē taustiņu Alt:
Application.OnKey “%{F4}”, ““
Lai gan varat izmantot OnKey metodi, lai piešķirtu īsinājumtaustiņu makro izpildei, šim uzdevumam ir jāizmanto dialoglodziņš Makro opcijas.
Ja aizverat darbgrāmatu, kurā ir kods, un atstājat programmu Excel atvērtu, OnKey metode netiks atiestatīta. Tā rezultātā, nospiežot īsinājumtaustiņu, programma Excel automātiski atvērs failu ar makro. Lai tas nenotiktu, iekļaujiet kodu savā Workbook_BeforeClose notikuma kodā, lai atiestatītu OnKey notikumu.