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å...