Það eru tvenns konar atburðir sem þú getur notað í VBA forritun fyrir Excel 2016 sem eru ekki tengdir hlutum: tími og ýtt á takka. Vegna þess að tími og takkapressanir eru ekki tengdar tilteknum hlut eins og vinnubók eða vinnublaði, forritarðu þessa atburði í venjulegri VBA einingu.
OnTime viðburðurinn
OnTime atburðurinn á sér stað þegar ákveðinn tími dags á sér stað. Eftirfarandi dæmi sýnir hvernig á að fá Excel til að framkvæma málsmeðferð þegar 3 pm atburðurinn á sér stað. Í þessu tilviki segir vélmenni rödd þér að vakna, ásamt skilaboðakassi:
Sub SetAlarm()
Application.OnTime 0.625, „DisplayAlarm“
End Sub
Sub DisplayAlarm()
Application.Speech.Speak („Hæ, vaknaðu“)
MsgBox "Það er kominn tími á síðdegisfríið þitt!"
End Sub
Í þessu dæmi er OnTime aðferð forritshlutarins notuð. Þessi aðferð tekur tvær röksemdir: tímann (0.625 eða 15:00) og nafnið á undirferlinu til að framkvæma þegar tímaatburðurinn á sér stað (DisplayAlarm).
Þessi aðferð er mjög gagnleg ef þú hefur tilhneigingu til að vera svo upptekin af vinnu þinni að þú gleymir fundum og stefnumótum. Stilltu bara OnTime viðburð til að minna þig á.
Flestir eiga erfitt með að hugsa um tíma út frá Excel númerakerfinu. Þess vegna gætirðu viljað nota VBA TimeValue aðgerðina til að tákna tímann. TimeValue breytir streng sem lítur út eins og tíma í gildi sem Excel ræður við. Eftirfarandi yfirlýsing sýnir auðveldari leið til að forrita viðburð fyrir klukkan 15:00:
Application.OnTime TimeValue(“3:00:00 pm”), „DisplayAlarm“
Ef þú vilt skipuleggja viðburð miðað við núverandi tíma (til dæmis eftir 20 mínútur), geturðu notað yfirlýsingu eins og þessa:
Application.OnTime Now + TimeValue(“00:20:00”), „DisplayAlarm“
Þú getur líka notað OnTime aðferðina til að keyra VBA aðferð á tilteknum degi. Þú verður að ganga úr skugga um að tölvan þín haldi áfram að keyra og að vinnubókin með ferlinu sé haldið opinni. Eftirfarandi yfirlýsing keyrir DisplayAlarm málsmeðferðina klukkan 17:00 þann 31. desember 2016:
Application.OnTime DateValue(“12/31/2016 5:00 pm”), „Display Alarm“
Þessi tiltekna kóðalína gæti komið sér vel til að vara þig við því að þú þurfir að fara heim og búa þig undir gamlárshátíðina.
Hér er annað dæmi sem notar OnTime atburðinn. Með því að framkvæma UpdateClock verklagsreglurnar skrifar tíminn í reit A1 og forritar einnig annan atburð fimm sekúndum síðar. Þessi atburður endurræsir UpdateClock málsmeðferðina. Nettóáhrifin eru að klefi A1 er uppfærður með núverandi tíma á fimm sekúndna fresti. Til að stöðva atburðina skaltu framkvæma StopClock málsmeðferðina (sem hættir við atburðinn). Athugaðu að NextTick er breyta á mátstigi sem geymir tímann fyrir næsta atburð.
Dimma NextTick As Date
Sub UpdateClock()
' Uppfærir reit A1 með núverandi tíma
ThisWorkbook.Sheets(1).Range(“A1”) = Tími
' Settu upp næsta viðburð eftir fimm sekúndur
NextTick = Now + TimeValue(“00:00:05”)
Application.OnTime NextTick, "UpdateClock"
End Sub
Sub StopClock()
' Hættir við OnTime atburði (stöðvar klukkuna)
Á Villa Resume Next
Application.OnTime NextTick, “UpdateClock”, , False
End Sub
OnTime atburðurinn heldur áfram jafnvel eftir að vinnubókinni er lokað. Með öðrum orðum, ef þú lokar vinnubókinni án þess að keyra StopClock ferli, mun vinnubókin opnast aftur eftir fimm sekúndur (að því gefnu að Excel sé enn í gangi). Til að koma í veg fyrir þetta skaltu nota Workbook_BeforeClose atburðarferli sem inniheldur eftirfarandi yfirlýsingu:
Hringdu í StopClock
OnTime aðferðin hefur tvö viðbótarrök. Ef þú ætlar að nota þessa aðferð ættir þú að vísa til hjálparkerfisins til að fá nákvæmar upplýsingar.
Ef þú vilt sjá frekar flókið forrit skaltu skoða þetta hliðræna klukkuforrit. Klukkuskífan er í raun graf og taflan er uppfærð á sekúndu hverri til að sýna tíma dags. Ónýtt, en skemmtilegt.

Analog klukka forrit.
Keypress viðburðir
Á meðan þú vinnur fylgist Excel stöðugt með því sem þú skrifar. Vegna þessa geturðu sett hlutina upp þannig að ásláttur eða takkasamsetning framkvæmi aðferð.
Hér er dæmi sem endurúthlutar PgDn og PgUp lyklunum:
Sub Setup_OnKey()
Application.OnKey „{PgDn}“, „PgDn_Sub“
Application.OnKey „{PgUp}“, „PgUp_Sub“
End Sub
Undir PgDn_Sub()
Á Villa Resume Next
ActiveCell.Offset(1, 0). Virkja
End Sub
Undir PgUp_Sub()
Á Villa Resume Next
ActiveCell.Offset(-1, 0). Virkja
End Sub
Eftir að hafa sett upp OnKey atburðina með því að framkvæma Setup_OnKey málsmeðferðina, með því að ýta á PgDn færist þú niður eina röð. Með því að ýta á PgUp færist þú upp um eina röð.
Taktu eftir að lykilkóðar eru lokaðir innan sviga, ekki innan sviga. Til að fá heildarlista yfir lyklaborðskóða, hafðu samband við hjálparkerfið. Leita að OnKey.
Í þessu dæmi er On Error Resume Next notað til að hunsa allar villur sem myndast. Til dæmis, ef virki hólfið er í fyrstu röðinni veldur það villu sem óhætt er að hunsa þegar reynt er að færa eina röð upp. Og ef kortablað er virkt, þá er enginn virkur reit.
Með því að framkvæma eftirfarandi rútínu hættir þú við OnKey atburðina:
Undir Cancel_OnKey()
Application.OnKey „{PgDn}“
Application.OnKey „{PgUp}“
End Sub
Að nota tóman streng sem önnur rök fyrir OnKey aðferðinni dregur ekki úr OnKey atburðinum. Frekar veldur það því að Excel hunsar einfaldlega ásláttinn. Til dæmis segir eftirfarandi setning Excel að hunsa Alt+F4. Prósentatáknið táknar Alt takkann:
Application.OnKey „%{F4}“, „“
Þó að þú getir notað OnKey aðferðina til að úthluta flýtilykla til að framkvæma fjölvi, ættir þú að nota Macro Options valmyndina fyrir þetta verkefni.
Ef þú lokar vinnubókinni sem inniheldur kóðann og skilur Excel eftir opið, verður OnKey aðferðin ekki endurstillt. Þar af leiðandi mun það að ýta á flýtivísinn valda því að Excel opnar sjálfkrafa skrána með fjölvi. Til að koma í veg fyrir að þetta gerist ættirðu að setja kóða inn í Workbook_BeforeClose atburðarkóðann þinn til að endurstilla OnKey atburðinn.