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-kurser 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