Er du nysgjerrig på hvordan du skriver en hendelseshåndteringsprosedyre i VBA? VBE hjelper deg når du er klar til å skrive en hendelseshåndteringsprosedyre; den viser en liste over alle hendelser for det valgte objektet.
Øverst i hvert kodevindu finner du to nedtrekkslister:
Som standard viser rullegardinlisten Objekt i kodevinduet Generelt.
Hvis du skriver en hendelsesbehandler for ThisWorkbook-objektet, må du klikke ThisWorkbook i prosjektvinduet og deretter velge Workbook fra Objekt-rullegardinmenyen (det er det eneste andre valget).
Hvis du skriver en hendelsesbehandler for et arkobjekt, må du klikke på det spesifikke arket i prosjektvinduet og deretter velge regneark fra rullegardinlisten Objekt (igjen, det eneste andre valget).
Etter at du har gjort valget ditt fra rullegardinlisten Objekt, kan du velge hendelsen fra rullegardinlisten Prosedyre. Her er noen av valgene for en arbeidsbokrelatert hendelse.
Velge en hendelse i kodevinduet for ThisWorkbook-objektet.
Når du velger en hendelse fra listen, begynner VBE automatisk å opprette en hendelsesbehandlingsprosedyre for deg. Dette er en veldig nyttig funksjon, fordi den forteller deg nøyaktig hva de riktige argumentene er.
Her er en liten finurlighet. Når du først velger Arbeidsbok fra objektlisten, antar VBE alltid at du vil opprette en hendelsesbehandlingsprosedyre for Open-hendelsen og oppretter den for deg. Hvis du faktisk lager en Workbook_Open-prosedyre, er det greit. Men hvis du oppretter en annen hendelsesprosedyre, må du slette den tomme Workbook_Open Sub som ble opprettet.
VBEs hjelp går imidlertid bare så langt. Den skriver Sub-setningen og End Sub-setningen. Å skrive VBA-koden som går mellom disse to utsagnene er din jobb.
Du trenger egentlig ikke å bruke disse to rullegardinlistene, men å gjøre det gjør jobben din enklere fordi navnet på hendelseshåndteringsprosedyren er kritisk viktig. Hvis du ikke forstår navnet helt riktig, vil ikke prosedyren fungere. Noen hendelsesbehandlerprosedyrer bruker også ett eller flere argumenter i undersetningen. Det er ingen måte du kan huske hva disse argumentene er. Hvis du for eksempel velger SheetActivate fra hendelseslisten for et arbeidsbokobjekt, skriver VBE følgende undersetning:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
I dette tilfellet er Sh argumentet som sendes til prosedyren og er en variabel som representerer arket i den aktiverte arbeidsboken.