Indholdsfortegnelse:
- OnTime-begivenheden
- Mens du arbejder, overvåger Excel konstant, hvad du skriver. På grund af dette kan du indstille ting, så et tastetryk eller en nøglekombination udfører en procedure.
Video: How to use YouTube TV while traveling in the United States | US only 2024
Der er to typer begivenheder, du kan bruge i VBA-programmering til Excel 2016, der ikke er forbundet med objekter: tid og tastetryk. Da tid og tastetryk ikke er knyttet til en bestemt genstand, såsom en projektmappe eller et regneark, programmerer du disse begivenheder i et normalt VBA-modul.
OnTime-begivenheden
OnTime-begivenheden opstår, når en bestemt tid på dagen opstår. Følgende eksempel viser, hvordan man får Excel til at udføre en procedure, når 3 p. m. hændelsen opstår. I dette tilfælde fortæller en robot stemme dig at vågne op, ledsaget af en meddelelsesboks:
Sub SetAlarm () Application. OnTime 0. 625, "DisplayAlarm" End Sub Sub DisplayAlarm () Application. Tale. Tal ("Hej, vågn op") MsgBox "Det er tid til din eftermiddagsferie! "End Sub
I dette eksempel bruges OnTime-metoden i applikationsobjektet. Denne metode tager to argumenter: tiden (0. 625 eller 3: 00 s. M.) Og navnet på subproceduren, der skal udføres, når tidsbegivenheden opstår (DisplayAlarm).
Denne procedure er meget nyttig, hvis du har tendens til at blive så indpakket i dit arbejde, at du glemmer møder og aftaler. Bare sæt en OnTime-begivenhed for at minde dig selv.
De fleste mennesker finder det svært at tænke på tid i form af Excel nummereringssystemet. Derfor kan du bruge funktionen VBA TimeValue til at repræsentere tiden. TimeValue konverterer en streng, der ligner en tid i en værdi, som Excel kan håndtere. Følgende erklæring viser en nemmere måde at programmere en begivenhed for 3 p. m.:
Program. OnTime TimeValue ("3:00:00"), "DisplayAlarm"
Hvis du vil planlægge en begivenhed i forhold til den aktuelle tid (for eksempel 20 minutter fra nu) kan du bruge en erklæring som denne: < Application. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
Du kan også bruge OnTime-metoden til at køre en VBA-procedure på en bestemt dag. Du skal sørge for, at din computer holder kørende, og at arbejdsbogen med proceduren holdes åben. Følgende sætning kører DisplayAlarm-proceduren på 5 s. m. 31. december 2016:
Ansøgning. OnTime DateValue ("12/31/2016 5: 00 pm"), "DisplayAlarm"
Denne særlige kode linje kan komme til nytte for at advare dig om at du skal hjem og gør dig klar til nytårsaften.
Her er et andet eksempel, der bruger OnTime-arrangementet. Udførelse af UpdateClock-procedurerne skriver tiden til celle A1 og programmerer også en anden begivenhed fem sekunder senere.Denne begivenhed genopretter UpdateClock-proceduren. Nettoeffekten er, at celle A1 opdateres med den aktuelle tid hvert femte sekund. For at stoppe begivenhederne, udfør StopClock-proceduren (som annullerer arrangementet). Bemærk, at NextTick er en variabel på modulniveau, der lagrer tidspunktet for den næste begivenhed.
Dim NextTick som Date Sub UpdateClock () 'Opdaterer celle A1 med den aktuelle tid ThisWorkbook. Ark (1). Range ("A1") = Tid 'Indstil næste hændelse fem sekunder fra nu NextTick = Nu + TimeValue ("00: 00: 05") Application. OnTime NextTick, "UpdateClock" End Sub Sub StopClock () 'Annullerer OnTime-hændelsen (stopper uret) På fejl Fortsæt næste program. OnTime NextTick, "UpdateClock", False End Sub
OnTime-arrangementet fortsætter, selv efter at projektmappen er lukket. Med andre ord, hvis du lukker projektmappen uden at køre StopClock-proceduren, genoptages projektmappen om fem sekunder (forudsat at Excel stadig kører). For at forhindre dette skal du bruge en Workbook_BeforeClose hændelsesprocedure, der indeholder følgende sætning:
Opkalds StopClock
OnTime-metoden har to yderligere argumenter. Hvis du planlægger at bruge denne metode, skal du henvise til Hjælp-systemet for at få fuldstændige detaljer.
Hvis du vil se et ret kompliceret program, skal du tjekke denne analoge urapplikation. Uret ansigt er faktisk et diagram, og diagrammet opdateres hvert sekund for at vise tidspunktet på dagen. Useless, men sjovt.
En analog ur-applikation.
Keypress eventsMens du arbejder, overvåger Excel konstant, hvad du skriver. På grund af dette kan du indstille ting, så et tastetryk eller en nøglekombination udfører en procedure.
Her er et eksempel, der overfører PgDn og PgUp nøglerne:
Sub Setup_OnKey () Application. OnKey "{PgDn}", "PgDn_Sub" Application. OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () På Fejl Genoptag Næste ActiveCell. Forskydning (1, 0). Aktivér End Sub Sub PgUp_Sub () På Fejl Genoptag Næste ActiveCell. Forskydning (-1, 0). Aktiver slutdel
Når du har konfigureret OnKey-begivenhederne ved at udføre Setup_OnKey-proceduren, bevæger du PgDn dig ned en række. Ved at trykke på PgUp flyttes du op en række.
Bemærk, at nøglekoderne er vedlagt i seler, ikke i parentes. For en komplet liste over tastaturkoder henvises til hjælpesystemet. Søg efter
OnKey. I dette eksempel bruges On Error Resume Next til at ignorere eventuelle fejl, der genereres. Hvis den aktive celle er i den første række, vil forsøget med at flytte op en række forårsage en fejl, der sikkert kan ignoreres. Og hvis et diagramark er aktivt, er der ingen aktiv celle.
Ved at udføre følgende rutine annullerer du OnKey-begivenhederne:
Sub Cancel_OnKey () Applikation. OnKey "{PgDn}" ansøgning. OnKey "{PgUp}" End Sub
Afbryder OnKey-begivenheden ved at bruge en tom streng som andet argument for OnKey-metoden
ikke . Det forårsager snarere, at Excel simpelthen ignorerer tastetrykket. F.eks. Fortæller følgende sætning, at Excel ignorerer Alt + F4. Procenttegnet repræsenterer Alt-tasten: Program.OnKey "% {F4}", ""
Selvom du kan bruge OnKey-metoden til at tildele en genvejstast til udførelse af en makro, skal du bruge dialogboksen Makroindstillinger til denne opgave.
Hvis du lukker arbejdsbogen, der indeholder koden, og lad Excel være åben, vil OnKey-metoden ikke blive nulstillet. Som følge heraf vil trykke på genvejstasten få Excel til automatisk at åbne filen med makroen. For at forhindre dette sker, skal du medtage kode i din Workbook_BeforeClose-begivenhedskode for at nulstille OnKey-arrangementet.