Selvom det ikke er svært at køre en makro i Excel, er der mange måder at køre dem på. Nogle måder er beregnet til at gøre det lettere at bruge makroer, mens andre måder helt kan ændre den måde, en bruger interagerer med din projektmappe. I denne artikel vil vi dække nogle indlysende måder at køre makroer på, f.eks. Makrolisten og knapper, og nogle mere uklare måder som VB Editor og Events.
Først: Sørg for, at makroer er aktiveret
Excels sikkerhedsfunktioner deaktiverer som standard makroer. Når man åbner en makroaktiveret projektmappe, bliver brugerne typisk spurgt, om de vil aktivere makroer.
Hvis du ikke kan køre makroer, kan du prøve at følge disse instruktioner:
- Gem projektmappen
- Luk projektmappen, og åbn den igen
- Når projektmappen indlæses, ser du en Sikkerhedsadvarsel prompt (billedet herunder). Klik på Aktiver indhold.
Kør en makro fra makrolisten
Du kan få adgang til en liste over makroer fra fanen Vis. Sådan får du vist denne liste:
- Vælg Udsigt fane
- Klik på knappen mærket Makroer for at få vist makrolisten
- Vælg den makro, du vil køre på listen, og klik derefter på Løb knap
Du kan også når som helst vise makrolisten ved at trykke på ALT+F8.
Kør en makro ved hjælp af en tastaturgenvej
Du kan tildele en tastaturgenvej til en makro, som du ofte bruger, i form af CTRL+eller CTRL+SHIFT+. At gøre dette:
- Få vist makrolisten (Udsigt > Makroereller ALT+F8)
- Vælg den makro, du vil anvende en genvej til
- Klik på Muligheder… at vise Makroindstillinger underdialog
- I tekstboksen under Genvejstast, skriv et enkelt bogstav og klik derefter på Okay. Hvis du holder SHIFT -tasten nede, mens du skriver bogstavet, viser etiketten ved siden af feltet SHIFT som en del af genvejen
BEMÆRK: det anbefales stærkt, at du bruger SHIFT, når du opretter en genvejstast! Excel bruger CTRL+ genveje til sig selv, f.eks. CTRL+C for at kopiere, eller CTRL+V for at gemme. Hvis du opretter en makrogenvej ved hjælp af disse eller andre Excel-genveje, overskriver du Excel-genvejen, indtil du tildeler makrogenvejen igen.
Kør en makro fra VB Editor
Makroer kan også køres fra VB Editor. VB Editor giver dig mulighed for at gennemgå en makros kode og foretage eventuelle ændringer, du ønsker, før du kører den.
Sådan kører du en makro i VB Editor:
- Åbn VB Editor (fanen Udvikler> Visual Basic eller ALT+F11)
- I Projekt vindue, dobbeltklik på modulet, der indeholder den makro, du vil teste
- I modulets kodevindue, placer markøren hvor som helst på makroens kode mellem "Sub" og "End Sub"
- Klik på Løb på værktøjslinjen, eller tryk på tastaturgenvej F5
Kør en makro ved hjælp af en knap eller form
Det er ofte nyttigt at have en kontrol på regnearket, som en bruger kan klikke for at køre en makro, f.eks. En knapkontrol eller en form. Dette er meget hurtigere for slutbrugere end at åbne lister over makroer eller grave gennem makrokode i VB Editor.
Information om, hvordan du opretter en klikbar knap eller form, kan findes her: Tilføj en knap, og tildel en makro i Excel.
Kør en makro automatisk ved hjælp af begivenheder i VBA
Det er muligt at få en makro til at køre, når der sker noget i Excel - for eksempel når en projektmappe åbnes, eller når en celleværdi ændres. Disse kaldes Begivenheder, og du kan skrive VBA -kode, så de kan ringe til makroer eller udføre andre operationer.
For at skrive kode til en begivenhed skal du bruge VB Editor. For eksempel at se begivenheder for projektmappen:
- Åbn VB Editor (ALT+F11)
- Dobbeltklik på Denne arbejdsbog objekt i VB Editor's Projektvindue
- Vælg "Workbook" i rullemenuen øverst til venstre i kodevinduet
- Klik på rullemenuen til højre for at se en liste over begivenheder
Følgende er en lille, men nyttig prøve af Excel -begivenheder, som du kan køre makroer fra.
Workbook_Open ()
Hændelsen Workbook_Open () udløses, når en projektmappe åbnes. Hvis du får sikkerhedsadvarslen efter at have åbnet en projektmappe, udløses denne begivenhed efter at have klikket på "Aktiver indhold".
12345 | Private Sub Workbook_Open ()MsgBox "Arbejdsbog åbnet!"Afslut Sub |
Workbook_BeforeClose (Annuller som boolsk)
Workbook_BeforeClose () udløses, når brugeren forsøger at lukke projektmappen. Det sker, før der kontrolleres for at se, om projektmappen skal gemmes.
Det Afbestille parameter kan indstilles til Sand for at stoppe projektmappen i at lukke.
123456789 | Private Sub Workbook_BeforeClose (Annuller som boolsk)Hvis MsgBox ("Er du sikker?", VbYesNo + vbQuestion, "Luk") = vbNo SåAnnuller = SandtAfslut HvisAfslut Sub |
Worksheet_Change (ByVal Target As Range)
Worksheet_Change () udløses, når værdien af en celle ændres - uanset om den ændres af en makro, af en kopiér/indsæt -handling eller af et eksternt link. Det udløses dog ikke, når en værdi genberegnes via en formel.
Det Mål parameter repræsenterer de celler, hvis værdi er ændret.
Hvis du ændrer værdien af andre celler inde i denne hændelse, starter hændelsen igen. Dette kan muligvis forårsage en uendelig sløjfe. Hvis du har brug for at ændre celleværdier uden at udløse denne hændelse, kan du overveje at indstille Application.EnableEvents til Falsk først og derefter sætte det tilbage til Sand ved afslutningen af arrangementsproceduren.
123456789 | Private Sub Worksheet_Change (ByVal Target As Range)MsgBox "Celler ændret:" & Target.AddressApplication.EnableEvents = FalskOmråde ("A2"). Værdi = Område ("A2"). Værdi + Target.Cells.CountApplication.EnableEvents = TrueAfslut Sub |
Worksheet_SelectionChange (ByVal Target As Range)
Denne hændelse udløses, når der vælges forskellige celler med målretningskorset. Målparameteren repræsenterer de nye celler, der er blevet markeret.
Du kan også udløse denne begivenhed med kode, dvs. "Område (" A1 "). Vælg". Som med Worksheet_Change () skal du være forsigtig med at vælge andre celler inde i denne hændelse, da du kan forårsage en uendelig loop. Brug Application.EnableEvents.
123456789 | Private Sub Worksheet_SelectionChange (ByVal Target As Range)Hvis Target.Address = "$ A $ 1" SåMsgBox "Markør i udgangsposition."Afslut HvisAfslut Sub |
Stop en kørende makro
En kørende makro kan afbrydes ved at trykke på ESC eller CTRL+BREAK. Som standard viser en afbrudt makro følgende dialog:
Klikker Ende vil stoppe makroen, mens Blive ved vil genoptage det. Klikker Fejlfinde åbner makroen i VB Editor og fokuserer den kodelinje, som udførelsen blev sat på pause. (Inde i VB Editor kan du stoppe eller genoptage makroen ved hjælp af knapperne Kør eller Afslut på værktøjslinjen.)
Application.EnableCancelKey
Du kan deaktivere muligheden for at stoppe en makro med ESC eller CTRL+BREAK ved at indstille Application.EnableCancelKey ejendom. Denne ejendom har tre mulige værdier:
- xlAfbryd - dette er standardværdien, som får Excel til at vise dialogen ovenfor
- xlDeaktiveret - fjerner muligheden for at stoppe en kørende makro
- xlErrorHandler - når der foretages et afbrydelsesforsøg, kastes der en fejl, der kan håndteres i kode
Når kodeudførelsen stopper, nulstiller Excel altid værdien af Application.EnableCancelKey tilbage til xlAfbryd.
En god grund til at bruge denne ejendom er sikkerhed. For eksempel, hvis du havde en makro, der midlertidigt ubeskyttede dele af din projektmappe, kunne en bruger muligvis stoppe makroen lige efter afbeskyttelsen og få adgang til indhold, du ikke havde til hensigt at have dem. Ved at indstille Application.EnableCancelKey kan du helt deaktivere deres evne til at gøre dette eller håndtere deres afbrydelse yndefuldt med en fejlhåndterer, der genbeskytter projektmappen.
1234567891011 | Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Beskyt "MyPassword"NewData.Copy målTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptAfslut Sub |
Force-Close Excel med Windows Task Manager
Hvis makroen har 'hængt', eller Excel er blevet for travlt til at anerkende et afbrydelsesforsøg, skal du muligvis tvinge Luk Excel selv med Windows Jobliste. (BEMÆRK: hvis du gør dette, kan du miste alt arbejde, der ikke er gemt, og du skal stole på en automatisk gendannelsesversion af din projektmappe.)
- Åbn Jobliste direkte ved hjælp af CTRL+SKIFT+ESC
- Vælg "Processer"Fanen
- Udvid elementet "Microsoft Excel" for at vise alle projektmapper
- Vælg den projektmappe, du vil lukke, og klik derefter på Afslut opgaven i nederste højre hjørne
