Tips og tricks

Få din VBA-kode til at køre meget hurtigere

Sidder du og synes du har lavet et godt makroprogram i Excel ved hjælp af VBA, men føler det kører lidt langsomt? Så kan du tilføje følgende kode, der gør at din makro kører meget hurtigere:


' Gem de aktuelle indstillinger
With Application
  stCalc = .Calculation
  stEvents = .EnableAnimations
  stUpdate = .ScreenUpdating
  stStatus = .StatusBar
End With
stPageBreak = ActiveSheet.DisplayPageBreaks

' Slå indstililngerne fra
With Application
  .Calculation = xlCalculationManual
  .EnableEvents = False
  .ScreenUpdating = False
  .DisplayStatusBar = False
End With
ActiveSheet.DisplayPageBreaks = False


' HER SKRIVER DU DIN KODE


' Sæt indstillingerne til de oprindelige værdier
With Application
  .Calculation = stCalc
  .EnableAnimations = stEvents
  .ScreenUpdating = stUpdate
  .StatusBar = stStatus
End With
ActiveSheet.DisplayPageBreaks = stPageBreak

Hvad betyder de forskellige egenskaber?

De forskellige indstillinger beskrives herunder

Application.Calculation

Denne indstilling svarer til at sætte beregningsmetoden til manuel på fanen Formler [Formulas], så Excel ikke genberegner alle formler, når du fx indsætter flere tusind rækker og formler i et regneark.

Application.EnableEvents

Ved at sætte den indstilling til falsk kalder Excel ikke hændelser som fx OnChange for hver eneste ændring i dit regneark under kørslen af din makro.

Application.ScreenUpdating

Ved at sætte denne indstilling til falsk slipper du for, at Excel hele tiden gentegner skærmen.

Application.DisplayStatusBar

Ved at sætte denne indstilling til falsk undgår du, at Excel opdaterer statuslinjen for hver eneste ændring. Du kan evt. blot undervejs i din kode skrive i statuslinjen, hvad koden er i gang med, som fx Application.StatusBar = “Indlæser data “, og så til sidst sende kontrollen af statuslinjen tilbage til Excel ved at skrive Application.StatusBar = False.

Application.DisplayPageBreaks

Sættes til falsk, da makrohastigheden nedsættes, når der vises sideskift i dit regneark.

Application.DisplayAlerts

Afhængig af din kode, kan det også nogle gange være en fordel at sætte Application.DisplayAlerts til falsk, hvorved du undgår at få vist Excels forskellige dialogbokse – som fx meddelelsen om, at du kan miste data, hvis du sletter et regneark. Her skal du selvfølgelig også huske at slå dem til igen ved at sætte egenskaben til sand.

Lær mere

Du kan lære meget mere om makroer i min bog om VBA-programmering i Excel. Bogen fås både som e-bog og som i hardcopy som kursusmateriale.