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.