Microsoft Excel Makro VBA (Visual Basic for Applications)

Ta dina kunskaper i Microsoft Excel till ytterligare en nivå genom att lära dig Makro och VBA. Makron effektiviserar ditt dagliga arbete i Excel genom att tidsödande uppgifter kan ersättas med ett enda knapptryck. Du spelar helt enkelt in de kommandon du vill utföra och kan sedan köra inspelningen när du vill. T.ex. en egen utskriftsknapp gör du enkelt som ställer in just dina favoritinställningar för utskrift och skriver ut dina dokument.

När du har kommit igång med att skapa makron genom inspelning är steget inte långt till att skriva dina egna makron med VBA kod. Det kan vara allt från enstaka kodrader som förbättrar dina inspelade makron till avancerade program. När du blivit duktig är det bara fantasin som sätter gränser.

För dig som snabbt vill vidareutvecklas inom makroprogrammering rekommenderar vi Informers kurs i Excel makro VBA. För dig som behöver mer kunskaper i Excel innan du ger dig på makroprogrammering rekommenderar vi Excelkurs (grund) eller Excelkurs (fortsättning), beroende på kunskapsnivå.

Vill du gratis få Informers nyhetsbrev med smarta Exceltips så fyll i din e-mailadress i fältet nedanför.

Tips för dig som vill komma igång med Excel Makro och VBA

Excelkurs Makro VBA: Vart ska makrot lagras?

När du skapar ett makro får du möjligheten att välja vart du vill lagra makrot. För att kunna köra ditt makro på din dator oavsett vilken arbetsbok du för tillfället arbetar med lagrar du makrot i alternativet "Arbetsboken Egna Makron". Om du istället lagrar makrot i alternativet "Denna Arbetsbok" kan du bara köra makrot när du arbetar med just den aktuella arbetsboken. Makrot knyts då till arbetsboken och fungerar även om du byter dator eller mailar filen till en kollega.

Excelkurs Makro VBA: Öppna Visual Basic Editorn för att hitta koden bakom inspelade makron.

Dina inspelade makron lagras som kod som du kan hitta i Visual Basic Editorn. Med kortkommandot Alt+F11 kommer du direkt till Visual Basic Editorn. Koden lägger sig i moduler som du hittar i projektutforskaren till vänster. Du kan lägga till, ta bort eller ändra kod för dina makron om du vill att de ska uppföra sig annorlunda.

Excelkurs Makro VBA: Stänga av skärmuppdateringen.

Om du gör ett makro som skriver mycket till celler eller byter blad ofta finns risken att makrot bli långsamt och trögt. Detta beror på att skärmen uppdaterar sig efter varje kommando som visar något på skärmen. Du kan då skriva "Application.ScreenUpdating = False" som första kodrad i makrot. Detta hindrar skärmen att uppdatera sig efter varje händelse på skärmen. Skriv "Application.ScreenUpdating = True" som sista kodrad för att få skärmen att uppdatera sig igen när makrot har kört klart.

Excelkurs Makro VBA: Kom igång med att skriva VBA kod.

All VBA kod skrivs i Visual Basic Editorn. I projektutforskaren klickar du på det objekt som du vill knyta din kod till och till höger i texteditorn skriver du koden.

VBA kod skrivs oftast i en procedur som placeras i en modul. En procedur kan se ut som nedan:

Sub mitt_forsta_makro()

Sheets("blad2").Select

Sheets("blad2"). Range("A1").Value = "VBA är enkelt!"

End Sub

Här är några syntaxer för att komma igång:

  • Skriver värdet 123 i cell A1:
Range("A1").Value = 123
  • Gå till "blad2":
Sheets("blad2").Select
  • Markera Cell C3:
Cells(3, 3).Select
  • Skriv till den aktiva cellen:
ActiveCell.Value = "VBA är lätt att komma igång med!"
  • Skriv till cellen nedanför aktiv cell:
ActiveCell.Offset(1, 0).Value = "VBA är kul!"
  • Skapa en formel i aktiv cell:
ActiveCell.FormulaR1C1 = "=R1C1+R1C2"

Excelkurs Makro VBA: If Satser

Vill du att ditt makro ska göra olika saker beroende av något eller flera villkor är If satsen användbar. Villkor skrivs som uttryck mellan "If" och "Then" och är antingen sant eller falskt. Om uttrycket är sant så ska det som skrivs efter "Then" utföras. Med "ElseIf" har man möjlighet att testa fler uttryck för att eventuellt få något annat utfört. Man kan i slutet av If Satsen använda sig av "Else" om man vill att något ska utföras om inget av uttrycken varit sant. Exemplet nedan visar hur man kan få en cells text att anta olika färger beroende på vilket tal cellen innehåller:

Ex. Om cell A1 har ett värde högre än 1000 så färgas cellens text röd. Annars om cell A1 har ett värde lägre än 1000 så färgas cellens text blå. Annars färgas cellens text grön.

If Cells(1, 1) > 1000 Then

Cells(1, 1).Font.Color = RGB(255, 0, 0)

ElseIf Cells(1, 1) < 1000 Then

Cells(1, 1).Font.Color = RGB(0, 0, 255)

Else

Cells(1, 1).Font.Color = RGB(0, 255, 0)

End If

Excelkurs Makro VBA: Loopar

För att reppetera en uppgift flera gånger så är Loopar mycket effektivt. En loop kör samma kodrader flera gånger. Om du dessutom använder dig av en variabel som ändrar värde i loopen så kan du få koden att bete sig olika för varje varv. Två vanliga loopar är "For Next" och "Do Until".

"For Next" loopen lämpar sig väl när man vill köra någon kod ett förutbestämt antal gånger. "Do Until" loopen kör samma kod om och om igen tills ett visst uttryck är sant. Se exemplen nedan hur de fungerar.

Ex. "For Next" loop som använder en variabel "i" och avrundar värdet i A kolumnens första tio rader.

For i = 1 To 10

Cells(i, 1) = Round(Cells(i, 1))

Next

Ex. "Do Until" loop som använder sig av en variabel "i" och formaterar cellerna på rad 1 till fetstil. Börjar med kolumn A och fortsätter höger tills det inte finns något skrivet i cellerna längre.

i = 1

Do Until Cells(1, i) = ""

Cells(1, i).Font.Bold = True

i = i + 1

Loop

Som du ser räknas variabeln upp automatiskt i "For Next" loopen medans man i "Do Until" loopen måste räkna upp den i loopen och dessutom sätta dess ingångsvärde innan loopen.

Excelkurs Makro VBA: Gör ett formulär för att säkerställa att rätt information hamnar på rätt plats i arbetsboken.

Har du en arbetsbok där ni är flera som vid olika tillfällen lägger in information så har du säkert upptäckt hur lätt det är att felaktig data kommer in och ibland även hamnar på fel plats. Detta kan lätt undvikas genom att göra ett formulär som lägger in informationen i arbetsboken och kollar så att datan är riktig.

Skapa ett formulär ("UserForm") genom menyn "Infoga" i Visual Basic Editorn. I formuläret kan du sedan lägga in textrutor, alternativknappar, listrutor och mycket annat som förenklar för användaren så att rätt data hamnar på rätt plats.

Prova att skapa ett formulär med en textruta och en kommandoknapp. Dubbelklicka på Kommandoknappen så får du automatiskt en procedur. I denna procedur kan du skriva kod som ska köras när användaren klickar på knappen. Skriv in kodraden "Cells(1, 1) = TextBox1.Value" för att få formuläret att skriva till arbetsboken. Kör formuläret med F5.

Excelkurs Makro VBA: Felsök din kod.

Om ditt makro inte fungerar som det ska och du inte vet vart felet ligger så kan du stega igenom koden. I dialogrutan "Makro" markerar du makrot och väljer "Stega" i stället för "kör". Du kommer då till koden i körläge och kan med F8 tangenten köra en rad i taget tills du märker att koden gör fel.

Excelkurs Makro VBA: Makron och säkerhet.

Tänk på att makron kan skrivas så att det ställer till med problem på din dator. Du bör ha Makroinställningarna så att makron inaktiveras när en ny arbetsbok öppnas. Du kan välja att få ett meddelande om att arbetsboken innehåller makron och kan då aktivera makron om du är säker på att de är säkra.

Vill du lära dig mer om makroprogrammering rekommenderas kursen Excel makro VBA hos Informer Svenska AB.


Hade du nytta av informationen?