Hur man spelar in ett makro i Excel - en steg -för -steg -guide

Även om du är en helt nybörjare i Excel VBA -världen kan du enkelt spela in ett makro och automatisera en del av ditt arbete.

I den här detaljerade guiden kommer jag att täcka allt du behöver veta för att komma igång med inspelning och användning av makron i Excel.

Om du är intresserad av att lära dig VBA på det enkla sättet, kolla in min Online Excel VBA -utbildning.

Vad är ett makro?

Om du är nybörjare på VBA, låt mig först berätta vad ett makro är - trots allt kommer jag att fortsätta använda den här termen i hela handledningen.

Ett makro är en kod skriven i VBA (Visual Basic for Applications) som låter dig köra en bit kod när den körs.

Ofta hittar du människor (inklusive jag själv) hänvisar till en VBA -kod som ett makro - oavsett om den genereras med hjälp av en makroinspelare eller har skrivits manuellt.

När du spelar in ett makro tittar Excel noga på stegen du tar och noterar det på ett språk som det förstår - vilket är VBA.

Och eftersom Excel är en riktigt bra anteckningsman, skapar det en mycket detaljerad kod (som vi kommer att se senare i denna handledning).

Nu, när du stoppar inspelningen, sparar makrot och kör det, går Excel helt enkelt tillbaka till VBA -koden som den genererade och följer exakt samma steg.

Det betyder att även om du inte vet något om VBA kan du automatisera vissa uppgifter bara genom att låta Excel spela in dina steg en gång och sedan återanvända dessa senare.

Låt oss nu dyka in och se hur vi spelar in ett makro i Excel.

Få fliken Utvecklare i menyfliksområdet

Det första steget för att spela in ett makro är att få fliken Utvecklare i menyfliksområdet.

Om du redan kan se utvecklarfliken i menyfliksområdet går du till nästa avsnitt, annars följer du stegen nedan:

  • Högerklicka på någon av de befintliga flikarna i menyfliksområdet och klicka på alternativet "Anpassa menyfliksområdet". Det öppnar dialogrutan Excel -alternativ.
  • I dialogrutan Excel -alternativ har du alternativet Anpassa menyfliksområdet. Kontrollera alternativet Utvecklare i fönstret Huvudflikar till höger.
  • Klicka på OK.

Stegen ovan skulle göra fliken Utvecklare tillgänglig i menyfliksområdet.

Spela in ett makro i Excel

Nu när vi har allt på plats, låt oss lära oss att spela in ett makro i Excel.

Låt oss spela in ett mycket enkelt makro - ett som väljer en cell och anger texten "Excel" i den. Jag använder texten 'Excel' när jag spelar in detta makro, men ange ditt namn eller annan text som du gillar.

Här är stegen för att spela in detta makro:

  1. Klicka på fliken Utvecklare.
  2. I gruppen Kod klickar du på knappen Makro. Detta öppnar dialogrutan "Spela in makro".
  3. Ange ett namn för ditt makro i dialogrutan Spela in makro. Jag använder namnet Skriv text. Det finns några namnbetingelser som du måste följa när du namnger ett makro. Till exempel kan du inte använda mellanslag mellan. Jag brukar föredra att behålla mina makronamn som ett enda ord, med olika delar med ett stort första alfabet. Du kan också använda understreck för att skilja två ord - till exempel Enter_Text.
  4. (Valfritt steg) Du kan tilldela en kortkommando om du vill. I det här fallet kommer vi att använda genvägen Ctrl + Skift + N. Kom ihåg att genvägen du tilldelar här skulle åsidosätta alla befintliga snitt i din arbetsbok. Om du till exempel tilldelar genvägen Control + S, kommer du inte att kunna använda detta för att spara arbetsboken (istället körs makrot varje gång du använder den).
  5. I alternativet "Spara makro i", se till att "Den här arbetsboken" är markerad. Detta steg säkerställer att makrot är en del av arbetsboken. Det kommer att finnas där när du sparar det och öppnar igen, eller till och med om du delar det med någon.
  6. (Valfritt steg) Ange en beskrivning. Jag brukar inte göra detta, men om du är extremt organiserad kanske du vill lägga till vad makrot handlar om.
  7. Klicka på OK. Så snart du klickar på OK börjar det spela in dina åtgärder i Excel. Du kan se knappen "Stoppa inspelning" på fliken Utvecklare, vilket indikerar att makroinspelningen pågår.
  8. Välj cell A2.
  9. Ange texten Excel (eller så kan du använda ditt namn).
  10. Tryck på Enter -tangenten. Detta kommer att välja cell A3.
  11. Klicka på knappen Stoppa inspelning på fliken Utvecklare.

Grattis!

Du har just spelat in ditt första makro i Excel. Du är inte längre en makrojungfru.

Även om makrot inte gör något användbart, kommer det att tjäna sitt syfte med att förklara hur en makroinspelare fungerar i Excel.

Låt oss nu gå vidare och testa detta makro.

Följ stegen nedan för att testa makrot:

  1. Radera texten i cell A2. Detta för att testa om makrot infogar texten i cell A2 eller inte.
  2. Markera valfri cell - annan än A2. Detta för att testa om makrot väljer cell A2 eller inte.
  3. Klicka på fliken Utvecklare.
  4. Klicka på knappen Makro i gruppen Kod.
  5. Klicka på makronamnet - EnterText i dialogrutan Makro.
  6. Klicka på knappen Kör.

Du kommer att märka att så snart du klickar på Kör -knappen infogas texten "Excel" i cell A2 och cell A3 markeras.

Nu kan allt detta hända på en splitsekund, men i verkligheten följde makrot - precis som en lydig tomte - de exakta stegen du visade när du spelade in makrot.

Så makrot väljer först cellen A2 och går sedan in i texten Excel i den och väljer sedan cellen A3.

Obs! Du kan också köra makrot med hjälp av kortkommandot Control + Shift + N (håll ned Control och Shift -tangenterna och tryck sedan på N -knappen). Detta är samma tangentbordsgenväg som vi tilldelade makrot när vi spelade in det.

Vad spelar in ett makro i backend

Låt oss nu gå till Excel -backend - VB Editor - och se vad inspelning ett makro verkligen gör.

Här är stegen för att öppna VB Editor i Excel:

  1. Klicka på fliken Utvecklare.
  2. Klicka på knappen Visual Basic i gruppen Kod.

Eller så kan du använda kortkommandot - ALT + F11 (håll ned ALT -tangenten och tryck på F11), i stället för ovanstående två steg. Denna genväg öppnar också samma VB Editor.

Om du nu ser VB -redigeraren för första gången, var inte överväldigad.

Låt mig snabbt göra dig bekant med VB Editor -anatomin.

  • Menyfältet: Det är här du har alla alternativ för VB Editor. Betrakta detta som bandet för VBA. Den innehåller kommandon som du kan använda medan du arbetar med VB Editor.
  • Verktygsfält - Det här är som snabbåtkomstverktygsfältet i VB -redigeraren. Det kommer med några användbara alternativ, och du kan lägga till fler alternativ till det. Dess fördel är att ett alternativ i verktygsfältet är bara ett klick bort.
  • Project Explorer -fönster - Det är här Excel listar alla arbetsböcker och alla objekt i varje arbetsbok. Om vi ​​till exempel har en arbetsbok med tre kalkylblad, visas den i Project Explorer. Det finns några ytterligare objekt här som moduler, användarformulär och klassmoduler.
  • Kodfönster - Det är här VBA -koden spelas in eller skrivs. Det finns ett kodfönster för varje objekt som listas i Project Explorer - t.ex. kalkylblad, arbetsböcker, moduler, etc. Vi kommer att se senare i denna handledning att det inspelade makrot går in i kodfönstret för en modul.
  • Egenskapsfönster - Du kan se egenskaperna för varje objekt i det här fönstret. Jag använder ofta det här fönstret för att namnge objekt eller ändra de dolda egenskaperna. Du kanske inte ser det här fönstret när du öppnar VB -redigeraren. För att visa detta, klicka på fliken Visa och välj Egenskapsfönster.
  • Omedelbart fönster - Jag använder ofta det omedelbara fönstret när jag skriver kod. Det är användbart när du vill testa några påståenden eller när du felsöker. Det kanske inte är synligt som standard och du kan få det att visas genom att klicka på fliken Visa och välja alternativet Omedelbart fönster.

När vi spelade in makrot - Skriv text, följande saker hände i VB Editor:

  • En ny modul infogades.
  • Ett makro spelades in med namnet som vi specificerade - Skriv text
  • Koden skrevs i kodfönstret i modulen.

Så om du dubbelklickar på modulen (modul 1 i det här fallet), visas ett kodfönster som visas nedan.

Här är koden som makroinspelaren och gav oss:

Sub EnterText () '' EnterText Macro '' Kortkommando: Ctrl+Shift+N 'Range ("A2"). Välj ActiveCell.FormulaR1C1 = "Excel" Range ("A3"). Välj End Sub

I VBA, alla rader som följer (apostrof -tecken) utförs inte. Det är en kommentar som är placerad endast i informationssyfte. Om du tar bort de fem första raderna i den här koden fungerar makrot fortfarande som förväntat.

Låt mig nu snabbt täcka vad varje kodrad gör:

Koden börjar med Sub följt av namnet på makrot och tom parentes. Sub är en förkortning för Subroutine. Varje delprogram (även kallat Procedure) i VBA börjar med Sub och slutar med End Sub.

  • Område ("A2"). Välj - Denna rad väljer cellen A2.
  • ActiveCell.FormulaR1C1 = “Excel” - den här raden anger texten Excel i den aktiva cellen. Eftersom vi valde A2 som det första steget blir det vår aktiva cell.
  • Område ("A3"). Välj - Detta väljer cell A3. Detta händer när vi trycker på Enter -tangenten efter att ha skrivit in texten, varav resultatet var att välja cell A3.

Jag hoppas att du nu har en grundläggande förståelse för hur du spelar in ett makro i Excel.

Tänk på att koden som skrivs av en makroinspelare inte alls är en effektiv kod.

Makroinspelare lägger ibland till mycket fluff till koden som ibland inte är nödvändig. Men det betyder inte att det inte är användbart. För någon som lär sig VBA kan en makroinspelare vara ett bra sätt att analysera hur saker fungerar i VBA.

Absolut mot relativ makroinspelning

Du vet redan om absoluta och relativa referenser i Excel … eller hur?

Om du inte gör det - läs den här självstudien om referenser först.

Läs det? Låt oss gå vidare.

Vi kommer att se senare i detta avsnitt om hur man spelar in makron i absoluta och relativa referenser. Men innan det, låt mig snabbt sammanfatta skillnaden mellan absolut och relativ referens i VBA (om du blev lat och inte läste upp på länken jag gav för några rader sedan):

Om du använder ett absolut referensalternativ för att spela in ett makro, skulle VBA -koden alltid hänvisa till samma celler som du använde. Om du till exempel väljer cell A2, anger du texten Excel och trycker på Retur varje gång - oavsett var du befinner dig i kalkylbladet och oavsett vilken cell som väljs, skulle din kod först markera cell A2, ange texten Excel och flytta sedan till cell A3.

Om du använder ett relativt referensalternativ för att spela in ett makro, skulle VBA inte hårdkoda cellreferenserna. Det skulle snarare fokusera på rörelsen jämfört med den aktiva cellen. Anta till exempel att du redan har cell A1 markerad och att du börjar spela in makrot i det relativa referensläget.

Nu väljer du cell A2, anger texten Excel och trycker på Enter. Nu, när du kör detta makro, kommer det inte att gå tillbaka till cell A2, istället flyttas det i förhållande till den aktiva cellen. Till exempel, om cell K3 är markerad, flyttas den till K4, anger texten Excel och väljer till sist cell K5.

Låt mig nu berätta hur du spelar in ett makro i relativa referensläge:

  1. Välj cell A1.
  2. Klicka på fliken Utvecklare.
  3. Klicka på knappen "Använd relativa referenser" i gruppen Kod. Den blir grön, vilket indikerar att den är påslagen.
  4. Klicka på knappen Spela in makro.
  5. Ange ett namn för ditt makro i dialogrutan Spela in makro. Jag använder namnet EnterTextRelRef.
  6. I alternativet Butiksmakro i, se till att ”Den här arbetsboken” är markerad.
  7. Klicka på OK.
  8. Välj cell A2.
  9. Ange texten Excel (eller så kan du ange ditt namn).
  10. Tryck på Enter -tangenten. Detta tar markören till cellen A3.
  11. Klicka på knappen Stoppa inspelning på fliken Utvecklare.

Detta skulle spela in makrot i det relativa referensläget.

Gör nu det här.

  1. Markera en cell (annan än A1).
  2. Klicka på fliken Utvecklare.
  3. Klicka på knappen Makro i gruppen Kod.
  4. Klicka på makronamnet i dialogrutan Makro - EnterTextRelRef.
  5. Klicka på knappen Kör.

Vad händer? Gick markören tillbaka till cell A3.

Det skulle det inte - eftersom du har spelat in makrot i det relativa referensläget. Så markören skulle flytta sig relativt den aktiva cellen. Till exempel, om du gör detta när cell K3 är markerat, kommer det att skriva texten Excel är cell K4 och slutligen välja cell K5.

Här är koden som spelas in i backend (fönstret VB Editor -modulkod):

Sub EnterTextRelRef () '' EnterTextRelRef Macro '' ActiveCell.Offset (1, 0) .Range ("A1"). Välj ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset (1, 0) .Range ("A1"). Välj Avsluta sub

Observera att hela koden inte hänvisar till cellerna K3 eller K4 någonstans. Istället använder den Activecell för att referera till den markerade cellen och Offset för att flytta i förhållande till den aktiva cellen.

Oroa dig inte för delen ("A1") som koden har. Det är en av de onödiga koder som makroinspelaren lägger till som inte tjänar något syfte och kan tas bort. Koden skulle fungera bra utan den.

Knappen "Använd relativ referens" på fliken Utvecklare är en växlingsknapp. Du kan stänga av den (och återgå till absolut referens) genom att klicka på den.

Vad en makroinspelare inte kan göra

Makroinspelaren är bra på att följa dig i Excel och spela in dina exakta steg, men det kan misslyckas när du behöver det för att göra mer.

  • Du kan inte köra en kod utan att välja objektet. Om du vill att makroinspelaren ska gå till nästa kalkylblad och markera alla fyllda celler i kolumn A, utan att lämna det aktuella kalkylbladet, kommer det inte att kunna göra detta. Det beror på att om jag ber dig att göra detta, kommer du inte att kunna göra det (utan att lämna det aktuella bladet). Och om du inte kan göra det själv, hur kommer makroinspelaren att fånga dina handlingar. I sådana fall måste du gå manuellt och skapa/redigera koden.
  • Du kan inte skapa en anpassad funktion med en makroinspelare. Med VBA kan du skapa anpassade funktioner som du kan använda i kalkylbladet som vanliga funktioner. Du kan skapa detta genom att skriva koden manuellt.
  • Du kan inte köra koder baserade på händelser: I VBA kan du använda många händelser - som att öppna en arbetsbok, lägga till ett kalkylblad, dubbelklicka på en cell, etc, för att köra en kod som är associerad med den händelsen. Du kan använda en makroinspelare för att göra detta.
  • Du kan inte skapa loopar med en makroinspelare. När du manuellt anger koden kan du utnyttja kraften hos loopar i VBA (till exempel för nästa, för varje nästa, gör medan, gör tills). Men du kan inte göra detta när du spelar in ett makro.
  • Du kan inte analysera förhållanden: Du kan söka efter villkor i koden med hjälp av makroinspelare. Om du skriver en VBA -kod manuellt kan du använda IF Then Else -satserna för att analysera ett tillstånd och köra en kod om den är sann (eller en annan kod om den är falsk).
  • Du kan inte skicka argument i ett makroförfarande: När du spelar in ett makro kommer det aldrig att ha några argument. En underrutin kan ta inmatningsargument som kan användas i makrot för att utföra en uppgift. När du spelar in ett makro kan detta inte göras eftersom de inspelade makron är oberoende och inte är anslutna till några andra befintliga makron.

Makroaktiverade filtillägg

När du spelar in ett makro, eller om du manuellt skriver VBA-kod i Excel, måste du spara filen med ett makroaktiverat filtillägg (.xlsm).

Innan Excel 2007 fanns det ett enda filformat som brukade räcka - .xls.

Men från 2007 och framåt introducerades .xlsx som standard filtillägg. Filerna som sparas som .xlsx kan inte innehålla ett makro i den. Så om du har en fil med .xlsx-tillägget och du spelar in/skriver ett makro och sparar det, kommer det att varna dig för att spara det i makroaktiverat format och visa en dialogruta (som visas nedan):

Om du väljer Nej kan Excel spara det i ett makroaktiverat format. Men om du klickar på Ja kommer Excel automatiskt att ta bort all kod från din arbetsbok och spara den som en .xlsx -arbetsbok.

Så om du har ett makro i din arbetsbok måste du spara det i .xlsm -format för att behålla det makrot.

Olika sätt att köra ett makro i Excel

Hittills har vi bara sett ett sätt att köra ett makro i Excel - som använder dialogrutan Makro.

Men det finns ett antal sätt att köra makron.

  1. Kör ett makro från menyfliksområdet (fliken utvecklare)
  2. Använda en kortkommando (som du måste tilldela)
  3. Tilldela makron till en form
  4. Tilldela makron till en knapp
  5. Kör ett makro från VB Editor

Slutsats - Spela in ett makro när det fastnar

Jag nämnde redan att en makroinspelare är ett användbart verktyg för alla som arbetar med VBA i Excel.

När du använder makroinspelaren några gånger kommer du att märka att den spottar ut en massa onödig kod. Det är dock fortfarande användbart och ger dig några idéer om var du ska börja. Om jag till exempel ber dig att filtrera en cellkolumn med VBA och du inte har en aning om vad syntaxen är, kan du snabbt spela in ett makro och kolla koden.

En makroinspelare är ett oumbärligt verktyg och även efter många års erfarenhet av VBA -kodning under mitt bälte tar jag ofta till makroinspelaren för att få hjälp.

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

wave wave wave wave wave