Er du nysgerrig efter, hvordan man skriver en event-handler procedure i VBA? VBE hjælper dig, når du er klar til at skrive en hændelseshåndteringsprocedure; den viser en liste over alle hændelser for det valgte objekt.
Øverst i hvert kodevindue finder du to rullelister:
Som standard viser rullelisten Objekt i kodevinduet Generelt.
Hvis du skriver en hændelseshandler for ThisWorkbook-objektet, skal du klikke på ThisWorkbook i projektvinduet og derefter vælge Workbook fra rullemenuen Objekt (det er det eneste andet valg).
Hvis du skriver en hændelseshandler for et ark-objekt, skal du klikke på det specifikke ark i projektvinduet og derefter vælge regneark fra rullelisten Objekt (igen, det eneste andet valg).
Når du har foretaget dit valg fra rullelisten Objekt, kan du vælge hændelsen fra rullelisten Procedure. Her er nogle af valgene for en projektmappe-relateret begivenhed.
Valg af en hændelse i kodevinduet for ThisWorkbook-objektet.
Når du vælger en hændelse fra listen, begynder VBE automatisk at oprette en hændelseshåndteringsprocedure for dig. Dette er en meget nyttig funktion, fordi den fortæller dig præcis, hvad de rigtige argumenter er.
Her er en lille finurlighed. Når du først vælger Workbook fra objektlisten, antager VBE altid, at du vil oprette en hændelseshåndteringsprocedure for den åbne hændelse og opretter den for dig. Hvis du rent faktisk opretter en Workbook_Open-procedure, er det fint. Men hvis du opretter en anden hændelsesprocedure, skal du slette den tomme Workbook_Open Sub, der blev oprettet.
VBE's hjælp går dog kun så vidt. Det skriver Sub-sætningen og End Sub-sætningen. At skrive VBA-koden, der går mellem disse to udsagn, er dit job.
Du behøver egentlig ikke bruge disse to rullelister, men det gør dit arbejde lettere, fordi navnet på hændelseshåndteringsproceduren er kritisk vigtigt. Hvis du ikke forstår navnet helt rigtigt, virker proceduren ikke. Nogle hændelseshåndteringsprocedurer bruger også et eller flere argumenter i undersætningen. Der er ingen måde, du kan huske, hvad disse argumenter er. For eksempel, hvis du vælger SheetActivate fra hændelseslisten for et projektmappeobjekt, skriver VBE følgende undersætning:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
I dette tilfælde er Sh argumentet videregivet til proceduren og er en variabel, der repræsenterer arket i den aktiverede projektmappe.