Inhoudsopgave:
- De OnTime-gebeurtenis
- Terwijl u werkt, controleert Excel constant wat u typt. Hierdoor kunt u zaken zo instellen dat een toetscombinatie of een toetscombinatie een procedure uitvoert.
Video: Make the World Greta Again (Full Documentary) - Time's 2019 Person of the Year 2024
Er zijn twee soorten gebeurtenissen die u kunt gebruiken bij VBA-programmering voor Excel 2016 die niet aan objecten zijn gekoppeld: tijd en toetsaanslagen. Omdat tijd en toetsaanslagen niet aan een bepaald object, zoals een werkmap of een werkblad, zijn gekoppeld, programmeert u deze gebeurtenissen in een normale VBA-module.
De OnTime-gebeurtenis
De OnTime-gebeurtenis vindt plaats wanneer een bepaald moment van de dag plaatsvindt. In het volgende voorbeeld ziet u hoe Excel ervoor kan zorgen dat een procedure wordt uitgevoerd wanneer 3 p. m. gebeurtenis treedt op. In dit geval geeft een robotstem aan dat u moet ontwaken, vergezeld van een berichtvenster:
Sub SetAlarm () Toepassing. OnTime 0. 625, "DisplayAlarm" End Sub Sub DisplayAlarm () Toepassing. Toespraak. Spreek ("Hé, word wakker") MsgBox "Het is tijd voor je middagpauze! "End Sub
In dit voorbeeld wordt de OnTime-methode van het Application-object gebruikt. Deze methode heeft twee argumenten nodig: de tijd (0. 625 of 3: 00 p. M.) En de naam van de Sub-procedure die moet worden uitgevoerd wanneer de tijdgebeurtenis plaatsvindt (DisplayAlarm).
Deze procedure is heel handig als je de neiging hebt om zo ingepakt te raken in je werk dat je vergaderingen en afspraken vergeet. Stel gewoon een OnTime-evenement in om jezelf eraan te herinneren.
De meeste mensen vinden het moeilijk om tijd te denken aan het Excel-nummeringssysteem. Daarom wilt u misschien de VBA TimeValue-functie gebruiken om de tijd weer te geven. TimeValue converteert een tekenreeks die eruit ziet als een tijd naar een waarde die Excel aankan. De volgende verklaring toont een eenvoudigere manier om een evenement voor 3 p te programmeren. m.:
Application. OnTime TimeValue ("3: 00: 00 pm"), "DisplayAlarm"
Als u een gebeurtenis wilt plannen die relatief is ten opzichte van de huidige tijd (bijvoorbeeld 20 minuten vanaf nu), kunt u een statement als dit gebruiken: < Application. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
U kunt ook de OnTime-methode gebruiken om een VBA-procedure op een bepaalde dag uit te voeren. U moet ervoor zorgen dat uw computer blijft werken en dat de werkmap met de procedure open blijft. De volgende verklaring voert de DisplayAlarm-procedure uit bij 5 p. m. op 31 december 2016:
toepassing. OnTime DateValue ("31-12-2016 17.00 uur"), "DisplayAlarm"
Deze speciale codelijn kan van pas komen om u te waarschuwen dat u naar huis moet gaan om u voor te bereiden op de nieuwjaarsfeestfeesten.
Hier is nog een voorbeeld dat de OnTime-gebeurtenis gebruikt. Het uitvoeren van de UpdateClock-procedures schrijft de tijd naar cel A1 en programmeert ook vijf seconden later een andere gebeurtenis.Met deze gebeurtenis wordt de UpdateClock-procedure opnieuw uitgevoerd. Het netto-effect is dat cel A1 elke vijf seconden wordt bijgewerkt met de huidige tijd. Om de gebeurtenissen te stoppen, voert u de StopClock-procedure uit (die de gebeurtenis annuleert). Merk op dat NextTick een variabel op moduleniveau is dat de tijd voor de volgende gebeurtenis opslaat.
Dim NextTick als datum Sub UpdateClock () 'Werkt cel A1 bij met de huidige tijd ThisWorkbook. Vellen (1). Bereik ("A1") = Tijd 'Stel de volgende gebeurtenis in vijf seconden in vanaf nu NextTick = Now + TimeValue ("00: 00: 05") Toepassing. OnTime NextTick, "UpdateClock" End Sub Sub StopClock () 'Annuleert de OnTime-gebeurtenis (stopt de klok) On Error Resume Next Application. OnTime NextTick, "UpdateClock", False End Sub
De OnTime-gebeurtenis blijft bestaan, zelfs nadat de werkmap is gesloten. Met andere woorden, als u de werkmap sluit zonder de StopClock-procedure uit te voeren, wordt de werkmap binnen vijf seconden opnieuw geopend (in de veronderstelling dat Excel nog steeds actief is). Om dit te voorkomen, gebruikt u een Workbook_BeforeClose-gebeurtenisprocedure die de volgende instructie bevat:
Call StopClock
De OnTime-methode heeft twee extra argumenten. Als u van plan bent om deze methode te gebruiken, moet u het Help-systeem raadplegen voor volledige details.
Bekijk deze analoge kloktoepassing als u een nogal gecompliceerde toepassing wilt zien. De wijzerplaat is eigenlijk een grafiek en het diagram wordt elke seconde bijgewerkt om het tijdstip van de dag weer te geven. Nutteloos, maar leuk.
Een toepassing met analoge klok.
Keypress-gebeurtenissenTerwijl u werkt, controleert Excel constant wat u typt. Hierdoor kunt u zaken zo instellen dat een toetscombinatie of een toetscombinatie een procedure uitvoert.
Hier is een voorbeeld dat de PgDn- en PgUp-toetsen opnieuw toewijst:
Sub Setup_OnKey () Toepassing. OnKey "{PgDn}", "PgDn_Sub" -toepassing. OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () On Error Resume Next ActiveCell. Offset (1, 0). Activeer End Sub Sub PgUp_Sub () On Error Resume Volgende ActiveCell. Offset (-1, 0). Activeer Eind Sub
Na het instellen van de OnKey-gebeurtenissen door de procedure Setup_OnKey uit te voeren, brengt het drukken op PgDn u een rij omlaag. Als u op PgUp drukt, gaat u een rij omhoog.
Merk op dat de sleutelcodes tussen haakjes staan, niet tussen haakjes. Raadpleeg het Help-systeem voor een volledige lijst met toetsenbordcodes. Zoeken naar
OnKey. In dit voorbeeld wordt On Error Resume Next gebruikt om eventuele fouten te negeren. Als de actieve cel zich bijvoorbeeld in de eerste rij bevindt, veroorzaakt een poging om een rij omhoog te gaan een fout die veilig kan worden genegeerd. En als een grafiekblad actief is, is er geen actieve cel.
Door de volgende routine uit te voeren, annuleert u de OnKey -gebeurtenissen:
Sub Cancel_OnKey () Toepassing. OnKey "{PgDn}" applicatie. OnKey "{PgUp}" End Sub
Het gebruik van een lege string als het tweede argument voor de OnKey-methode
niet annuleert de OnKey-gebeurtenis. Het zorgt er eerder voor dat Excel de toetsaanslag negeert. De volgende instructie geeft bijvoorbeeld aan dat Excel Alt + F4 negeert. Het procentteken vertegenwoordigt de Alt-toets: Toepassing.OnKey "% {F4}", ""
Hoewel u de OnKey-methode kunt gebruiken om een sneltoets toe te wijzen voor het uitvoeren van een macro, moet u het dialoogvenster Macro-opties voor deze taak gebruiken.
Als u de werkmap met de code sluit en Excel open laat, wordt de methode OnKey niet opnieuw ingesteld. Als gevolg hiervan wordt het bestand met de macro automatisch geopend als u op de sneltoets drukt. Om dit te voorkomen, moet u code opnemen in uw Workbook_BeforeClose-gebeurteniscode om de OnKey-gebeurtenis opnieuw in te stellen.