Hur man kör ett makro i Excel

Även om det inte är svårt att köra ett makro i Excel, finns det många sätt att köra dem. Vissa sätt är avsedda att göra det enklare att använda makron, medan andra sätt kan ändra hur en användare interagerar med din arbetsbok helt. I den här artikeln kommer vi att täcka några uppenbara sätt att köra makron som Macros List och Button -kontroller, och några mer obskyra sätt som VB Editor och Events.

Först: Se till att makron är aktiverade

Excels säkerhetsfunktioner inaktiverar makron som standard. När en makroaktiverad arbetsbok öppnas uppmanas användarna vanligtvis om de vill aktivera makron.

Om du inte kan köra makron, försök följa dessa instruktioner:

  • Spara arbetsboken
  • Stäng arbetsboken och öppna den igen
  • När arbetsboken laddas ser du en Säkerhetsvarning prompt (bilden nedan). Klick Aktivera innehåll.

Kör ett makro från makrolistan

En lista över makron kan nås från fliken Visa. För att se listan:

  • Välj Se flik
  • Klicka på knappen märkt Makron för att få fram makrolistan

  • Välj det makro du vill köra i listan och klicka sedan på Springa knapp

Du kan också visa makrolistan när som helst genom att trycka på ALT+F8.

Kör ett makro med en kortkommando

Du kan tilldela en kortkommando till ett makro som du använder ofta, i form av CTRL+eller CTRL+SKIFT+. Att göra detta:

  • Ta fram makrolistan (Se > Makron, eller ALT+F8)
  • Välj det makro du vill använda en genväg till
  • Klick Alternativ… att visa Makroalternativ underdialogruta

  • I textrutan under Snabbtangent, skriv en enda bokstav och klicka sedan på OK. Om du håller ned SKIFT -tangenten medan du skriver bokstaven, kommer etiketten bredvid rutan att visa SKIFT som en del av genvägen

NOTERA: det rekommenderas starkt att du använder SKIFT när du skapar en genvägstangent! Excel använder CTRL+ genvägar för sig själv, t.ex. CTRL+C för att kopiera, eller CTRL+V för att spara. Om du skapar en makrogenväg med dessa eller andra Excel-genvägar skriver du över Excel-genvägen tills du tilldelar makrogenvägen igen.

Kör ett makro från VB Editor

Makron kan också köras från VB Editor. Med VB Editor kan du granska ett makrokod och göra eventuella ändringar innan du kör den.

Så här kör du ett makro i VB Editor:

  • Öppna VB Editor (fliken Utvecklare> Visual Basic eller ALT+F11)

  • I Projekt dubbelklicka på modulen som innehåller det makro du vill testa
  • I modulens kodfönster, placera markören var som helst på makrokoden mellan "Sub" och "End Sub"
  • Klicka på Springa på verktygsfältet, eller tryck på tangentbordsgenväg F5

Kör ett makro med en knapp eller form

Det är ofta användbart att ha en kontroll på kalkylbladet som en användare kan klicka för att köra ett makro, till exempel en knappkontroll eller en form. Detta är mycket snabbare för slutanvändare än att öppna listor över makron eller gräva igenom makrokod i VB Editor.

Information om hur du skapar en klickbar knapp eller form hittar du här: Lägg till en knapp och tilldela ett makro i Excel.

Kör ett makro automatiskt med händelser i VBA

Det är möjligt att göra en makrokörning när något händer i Excel - till exempel när en arbetsbok öppnas eller när ett cellvärde ändras. Dessa kallas evenemang, och du kan skriva VBA -kod för att de ska ringa makron eller utföra andra operationer.

För att skriva kod för en händelse måste du använda VB Editor. Till exempel för att visa händelser för arbetsboken:

  • Öppna VB Editor (ALT+F11)
  • Dubbelklicka på Denna arbetsbok objekt i VB Editor Projektfönster
  • Välj "Workbook" från rullgardinsmenyn längst upp till vänster i kodfönstret
  • Klicka på rullgardinsmenyn till höger för att se en lista med händelser

Följande är ett litet men användbart exempel på Excel -händelser som du kan köra makron från.

Workbook_Open ()

Händelsen Workbook_Open () aktiveras när en arbetsbok öppnas. Om du får säkerhetsvarningen efter att du har öppnat en arbetsbok, aktiveras den här händelsen efter att du har klickat på "Aktivera innehåll".

12345 Private Sub Workbook_Open ()MsgBox "Arbetsbok öppnad!"Avsluta Sub

Workbook_BeforeClose (Avbryt som booleskt)

Workbook_BeforeClose () aktiveras när användaren försöker stänga arbetsboken. Det händer innan några kontroller görs för att se om arbetsboken behöver sparas.

De Avbryt parameter kan ställas in på True för att stoppa arbetsboken från att stängas.

123456789 Private Sub Workbook_BeforeClose (Avbryt som booleskt)Om MsgBox ("Är du säker?", VbYesNo + vbQuestion, "Close") = vbNo DåAvbryt = SantAvsluta omAvsluta Sub

Worksheet_Change (ByVal Target As Range)

Worksheet_Change () aktiveras när cellens värde ändras - oavsett om det ändras av ett makro, av en kopierings-/klistraoperation eller av en extern länk. Det avfyras dock inte när ett värde räknas om via en formel.

De Mål parameter representerar cellerna vars värde har ändrats.

Om du ändrar värdet på andra celler i den här händelsen kommer händelsen att starta igen. Detta kan möjligen orsaka en oändlig slinga. Om du behöver ändra cellvärden utan att utlösa den här händelsen, överväg att ställa in Application.EnableEvents till Falsk först och ställ sedan tillbaka det till Sann i slutet av händelseförfarandet.

123456789 Private Sub Worksheet_Change (ByVal Target As Range)MsgBox "Celler ändrade:" & Target.AddressApplication.EnableEvents = FalsktOmråde ("A2"). Värde = intervall ("A2"). Värde + Target.Cells.CountApplication.EnableEvents = TrueAvsluta Sub

Worksheet_SelectionChange (ByVal Target As Range)

Den här händelsen utlöses när olika celler väljs ut med inriktningsretikeln. Målparametern representerar de nya celler som har valts ut.

Du kan också utlösa denna händelse med kod, dvs "Område (" A1 "). Välj". Som med Worksheet_Change (), bör du vara försiktig med att välja andra celler inuti denna händelse, eftersom du kan orsaka en oändlig loop. Använd Application.EnableEvents.

123456789 Private Sub Worksheet_SelectionChange (ByVal Target As Range)Om Target.Address = "$ A $ 1" DåMsgBox "Markör i utgångsläge."Avsluta omAvsluta Sub

Stoppa ett körande makro

Ett igång makro kan avbrytas genom att trycka på ESC eller CTRL+BREAK. Som standard visar ett avbrutet makro följande dialogruta:

Klicka Slutet kommer att stoppa makrot, medan Fortsätta kommer att återuppta det. Klicka Felsöka öppnar makrot i VB Editor och fokuserar kodraden som körningen pausades på. (Inne i VB Editor kan du stoppa eller återuppta makrot med hjälp av Kör eller Avslut -knapparna i verktygsfältet.)

Application.EnableCancelKey

Du kan inaktivera möjligheten att stoppa ett makro med ESC eller CTRL+BREAK genom att ställa in Application.EnableCancelKey fast egendom. Den här egenskapen har tre möjliga värden:

  • xlAvbrott - detta är standardvärdet, vilket gör att Excel visar dialogrutan ovan
  • xlDisabled - tar bort möjligheten att stoppa ett igång makro
  • xlErrorHandler - när ett avbrottsförsök görs kastas ett fel som kan hanteras i kod

När koden körs, återställer Excel alltid värdet på Application.EnableCancelKey tillbaka till xlAvbrott.

En bra anledning att använda den här egenskapen är säkerhet. Till exempel, om du hade ett makro som tillfälligt oskyddade delar av din arbetsbok, kan en användare eventuellt stoppa makrot direkt efter avskyddet och få tillgång till innehåll som du inte hade för avsikt att ha. Genom att ställa in Application.EnableCancelKey kan du helt inaktivera deras förmåga att göra detta, eller hantera deras avbrott graciöst med en felhanterare som skyddar arbetsboken igen.

1234567891011 Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Onskydda "MyPassword"NewData.Copy TargetTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptAvsluta Sub

Tvinga fram Excel med Windows Aktivitetshanterare

Om makrot har "hängt" eller Excel har blivit för upptagen för att erkänna ett avbrottsförsök kan du behöva tvinga till att stänga Excel själv med Windows aktivitetshanterare. (OBS! Om du gör detta kan du förlora allt osparat arbete och du måste förlita dig på en automatisk återställningsversion av din arbetsbok.)

  • Öppna Aktivitetshanteraren direkt med CTRL+SKIFT+ESC
  • Välj "Processer”Fliken
  • Expandera objektet "Microsoft Excel" för att visa alla arbetsböcker
  • Välj den arbetsbok du vill stänga och klicka sedan på Avsluta uppgiften i det nedre högra hörnet

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave