Innholdsfortegnelse:
- OnTime-hendelsen
- Mens du arbeider, overvåker Excel hele tiden hva du skriver. På grunn av dette kan du sette opp ting slik at et tastetrykk eller en tastekombinasjon utfører en prosedyre.
Video: TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K) 2024
Det finnes to typer hendelser du kan bruke i VBA programmering for Excel 2016 som ikke er knyttet til objekter: tid og tastetrykk. Fordi tid og tastetrykk ikke er knyttet til en bestemt gjenstand, for eksempel en arbeidsbok eller et regneark, programmerer du disse hendelsene i en vanlig VBA-modul.
OnTime-hendelsen
OnTime-hendelsen oppstår når en bestemt tid på dagen oppstår. Følgende eksempel viser hvordan du får Excel til å utføre en prosedyre når 3 p. m. hendelsen oppstår. I dette tilfellet forteller en robuststemme deg å våkne opp, ledsaget av en meldingsboks:
Sub SetAlarm () Program. OnTime 0. 625, "DisplayAlarm" End Sub Sub DisplayAlarm () Program. Tale. Snakk ("Hei, våkne opp") MsgBox "Det er på tide for ettermiddagen! "End Sub
I dette eksemplet brukes OnTime-metoden i Application-objektet. Denne metoden tar to argumenter: tiden (0. 625 eller 3: 00 s. M.) Og navnet på Sub-prosedyren som skal utføres når tidsbegivenheten oppstår (DisplayAlarm).
Denne prosedyren er ganske nyttig hvis du pleier å bli så innpakket i arbeidet ditt at du glemmer møter og avtaler. Bare sett en OnTime-hendelse for å minne deg selv.
De fleste synes det er vanskelig å tenke på tid når det gjelder Excel-nummereringssystemet. Derfor kan du bruke VBA TimeValue-funksjonen til å representere tiden. TimeValue konverterer en streng som ser ut som en tid i en verdi som Excel kan håndtere. Følgende erklæring viser en enklere måte å programmere en begivenhet for 3 p. m.:
Program. OnTime TimeValue ("3:00:00"), "DisplayAlarm"
Hvis du vil planlegge en hendelse i forhold til gjeldende tid (for eksempel 20 minutter fra nå) kan du bruke en setning som denne: < applikasjon. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
Du kan også bruke OnTime-metoden til å kjøre en VBA-prosedyre på en bestemt dag. Du må sørge for at datamaskinen din fortsetter å løpe og at arbeidsboken med prosedyren holdes åpen. Følgende erklæring kjører DisplayAlarm-prosedyren på 5 s. m. 31. desember 2016:
Søknad. OnTime DateValue ("12/31/2016 5: 00 pm"), "DisplayAlarm"
Denne spesielle kodelinjen kan være nyttig for å advare deg om at du må gå hjem og gjøre deg klar for nyttårsaften.
Her er et annet eksempel som bruker OnTime-hendelsen. Gjennomføring av UpdateClock-prosedyrene skriver tiden til celle A1 og programmerer også en annen hendelse fem sekunder senere.Denne hendelsen gjenoppretter oppdateringsprosessen. Nettoeffekten er at celle A1 er oppdatert med gjeldende tid hvert femte sekund. For å stoppe hendelsene, utfør StopClock-prosedyren (som avbryter hendelsen). Legg merke til at NextTick er en variabel på modulnivå som lagrer tiden for neste hendelse.
Dim NextTick som Date Sub UpdateClock () 'Oppdaterer celle A1 med gjeldende tid ThisWorkbook. Ark (1). Range ("A1") = Time 'Sett opp neste hendelse fem sekunder fra nå NextTick = Nå + TimeValue ("00: 00: 05") Application. OnTime NextTick, "UpdateClock" Slutt Sub Sub StopClock () 'Annullerer OnTime-hendelsen (stopper klokken) På feil Fortsett neste applikasjon. OnTime NextTick, "UpdateClock", False End Sub
OnTime-arrangementet fortsetter selv etter at arbeidsboken er stengt. Med andre ord, hvis du lukker arbeidsboken uten å kjøre StopClock-prosedyren, vil arbeidsboken gjenåpne seg om fem sekunder (forutsatt at Excel fortsatt kjører). For å forhindre dette, bruk en Workbook_BeforeClose-hendelsesprosedyre som inneholder følgende setning:
Call StopClock
OnTime-metoden har to ekstra argumenter. Hvis du planlegger å bruke denne metoden, bør du se hjelpesystemet for fullstendige opplysninger.
Hvis du vil se et ganske komplisert program, sjekk ut denne analoge klokkeapplikasjonen. Klokkefaget er faktisk et diagram, og diagrammet oppdateres hvert sekund for å vise tidspunktet på dagen. Useless, men morsomt.
En analog klokke applikasjon.
Keypress hendelserMens du arbeider, overvåker Excel hele tiden hva du skriver. På grunn av dette kan du sette opp ting slik at et tastetrykk eller en tastekombinasjon utfører en prosedyre.
Her er et eksempel som tilordner PgDn og PgUp-tastene:
Sub Setup_OnKey () Applikasjon. OnKey "{PgDn}", "PgDn_Sub" -applikasjon. OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () På Feil Fortsett Neste ActiveCell. Offset (1, 0). Aktiver End Sub Sub PgUp_Sub () På Feil Fortsett Neste ActiveCell. Offset (-1, 0). Aktiver sluttdel
Etter å ha satt opp OnKey-hendelsene ved å utføre Setup_OnKey-prosedyren, trykker du på PgDn deg ned en rad. Ved å trykke på PgUp flyttes du opp en rad.
Legg merke til at nøkkelkodene er vedlagt i seler, ikke i parentes. For en komplett liste over tastaturkoder, se hjelpesystemet. Søk etter
OnKey. I dette eksemplet brukes På feil CV neste for å ignorere eventuelle feil som genereres. Hvis den aktive cellen er for eksempel i første rad, forsøker det å forsøke å bevege seg opp en rad en feil som sikkert kan ignoreres. Og hvis et kartark er aktivt, er det ingen aktiv celle.
Ved å utføre følgende rutine, avbryter du OnKey-hendelsene:
Sub Cancel_OnKey () Program. OnKey "{PgDn}" Søknad. OnKey "{PgUp}" End Sub
Avbryter OnKey-hendelsen ved å bruke en tom streng som det andre argumentet for OnKey-metoden
ikke . I stedet fører det til at Excel bare ignorerer tastetrykket. For eksempel forteller følgende setning om at Excel skal ignorere Alt + F4. Prosent-tegnet representerer Alt-tasten: Program.OnKey "% {F4}", ""
Selv om du kan bruke OnKey-metoden til å tilordne en snarvei for å utføre en makro, bør du bruke dialogboksen Makroalternativer for denne oppgaven.
Hvis du lukker arbeidsboken som inneholder koden og lar Excel åpne, vil OnKey-metoden ikke nullstilles. Som følge av dette, vil trykke på snarveisknappen føre til at Excel automatisk åpner filen med makroen. For å unngå at dette skjer, bør du inkludere kode i arbeidsboken_BeforeClose-hendelseskoden for å tilbakestille OnKey-hendelsen.