Snabba upp dina makron

Dagens makrotips innehåller både gammalt och nytt och handlar om hur vi kan göra våra makron snabbare.

Excel är i grund och botten ett program designat för att ge användaren snabba beräkningar visuellt. Ändrar vi i ett värde i en cell skall andra cellers värden ändras om de är beroende av det värde vi ändrat. Det är utmärkt när vi använder Excel som ett rent kalkylprogram. Däremot fungerar detta som en broms när vi gör större databearbetningar i Excel.

Av det skälet finns det flera saker som bör stängas av när vi arbetar med makron.

Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-Learning i Excel & Office-paketet

Snabba upp makron

De vanliga sakerna att stänga av har sedan länge varit: ScreenUpdating, EnableEvents och Calculation.

ScreenUpdating innebär att skärmen uppdateras för varje liten förändring vi gör. Det finns inget skäl att spilla tid på det.

EnableEvents handlar om att Excel ibland skall reagera på förändringar av ett ark och genomföra andra arbeten. Om detta är aktiverat måste Excel, för varje förändring vi gör av ett ark, granska om det finns något annat arbete som måste utföras. Även det är en onödig bromskloss.

Calculation handlar om att beräkningar uppdateras för varje förändrad cell.

Nedan finns två metoder för att slå av eller på dessa saker:

’ Slå av det som slöar ned makron

Public Sub MacroMode()

Application.ScreenUpdating = False

Application.EnableEvents = False

Application.Calculation = xlCalculationManual

End Sub

’ Återställ allt

Public Sub CalculationMode()

Application.ScreenUpdating = True

Application.EnableEvents = True

Application.Calculation = xlCalculationAutomatic

End Sub

Ytterligare ett steg i att snabba upp makron

Exemplen ovan räcker bra långt när det gäller att öka hastigheten. Det finns dock några saker till att tänka på. Om det finns markeringar som visar sidbrytningar i ett ark så ligger Excel och bevakar dessa sidbrytningar. På samma sätt uppdaterar Excel villkorsstyrda formateringar om vi använder oss av sådana. Om vår arbetsbok brukar sig av sådana saker lönar det sig att även slå av detta. I koden ovan slår vi av saker för hela arbetsboken. Radbrytningar och villkorsstyrd formatering stängs dock av ett ark i taget. När vi skall gå igenom alla ark kan vi använda oss av en ”for each”-loop, som visas i koden nedan. Den går alltså igenom samtliga ark i arbetsboken.

Public Sub MacroMode()

Dim ws As Worksheet

 

Application.ScreenUpdating = False

Application.EnableEvents = False

Application.Calculation = xlCalculationManual

 

’ Gå igenom samtliga ark

For Each ws In ThisWorkbook.Sheets

ws.DisplayPageBreaks = False

ws.EnableFormatConditionsCalculation = False

Next

End Sub

Public Sub CalculationMode()

Dim ws As Worksheet

 

Application.ScreenUpdating = True

Application.EnableEvents = True

Application.Calculation = xlCalculationAutomatic

’ Gå igenom samtliga ark

For Each ws In ThisWorkbook.Sheets

ws.DisplayPageBreaks = True

ws.EnableFormatConditionsCalculation = True

Next

End Sub

 

Hoppas detta tips hjälper dig att snabba upp dina makron.

Associerad lärarledd kurs: VBA och makron i Stockholm City

Associerad e-kurs: VBA och makron

Du gillar kanske också...

Börja prenumerera på Excelbrevet

Ta del av tips & tricks i Excel och Office en gång i månaden helt kostnadsfritt.

Grattis du kommer nu att få Excelbrevet varje månad helt gratis!