Snabbare makron

När du skapar ditt makro så finns det vissa faktorer som gör att makrot tar lång tid att köra. Först och främst är det bra att gå igenom varje rad i din kod och se så att där inte finns något som inte har någon nytta, speciellt om du använder "Spela in makro". Det finns en rad andra tips som jag tänkte gå igenom nämligen:

  • Application.DisplayAlerts

  • Application.ScreenUpdating

  • Application.Calculation

  • Application.DisplayStatusBar

  • Använd en rad istället för många

01/ Application.ScreenUpdating

Sätt FALSE i början och TRUE i slutet av ditt makro. Innebär att om du inte kommer se vad ditt makro gör, vilket kommer göra att det utförs snabbare

Application.ScreenUpdating = False

"Kod"

Application.ScreenUpdating = True

02/ Application.DisplayAlerts

Sätt FALSE i början och TRUE i slutet av ditt makro. Innebär att om du tar bort instruktioner och varningsmeddelanden medan ett makro körs; när ett meddelande kräver ett svar så väljer Excel standardsvaret

Application.DisplayAlerts = False

"Kod"

Application.DisplayAlerts = True

03/ Application.Calculation

Sätt xlCalculationManual i början och xlCalculationAutomatic i slutet av ditt makro. Varje gång en cell som används i en formel ändras så uppdateras hela Excel. Det räcker med att hela Excel uppdateras en gång efter att makrot körs.

Application.Calculation = xlCalculationManual

"Kod"

Application.Calculation = xlCalculationAutomatic

04/ Application.DisplayStatusBar

Sätt FALSE i början och TRUE i slutet av ditt makro. Innebär att om du tar bort funktionen att Excel hela tiden uppdaterar "Status bar", d.v.s. det längst ned med medelvärde, antal, summa, zoom-procent o.s.v.

Application.DisplayStatusBar = False

"Kod"

Application.DisplayStatusBar = True

05/ Använd en rad istället för fler

Använder du exempelvis "Spela in makro" så kommer den göra allt ett steg i taget, men ändrar du lite i kodsträngen så är det möjligt att minimera antalet moment och således göra ditt makro snabbare.

Nedan ger samma resultat men skrivs längst ned på en rad istället för fem

Range("A1:B5").Select

Selection.Copy

Sheets("ToSheet").Select

Range("B2").Select

ActiveSheet.Paste

Range("A1:B5").Copy Destination:=Worksheets("ToSheet").Range("B2")

Excel med Rickard

Excel med Rickard