Excel VBA-makrokurs för nybörjare med exempel

  • Dela Detta
Michael Brown

Den här handledningen hjälper dig att lära dig Excel-makron. Du får veta hur du spelar in ett makro och lägger in VBA-kod i Excel, kopierar makron från en arbetsbok till en annan, aktiverar och inaktiverar dem, visar koden, gör ändringar och mycket mer.

För Excel-nybörjare verkar begreppet makron ofta oöverstigligt. Det kan faktiskt ta månader eller till och med år av utbildning att behärska VBA. Det betyder dock inte att du inte kan dra nytta av automatiseringsförmågan hos Excel-makron direkt. Även om du är helt nybörjare i VBA-programmering kan du enkelt spela in ett makro för att automatisera några av dina repetitiva uppgifter.

Den här artikeln är din inkörsport till den fascinerande världen av Excel-makron. Den täcker de viktigaste grunderna som du behöver veta för att komma igång och innehåller länkar till relaterade, fördjupade handledningar.

    Vad är makron i Excel?

    Ett Excel-makro är en uppsättning kommandon eller instruktioner som lagras i en arbetsbok i form av VBA-kod. Du kan se det som ett litet program för att utföra en fördefinierad sekvens av åtgärder. När makron har skapats kan de återanvändas när som helst. När du kör ett makro utförs de kommandon som det innehåller.

    Vanligtvis används makron för att automatisera repetitiva uppgifter och dagliga rutiner. Skickliga VBA-utvecklare kan skriva riktigt sofistikerade makron som går långt utöver att minska antalet tangenttryckningar.

    Ofta hör du folk tala om ett "makro" som "VBA". Tekniskt sett finns det en skillnad: ett makro är en kod medan Visual Basic for Applications (VBA) är det programmeringsspråk som Microsoft har skapat för att skriva makron.

    Varför använda Excel-makron?

    Huvudsyftet med makron är att få mer arbete gjort på kortare tid. Precis som du använder formler för att räkna ut siffror och manipulera textsträngar kan du använda makron för att utföra vanliga uppgifter automatiskt.

    Låt oss säga att du ska skapa en veckorapport för din chef. För detta importerar du olika analysdata från ett par eller flera externa resurser. Problemet är att dessa data är röriga, överflödiga eller inte i ett format som Excel kan förstå. Det innebär att du måste omformatera datum och siffror, klippa bort extra mellanslag och ta bort blanksteg, kopiera och klistra in information i lämpliga kolumner,skapa diagram för att visualisera trender och göra många fler olika saker för att göra din rapport tydlig och användarvänlig. Nu kan du tänka dig att alla dessa åtgärder kan utföras för dig direkt med ett musklick!

    Naturligtvis tar det tid att skapa ett komplext makro. Ibland tar det till och med mer tid än att utföra samma manipuleringar manuellt. Men att skapa ett makro är en engångsinsats. När du väl har skrivit, felsökt och testat VBA-koden kommer den att göra jobbet snabbt och felfritt, vilket minimerar mänskliga fel och kostsamma misstag.

    Hur man skapar ett makro i Excel

    Det finns två sätt att skapa makron i Excel - genom att använda Macro Recorder och Visual Basic Editor.

    Tips. I Excel görs de flesta åtgärder med makron via Utvecklare så se till att lägga till fliken Utvecklare i Excel-bandet.

    Spela in ett makro

    Även om du inte vet något om programmering i allmänhet och VBA i synnerhet kan du enkelt automatisera en del av ditt arbete genom att låta Excel registrera dina handlingar som ett makro. Medan du utför stegen tittar Excel noga på och skriver ner dina musklick och tangenttryckningar i VBA-språket.

    Makroinspelaren fångar nästan allt du gör och producerar en mycket detaljerad (ofta överflödig) kod. När du har stoppat inspelningen och sparat makrot kan du visa koden i redigeraren för Visual Basic och göra små ändringar. När du kör makrot går Excel tillbaka till den inspelade VBA-koden och utför exakt samma rörelser.

    För att starta inspelningen klickar du på Spela in makro knappen på antingen Utvecklare eller på fliken Status bar.

    Detaljerad information finns i avsnittet Hur man spelar in ett makro i Excel.

    Skriva ett makro i Visual Basic Editor

    Redigeraren för Visual Basic for Applications (VBA) är den plats där Microsoft Excel förvarar koden för alla makron, både inspelade och manuellt skrivna.

    I VBA-redigeraren kan du inte bara programmera en sekvens av åtgärder, utan också skapa egna funktioner, visa egna dialogrutor, utvärdera olika villkor och viktigast av allt koda logiken! Naturligtvis kräver skapandet av ett eget makro en viss kunskap om VBA-språkets struktur och syntax, vilket ligger utanför räckvidden för den här handledningen för nybörjare.hindrar dig från att återanvända någon annans kod (till exempel den du hittat på vår blogg :) och även en nybörjare i Excel VBA bör inte ha några problem med det!

    Tryck först på Alt + F11 för att öppna Visual Basic Editor. Lägg sedan in koden i dessa två snabba steg:

    1. Högerklicka på målarbetsboken i projektutforskaren till vänster och klicka sedan på Infoga > Modul .
    2. Klistra in VBA-koden i kodfönstret till höger.

    När du är klar trycker du på F5 för att köra makrot.

    Detaljerade steg finns i Hur man infogar VBA-kod i Excel.

    Hur man kör makron i Excel

    Det finns flera sätt att starta ett makro i Excel:

    • Om du vill köra ett makro från ett kalkylblad klickar du på Makroer på knappen på Utvecklare eller tryck på genvägen Alt + F8.
    • Om du vill köra ett makro från VBA-redigeraren trycker du på antingen:
      • F5 för att köra hela koden.
      • F8 för att gå igenom koden rad för rad. Detta är mycket användbart för testning och felsökning.

    Dessutom kan du starta ett makro genom att klicka på en anpassad knapp eller trycka på den tilldelade genvägen. För fullständig information, se Hur man kör makron i Excel.

    Hur du aktiverar makron i Excel

    Av säkerhetsskäl är alla makron i Excel inaktiverade som standard. Så om du vill använda VBA-koderns magi till din fördel måste du veta hur du aktiverar dem.

    Det enklaste sättet att aktivera makron för en specifik arbetsbok är att klicka på Aktivera innehåll i den gula säkerhetsvarningsfältet som visas överst på bladet när du öppnar en arbetsbok med makron för första gången.

    Om du vill veta mer om makrosäkerhet kan du läsa Hur du aktiverar och inaktiverar makron i Excel.

    Hur man ändrar makroinställningar

    Microsoft Excel bestämmer om VBA-koder ska tillåtas eller inte tillåtas att utföras i dina arbetsböcker baserat på den makroinställning som valts i Trust Center .

    Här är stegen för att komma åt inställningarna för Excel-makron och ändra dem om det behövs:

    1. Gå till Fil och välj Alternativ .
    2. I den vänstra rutan väljer du Trust Center och klicka sedan på Inställningar för Trust Center... .
    3. I Trust Center dialogrutan, klicka på Makro-inställningar till vänster, välj önskat alternativ och klicka på OK .

    I skärmbilden nedan är standardmakroinställningen vald:

    Mer information finns i Excel-makroinställningar förklarade.

    Visa, redigera och felsöka VBA-koder i Excel

    Alla ändringar i koden för ett makro, oavsett om den genereras automatiskt av Excel-makroinspelaren eller om du skriver den själv, görs i redigeraren för Visual Basic.

    För att öppna VB-redigeraren trycker du antingen på Alt + F11 eller klickar på Visual Basic på knappen på Utvecklare fliken.

    Till visa och redigera koden för ett specifikt makro, i Utforskare av projekt till vänster, dubbelklicka på den modul som innehåller den eller högerklicka på modulen och välj Visa kod Detta öppnar fönstret Kod där du kan redigera koden.

    Till test och felsökning ett makro, använd F8-tangenten. Detta kommer att leda dig genom makrokoden rad för rad så att du kan se vilken effekt varje rad har på arbetsbladet. Den rad som för närvarande utförs är gulmarkerad. För att avsluta felsökningsläget klickar du på Återställ i verktygsfältet (blå fyrkant).

    Hur man kopierar ett makro till en annan arbetsbok

    Du har skapat ett makro i en arbetsbok och vill nu återanvända det i andra filer också? Det finns två sätt att kopiera ett makro i Excel:

    Kopiera modulen som innehåller ett makro

    Om målmakron finns i en separat modul eller om alla makron i modulen är användbara för dig, är det klokt att kopiera hela modulen från en arbetsbok till en annan:

    1. Öppna båda arbetsböckerna - den som innehåller makrot och den där du vill kopiera det.
    2. Öppna Visual Basic Editor.
    3. I fönstret Projektutforskaren hittar du den modul som innehåller makrot och drar den till målarbetsboken.

    I skärmbilden nedan kopierar vi Modul1 från Bok1 till Bok2 :

    Kopiera källkoden för ett makro

    Om modulen innehåller många olika makron medan du bara behöver ett, kopiera bara koden för det specifika makrot. Så här gör du:

    1. Öppna båda arbetsböckerna.
    2. Öppna Visual Basic Editor.
    3. Dubbelklicka på den modul som innehåller makrot som du vill kopiera i projektutforskningsfönstret för att öppna dess kodfönster.
    4. I fönstret Kod letar du upp målmakrot, markerar dess kod (som börjar med Under och avslutas med Slutar under ) och tryck på Ctrl + C för att kopiera den.
    5. I Projektutforskaren letar du upp målarbetsboken och infogar sedan antingen en ny modul i den (högerklicka på arbetsboken och klicka på Infoga > Modul ) eller dubbelklicka på en befintlig modul för att öppna dess kodfönster.
    6. Tryck på Ctrl + V i fönstret Kod i destinationsmodulen för att klistra in koden. Om modulen redan innehåller kod, bläddra ner till den sista kodraden och klistra sedan in det kopierade makrot.

    Hur du raderar makron i Excel

    Om du inte längre behöver en viss VBA-kod kan du ta bort den med hjälp av Makro eller i redigeraren för Visual Basic.

    Ta bort ett makro från en arbetsbok

    Om du vill ta bort ett makro direkt från din Excel-arbetsbok utför du följande steg:

    1. På den Utvecklare på fliken Kod grupp, klickar du på Makroer eller tryck på genvägen Alt + F8.
    2. I Makro dialogrutan, välj det makro som du vill ta bort och klicka på Ta bort .

    Tips:

    • Om du vill visa alla makron i alla öppna filer väljer du Alla öppna arbetsböcker från Makroer i rullgardinslistan.
    • För att kunna ta bort ett makro i arbetsboken Personal Macro Workbook måste du först ta bort Personal.xlsb.

    Ta bort ett makro via Visual Basic Editor

    En fördel med att använda VBA Editor är att du kan radera en hel modul med alla makron som den innehåller på en gång. Dessutom kan du med VBA Editor radera makron i den personliga arbetsboken för makron utan att dölja den.

    För att permanent ta bort en modul utföra dessa steg:

    1. I Utforskare av projekt , högerklicka på modulen och välj Ta bort från kontextmenyn.
    2. När du tillfrågas om du vill exportera modulen innan du tar bort den klickar du på Ingen .

    Till ta bort ett specifikt makro raderar du helt enkelt dess källkod direkt i fönstret Kod. Du kan också radera ett makro genom att använda Verktyg i VBA-redigeraren:

    1. Från Verktyg menyn, väljer du Makroer . Makroer kommer att visas.
    2. I Makroer Välj det projekt som innehåller det oönskade makrot i rullgardinslistan.
    3. I Makronamn och välj makrot.
    4. Klicka på Ta bort knapp.

    Hur du sparar makron i Excel

    Om du vill spara ett makro i Excel, antingen inspelat eller skrivet manuellt, sparar du bara arbetsboken som makroaktiverad (*.xlms). Så här gör du:

    1. I filen som innehåller makrot klickar du på Spara eller tryck på Ctrl + S .
    2. Spara som dialogrutan visas. Välj Arbetsbok med Excel-makroaktivering (*.xlsm) från Spara som typ och klicka på Spara :

    Hur du exporterar och importerar makron i Excel

    Om du vill dela dina VBA-koder med någon eller flytta dem till en annan dator är det snabbaste sättet att exportera hela modulen som en .bas-fil.

    Exportera makron

    Så här gör du för att exportera dina VBA-koder:

    1. Öppna arbetsboken som innehåller makrona.
    2. Tryck på Alt + F11 för att öppna Visual Basic Editor.
    3. Högerklicka på den modul som innehåller makrona i projektutforskaren och välj Exportera fil .
    4. Navigera till mappen där du vill spara den exporterade filen, namnge filen och klicka på Spara .

    Importera makron

    För att importera en .bas-fil med VBA-koder till Excel följer du de här stegen:

    1. Öppna arbetsboken som du vill importera makron i.
    2. Öppna Visual Basic Editor.
    3. Högerklicka på projektnamnet i projektutforskaren och välj Importera fil .
    4. Navigera till .bas-filen och klicka på Öppna .

    Exempel på Excel-makron

    Ett av de bästa sätten att lära sig Excel VBA är genom att utforska kodexempel. Nedan hittar du exempel på mycket enkla VBA-koder som automatiserar några grundläggande operationer. Naturligtvis kommer dessa exempel inte att lära dig att koda, för detta finns det hundratals professionella VBA-tutorials. Vi vill bara illustrera några vanliga funktioner i VBA som förhoppningsvis kommer att göra filosofin lite mer bekant fördu.

    Dölja alla ark i en arbetsbok

    I det här exemplet använder vi ActiveWorkbook objektet för att återge den aktiva arbetsboken och den För varje slinga för att gå igenom alla ark i arbetsboken ett efter ett. För varje ark som hittas ställer vi in Synlig till xlSheetVisible .

    Sub Unhide_All_Sheets() Dim wks As Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End Sub

    Dölja det aktiva arbetsbladet eller göra det mycket dolt

    Om du vill manipulera det aktiva bladet använder du ActiveSheet objektet. Detta exempelmakro ändrar Synlig för det aktiva bladet till xlSheetHidden för att dölja den. Om du vill göra arket mycket dolt, kan du ställa in Synlig till xlSheetVeryHidden .

    Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End Sub

    Ta bort alla sammanslagna celler i det valda intervallet.

    Om du vill utföra vissa operationer på ett intervall i stället för på hela arbetsbladet använder du Urval Exempelvis kommer koden nedan att ta bort alla sammanslagna celler i ett valt område på en gång.

    Sub Unmerge_Cells() Selection.Cells.UnMerge End Sub

    Visa en meddelanderuta

    Om du vill visa ett meddelande till dina användare använder du MsgBox Här är ett exempel på ett sådant makro i sin enklaste form:

    Sub Show_Message() MsgBox ( "Hello World!" ) End Sub

    I riktiga makron används en meddelanderuta vanligtvis för information eller bekräftelse. Innan du utför en åtgärd (i vårt fall att ta bort celler från varandra) visar du till exempel en Ja/Nej Om användaren klickar på "Ja" tas de markerade cellerna bort.

    Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "Är du säker på att du vill ta bort dessa celler?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If End Sub

    För att testa koden väljer du ett eller flera intervall som innehåller sammanslagna celler och kör makrot. Följande meddelande visas:

    Nedan finns länkar till mer komplexa makron som automatiserar utmanande och tidskrävande uppgifter:

    • Makro för att kopiera ark från flera arbetsböcker till en
    • Makroer för att duplicera ark i Excel
    • Makroer för att alfabetisera flikar i Excel
    • Makro för att ta bort skyddet av ark utan lösenord
    • Makro för att räkna och summera villkorligt färgade celler
    • Makro för att konvertera siffror till ord
    • Makro för att dölja alla kalkylblad utom det aktiva bladet
    • Makroer för att ta bort blad
    • Makro för att dölja alla kolumner
    • Makroer för att göra ark mycket dolda
    • Makro för att ta bort alla radbrytningar i ett aktivt ark
    • Makroer för att radera tomma rader
    • Makro för att radera varannan rad
    • Makro för att ta bort tomma kolumner
    • Makro för att infoga varannan kolumn
    • Makroer för stavningskontroll i Excel
    • Makro för att överföra kolumner till rader
    • Makro för att vända kolumner i Excel
    • Makroer för att ställa in utskriftsområdet
    • Makroer för att infoga sidbrytningar

    Hur du skyddar Excel-makros

    Om du vill förhindra att ditt makro kan ses, ändras eller exekveras av andra kan du skydda det med ett lösenord.

    Lås makro för visning

    Gör följande för att skydda dina VBA-koder från obehörig visning och redigering:

    1. Öppna VBA-redigeraren.
    2. Högerklicka på det projekt som du vill låsa i projektutforskaren och välj Egenskaper för VBAProject...
    3. I Projektets egenskaper dialogrutan, i dialogrutan Skydd kontrollera fliken Låsa projektet för visning , ange lösenordet två gånger och klicka på OK .
    4. Spara, stäng och öppna Excel-filen igen.

    När du försöker visa koden i Visual Basic-redigeraren visas följande dialogruta. Skriv in lösenordet och klicka på OK.

    Till låsa upp makron , öppna bara den Projektets egenskaper igen och ta bort ett kryss från Låsa projektet för visning box.

    Observera: Den här metoden skyddar koden från visning och redigering, men förhindrar inte att den utförs.

    Lösenordsskydda makro från att köras

    Om du vill skydda ditt makro från att exekveras så att endast de användare som känner till lösenordet kan köra det, lägger du till följande kod och ersätter ordet "password" med ditt riktiga lösenord:

    Sub Password_Protect() Dim password As Variant password = Application.InputBox( "Ange lösenord" , "Lösenordsskyddat makro" ) Select Case password Case Is = False 'gör ingenting Case Is = "password" 'din kod här Case Else MsgBox "Felaktigt lösenord" End Select End Sub

    Makrot använder den InputBox funktionen för att uppmana användaren att ange ett lösenord:

    Om användarens inmatning stämmer med det hårdkodade lösenordet körs koden. Om lösenordet inte stämmer visas meddelanderutan "Felaktigt lösenord". För att förhindra att användaren kan se lösenordet i Visual Basic-redigeraren ska du komma ihåg att låsa makrot för visning som förklaras ovan.

    Med tanke på det stora antalet olika lösenordsknäckare som finns tillgängliga på nätet är det viktigt att inse att detta skydd inte är absolut. Du kan snarare betrakta det som ett skydd mot oavsiktlig användning.

    Tips för Excel-makron

    Excel VBA-proffs har hittat på massor av geniala knep för att göra sina makron mer effektiva. Nedan kommer jag att dela med mig av några av mina favoriter.

      Om din VBA-kod aktivt manipulerar cellinnehållet kan du påskynda exekveringen genom att stänga av skärmuppdatering och omräkning av formler. När du har kört din kod slår du på detta igen.

      Följande rader ska läggas till i början av din kod (efter de rader som börjar med Dim eller efter det att Under linje):

      Application.ScreenUpdating = False Application.Calculation = xlCalculationManual

      Följande rader ska läggas till i slutet av koden (före Slutar under ):

      Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic

      Hur du delar upp VBA-koden i flera rader

      När du skriver kod i VBA-redigeraren kan du ibland skapa mycket långa uttalanden, så att du måste bläddra horisontellt för att se slutet av raden. Detta påverkar inte utförandet av koden, men gör det svårt att granska koden.

      Om du vill dela upp ett långt uttalande på flera rader skriver du en utrymme följt av en Understrykning (_) på den punkt där du vill bryta linjen. I VBA kallas detta för tecken för radavbrott .

      För att fortsätta koden på nästa rad på ett korrekt sätt bör du följa dessa regler:

      • Dela inte upp koden mitt i argumentnamnen.
      • Använd inte ett understreck för att bryta kommentarer. För kommentarer med flera rader skriver du en apostrof (') i början av varje rad.
      • Ett understreck måste vara det sista tecknet på en rad och får inte följas av något annat.

      Följande kodexempel visar hur du delar upp uttalandet i två rader:

      Answer = MsgBox( "Är du säker på att du vill ta bort dessa celler?" , _ vbQuestion + vbYesNo, "Unmerge Cells" )

      Hur man gör ett makro tillgängligt från vilken arbetsbok som helst

      När du skriver eller spelar in ett makro i Excel kan det vanligtvis bara nås från den specifika arbetsboken. Om du vill återanvända samma kod i andra arbetsböcker kan du spara den i den personliga arbetsboken för makro. På så sätt blir makrot tillgängligt när du öppnar Excel.

      Det enda hindret är att den personliga arbetsboken för makro inte finns som standard i Excel. För att skapa den måste du registrera minst ett makro. I följande handledning finns alla detaljer: Personlig arbetsbok för makro i Excel

      Hur du ångrar en makroåtgärd

      Efter att ha utfört ett makro kan du inte återgå till dess verkan genom att trycka på Ctrl + Z eller genom att klicka på Ångra knapp.

      Erfarna VBA-programmerare kan naturligtvis validera inmatningsvärdena och/eller startvillkoren innan makrot tillåts göra några ändringar i ett kalkylblad, men i de flesta fall är det ganska komplicerat.

      Ett enklare sätt är att spara den aktiva arbetsboken från makrokoden. Lägg till nedanstående rad innan du låter makrot göra något annat:

      ActiveWorkbook.Save

      Du kan också visa en meddelanderuta som informerar användaren om att den aktuella arbetsboken sparades precis innan du körde makroets huvudkod.

      Om du (eller dina användare) inte är nöjd med resultatet kan du stänga arbetsboken och sedan öppna den igen.

      Stoppa Excel från att visa en säkerhetsvarning när det inte finns några makron i en arbetsbok

      Har du någonsin hamnat i en situation där Excel hela tiden frågar om du vill aktivera makron, trots att du vet att det inte finns några makron i just den här arbetsboken?

      Den mest sannolika orsaken är att VBA-kod har lagts till och sedan tagits bort, vilket har lämnat en tom modul kvar, vilket utlöser säkerhetsvarningen. För att bli av med den kan du helt enkelt ta bort modulen, spara arbetsboken, stänga den och öppna den på nytt. Om detta inte hjälper, gör följande:

      • För Denna arbetsbok och för varje enskilt blad, öppna fönstret Kod, tryck Ctrl + A för att markera all kod och ta bort den (även om fönstret Kod ser tomt ut).
      • Ta bort alla användarformulär och klassmoduler som arbetsboken innehåller.

      Så skapar och använder du VBA-makron i Excel. Tack för att du läste och hoppas att vi ses igen på vår blogg nästa vecka!

      Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.