Applies ToAccess för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

En åtgärd, till exempel att flytta från en kontroll på ett objekt till en annan kontroll, kan utlösa flera olika händelser som inträffar i en viss följd. Att veta när händelser inträffar, och i vilken ordning, är viktigt eftersom det kan påverka hur och när dina makron eller händelseprocedurer körs. Om det till exempel finns två händelseprocedurer som ska köras i en viss ordning måste kontrollera att händelserna de är kopplade till inträffar i samma ordning.

I den här artikeln

Händelseordningen för kontroller i ett formulär

Händelser för kontroller i ett formulär inträffar när du flyttar fokus till en kontroll samt när du ändrar och uppdatera data i en kontroll.

Obs!: Microsoft Office Access visar händelsenamn på ett annat sätt i Visual Basic Editor än på egenskapssidan och i Makroverktyget. Händelsen On Got Focus i formulärets egenskapssida och i Makroverktyget kallas GotFocus i Visual Basic Editor. I exemplen i den här artikeln anges händelsers namn på samma format som i Visual Basic for Applications (VBA).

Flytta fokus till en kontroll

När du flyttar fokus till en kontroll i ett formulär (till exempel genom att öppna ett formulär som innehåller en eller flera aktiva kontroller, eller genom att flytta fokus till en annan kontroll på samma formulär) inträffar händelserna Enter och GotFocus i följande ordning:

Ange pil GotFocus

När du öppnar ett formulär inträffar händelserna Enter och GotFocus efter händelserna som är kopplade till att formuläret öppnas (exempelvis Open, Activate och Current) enligt följande:

Open (formulär) pilActivate (formulär) pilCurrent (formulär) pilRetur (kontroll) pilGotFocus (kontroll)

När fokus lämnar en kontroll i ett formulär (till exempel när du stänger ett formulär som innehåller en eller flera aktiva kontroller, eller genom att flytta fokus till en annan kontroll på samma formulär) inträffar händelserna Exit och LostFocus i följande ordning:

Avsluta pil LostFocus

När du stänger ett formulär inträffar händelserna Exit och LostFocus före händelser som inträffar när formuläret stängs (som Unload, Deactivate och Close) enligt följande:

Exit (kontroll) pilLostFocus (kontroll) pilUnload (formulär) pilDeactivate (formulär) pilClose (formulär)

Ändra och uppdatera data i en kontroll

När du anger eller ändrar data i en kontroll i ett formulär och flyttar fokus till en annan kontroll inträffar händelserna BeforeUpdate och AfterUpdate:

BeforeUpdate pil Afte rUpdate

Händelserna Exit och LostFocus för en kontroll vars värde ändras inträffar efter händelserna BeforeUpdate och AfterUpdate:

BeforeUpdate pil AfterUpdate pil Exit pil LostFocus

När du ändrar texten i en textruta eller i textrutan som hör till en kombinationsruta inträffat händelsen Change. Händelsen inträffar när innehållet i kontrollen ändras, men innan fokus flyttas till en annan kontroll eller post (och därför före händelserna BeforeUpdate och AfterUpdate). Följande sekvens av händelser inträffar för varje tangent du trycker ner när du skriver i en textruta eller i textrutan som hör till en kombinationsruta:

KeyDown pil KeyPress pil Dirty pil Change pil KeyUp

Händelsen NotInList inträffar när du anger ett värde i en kombinationsruta som inte finns i kombinationsrutans lista och sedan försöker flytta fokus till en annan kontroll eller post. Händelsen NotInList inträffar efter tangentbordshändelserna och händelsen Change för kombinationsrutan, men före händelser för andra kontroller i formuläret. Om egenskapen LimitToList för kombinationsrutan är satt till Yes inträffar händelsen Error för formuläret omedelbart efter händelsen NotInList:

KeyDown pil KeyPress pil Dirty pil Change pil KeyUp pil NotInList 0 Error

Överst på sidan

Händelseordningen för poster i ett formulär

Händelser inträffar för poster i formulär när du flyttar fokus till en annan post, skapar en ny post, uppdaterar data i en post eller tar bort en eller flera befintliga poster.

Flytta fokus till poster och uppdatera data i poster

När du flyttar fokus till en befintlig post i ett formulär, anger eller ändrar data i posten och sedan flyttar fokus till en annan post inträffar följande händelser för formuläret:

Current (formulär) pilBeforeUpdate (formulär) pilAfterUpdate (formulär) pilCurrent (formulär)

När du lämnar posten vars data du ändrat, men innan fokus flyttats till nästa post, inträffar händelserna Exit och LostFocus för den kontroll som hade fokus. Dessa händelser inträffar efter formulärhändelserna BeforeUpdate och AfterUpdate enligt nedan:

BeforeUpdate (formulär) pilAfterUpdate (formulär) pilExit (kontroll) pilLostFocus (kontroll) pilCurrent (formulär)

När du flyttar fokus mellan kontroller i ett formulär inträffar händelser för alla kontroller. Exempelvis inträffar följande händelser när du gör följande:

  • Öppnar ett formulär och ändrar data i en kontroll:

    Aktuellt (formulär) pilRetur (kontroll) pilGotFocus (kontroll) pilBeforeUpdate (kontroll) pilAfterUpdate (kontroll)

  • Flyttar fokus till en annan kontroll:

    Avsluta (kontroll1) pilLostFocus (kontroll1) pilRetur (kontroll2) pilGotFocus (kontroll2)

  • Flyttar fokus till en annan post:

    BeforeUpdate (formulär) pilAfterUpdate (formulär) pilExit (kontroll2) pilLostFocus (kontroll2) pilCurrent (formulär)

Tar bort poster

När du tar bort en post inträffar följande händelser för formuläret, och Microsoft Office Access visas en dialogruta där du ombeds att bekräfta borttagningen:

Ta bort pil BeforeDelConfirm pil AfterDelConfirm

Om du avbryter händelsen Delete inträffar inte händelserna BeforeDelConfirm och AfterDelConfirm, och dialogrutan visas inte.

Skapar en ny post

När du flyttar du fokus till en ny (tom) post i ett formulär och sedan skapar en ny post genom att skriva in data i en kontroll, inträffar följande händelser:

Current (formulär) pilEnter (kontroll) pilGotFocus (kontroll) pilBeforeInsert (formulär) pilAfterInsert (formulär)

Händelsen BeforeInsert (formulär) utlöses så fort du börjar skriva i kontrollen. Händelsen AfterInsert (formulär) utlöses när du lämnar posten.

Händelserna BeforeUpdate och AfterUpdate för kontrollerna i formuläret och för den nya posten inträffar efter händelsen BeforeInsert men före händelsen AfterInsert.

Överst på sidan

Händelseordningen för formulär och underformulär

Händelser inträffar för formulär när du öppnar och stänger ett formulär, flyttar mellan formulär eller arbetar med data i ett formulär eller underformulär.

Öppna och stänga ett formulär

När du öppnar ett formulär inträffar följande formulärhändelser:

Öppna pil Läs in pil Ändra storlek pil Aktivera pil aktuell

Om det inte finns några aktiva kontroller i formuläret inträffar formulärhändelsen GotFocus efter Activate men före Current.

När du stänger ett formulär inträffar följande formulärhändelser:

Inaktivera pil Inaktivera pil Stäng

Om det inte finns några aktiva kontroller i formuläret inträffar formulärhändelsen LostFocus efter Unload men före Deactivate.

Flytta mellan formulär

När du växlar mellan två öppna formulär inträffar händelsen Deactivate för det första formuläret och Activate för det andra formuläret:

Deactivate (formulär1) pilActivate (formulär2)

Formulärhändelsen Deactivate inträffar även när du växlar från formuläret till en annan objektflik i Access. Händelsen Deactivate inträffar inte när du växlar till en dialogruta, till ett formulär vars egenskap PopUp är satt till Yes eller till ett fönster i ett annat program.

Obs!:  Händelsen Open inträffar inte om du flyttar fokus till ett formulär som redan är öppet, även om du har flyttat fokus till formuläret genom åtgärdenOpenForm.

Arbeta med data i ett formulär

Formulär- och kontrollhändelser inträffar när du flyttar mellan poster i formuläret och ändra data. När du till exempel öppnar ett formulär inträffar följande formulärhändelser:

Open (formulär) pilLoad (formulär) pilResize (formulär) pilActivate (formulär) pilCurrent (formulär) pilEnter (kontroll)0 GotFocus (kontroll)

Samma sak gäller när du stänger ett formulär, då följande händelser inträffar:

Exit (kontroll) pilLostFocus (kontroll) pilUnload (formulär) pilDeactivate (formulär) pilClose (formulär)

Om du har ändrat data i en kontroll inträffar händelserna BeforeUpdate och AfterUpdate för både kontrollen och formuläret före händelsen Exit för kontrollen.

Arbeta med underformulär

När du öppnar ett formulär som innehåller ett underformulär läses underformuläret och dess poster in före huvudformuläret. Det innebär att händelser för underformuläret och dess kontroller (exempelvis Open, Current, Enter och GotFocus) inträffar för händelser för formuläret. Händelsen Activate inträffar däremot inte för underformulär. När huvudformuläret öppnas inträffar händelsen Activate bara för huvudformuläret.

När du stänger ett formulär som innehåller ett underformulär stängs underformuläret och dess poster först sedan huvudformuläret stängts. Händelsen Deactivate inträffar inte för underformulär. När huvudformuläret stängs inträffar händelsen Deactivate därför bara för huvudformuläret. Händelser för kontroller, formulär och underformulär inträffar i följande ordning:

  1. Händelser för kontroller i underformuläret (till exempel Exit och LostFocus)

  2. Händelser för formulärets kontroller (inklusive kontroller i underformuläret)

  3. Händelser för formuläret (till exempel Deactivate och Close)

  4. Händelser för underformuläret

Obs!: Eftersom händelserna för ett underformulär inträffar sedan huvudformuläret stängs kommer vissa händelser, t ex en begäran från underformuläret att stängningen av huvudformuläret ska avbrytas, inte att inträffa. Om du vill kunna avbryta stängningen av huvudformuläret måste kontrollen ske från en händelsen tillhörande huvudformuläret.

Överst på sidan

Händelseordningen för tangenttryckningar och musklick

Tangentbordshändelser för formulär och kontroller inträffar när du trycker på tangenterna eller skickar tangenttryckningar medan formuläret eller kontrollen har fokus. Mushändelser för formulär, formuläravsnitt och kontroller inträffar när du klickar på musknappen medan muspekaren befinner sig över ett formulär, formuläravsnitt eller en kontroll. Mushändelser inträffar även när du flyttar muspekaren över ett formulär, formuläravsnitt eller en kontroll.

Tangentbordshändelser

Om du trycker ner och släpper upp en tangent när en kontroll i ett formulär har fokus (eller använder åtgärden SendKeys eller sats för att skicka ett tangentnedtryckning), inträffar händelser i följande ordning:

KeyDown pil KeyPress pil KeyUp

När du trycker ner och släpper upp en tangent eller skickar en tangenttryckning i ANSI-teckenuppsättning, inträffar händelserna KeyDown, KeyPress och KeyUp. Om du håller en ANSI-tangent nedtryckt upprepas händelserna KeyDown och KeyPress alternerande (KeyDown, KeyPress, KeyDown, KeyPress och så vidare) tills du släpper upp tangenten, då händelsen KeyUp inträffar.

Om du håller en icke-ANSI-tangent nedtryckt upprepas händelserna KeyDown och KeyUp. Om du håller en icke-ANSI-tangent nedtryckt upprepas händelsen KeyDown tills du släpper upp tangenten, därefter inträffar händelsen KeyUp.

Om en tangenttryckning utlöser en annan händelse för en kontroll inträffar den efter KeyPress men före KeyUp. Om en tangenttryckning ändrar texten i en textruta inträffar händelsen Change, och händelserna inträffar i följande ordning:

KeyDown pil KeyPress pil Change pil KeyUp

Om en tangenttryckning flyttar fokus från en kontroll till en annan inträffar först händelsen KeyDown för den första kontrollen medan KeyPress och KeyUp inträffar för den andra kontrollen. Om du till exempel ändrar data i en kontroll och sedan trycker på TAB-tangenten för att gå till nästa kontroll, inträffar följande händelser:

  • Första kontrollen:

    KeyDown pil BeforeUpdate pil AfterUpdate pil Exit pil LostFocus

  • Andra kontrollen:

    Ange pil GotFocus pil KeyPress pil KeyUp

Mushändelser

När du trycker ner och släpper upp musknappen då muspekaren befinner sig ovanför en kontroll eller ett formulär inträffar följande händelser för kontrollen:

MouseDown pil MouseUp pil Click

Om en kontroll har fokus när du klickar för att flytta fokus till en annan kontroll inträffar följande händelser:

  • Första kontrollen:

    Avsluta pil LostFocus

  • Andra kontrollen:

    Ange pil GotFocus pil MouseDown pil MouseUp pil Click

Om du går till en annan post och sedan klickar på en kontroll inträffar händelsen Current för formuläret före händelsen Enter för kontrollen.

När du dubbelklickar på en kontroll inträffar både händelsen Click och DblClick. När du dubbelklickar på en kontroll annan än en kommandoknapp inträffar följande händelser för kontrollen:

MouseD own pil MouseUp pil Click pil DblClick pil MouseUp

När du dubbelklickar på en kommandoknapp inträffar föregående sekvens av händelser följt av ytterligare en Click-händelse.

Händelsen MouseMove för ett formulär, formuläravsnitt eller en kontroll inträffar när du rör muspekaren över formuläret, formuläravsnittet eller kontrollen. Händelsen är oberoende av andra mushändelser.

Överst på sidan

Händelseordningen för rapporter och rapportavsnitt

Händelser inträffar för rapporter och rapportavsnitt när du öppnar en rapport för att skriva ut eller förhandsgranska den, eller då du stänger rapporten.

Händelser för rapporter

När du öppnar en rapport för att förhandsgranska eller skriva ut den och därefter stänger den, eller går till en annan flik i Access, inträffar följande händelser för rapporten:

Öppna pil Aktivera pil Stäng pil Inaktivera

När du växlar mellan två öppna rapporter inträffar händelsen Deactivate för den första rapporten och Activate för den andra rapporten:

Inaktivera (rapport1) pilAktivera (rapport2)

Rapporthändelsen Deactivate inträffar även när du växlar från rapporten till en annan objektflik i Access. Händelsen Deactivate inträffar inte när du växlar till en dialogruta, till ett formulär vars egenskap PopUp är satt till Yes eller till ett fönster i ett annat program.

När du öppnar en rapport som baseras på en fråga utlöser Access händelsen Öppna för rapporten innan den underliggande frågan körs. Du kan därför ange villkor för rapporten med hjälp av ett makro eller en händelseprocedur som reagerar på händelsen Open. Makrot eller händelseproceduren skulle kunna visa en dialogruta där du kan ange kriterier för rapporten.

Händelser för rapportavsnitt

När du skriver ut eller förhandsgranskar en rapport inträffar händelserna Format och Print för rapportavsnitten efter händelserna Open och Activate men före händelserna Close eller Deactivate:

Open (rapport) pilActivate (rapport) pilFormat (rapportavsnitt) pilPrint (rapportavsnitt) pilClose (rapport) pilDeactivate (rapport)

Säkerhet    Du kan använda rapportvyn för att aktivera användarfiltrering av rapporter. Men till skillnad från förhandsgranska inträffar inte händelserna Format och Skriv ut i något avsnitt i rapportvyn. Detta gäller även VBA-funktionsresultat och användardefinierade procedurer som visas i kontroller (till exempel etikettbeskrivningar, visningsstatus, villkorsstyrd formatering, storleksändring av kontroller och så vidare) i dessa händelser. Använd därför inte kod i den här händelsen för att formatera, dölja eller skriva ut konfidentiella data, som kan komma att exponeras. Vi rekommenderar att du förfiltreringar data eller inaktiverar rapportförhandsgranskning genom att ange egenskapen AllowReportView till Nej.

Därutöver kan följande händelser inträffa under eller efter formatering, men före händelsen Print:

  • Händelsen Retreat inträffar när Access återvänder till ett tidigare avsnitt under formateringen av rapporten.

  • Händelsen NoData inträffar om inga poster visas i rapporten.

  • Händelsen Page inträffar efter formatering men före utskrift. Du kan använda denna händelse för att anpassa utseendet på den utskrivna rapporten.

Överst på sidan

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.