Så sejt som det ser ud, når du ser din VBA -makro manipulere skærmen, kan du hjælpe din makro med at køre hurtigere, hvis du slukker (deaktiverer) ScreenUpdating.
Deaktiver skærmopdatering
1. For at deaktivere ScreenUpdating, sæt denne linje i begyndelsen af din kode:
1 | Application.ScreenUpdating = Falsk |
Aktiver skærmopdatering
2. For at genaktivere ScreenUpdating, sæt denne linje i slutningen af din kode:
1 | Application.ScreenUpdating = True |
Eksempel på VBA -skærmopdatering
Din procedure ser derefter sådan ud:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Falsk'Gør nogetOmråde ("a1"). Kopieringsområde ("b1")Område ("a2"). Kopieringsområde ("b2")Område ("a3"). Kopieringsområde ("b3")Application.ScreenUpdating = TrueAfslut Sub |
Skærmopdatering Opdater
Deaktivering af ScreenUpdating vil få din VBA -kode til at køre MEGET hurtigere, men det vil også få dit arbejde til at se mere professionelt ud. Slutbrugere ønsker typisk ikke at se handlingerne bag kulisserne i dine procedurer (især når proceduren kører langsomt). Du vil måske heller ikke have, at slutbrugere skal se funktionen bag kulisserne (f.eks. Skjulte regneark). Jeg anbefaler, at du deaktiverer (og genaktiverer) ScreenUpdating i stort set alle dine procedurer.
Der er dog nogle gange, hvor du vil have skærmen opdateret. For at opdatere skærmen skal du midlertidigt tænde for ScreenUpdating (der er ingen kommando "opdater" på skærmen):
123 | Application.ScreenUpdating = True'Gør nogetApplication.ScreenUpdating = Falsk |
VBA -indstillinger - Fremskynd kode
Der er flere andre indstillinger at spille med for at forbedre din kodehastighed.
Deaktivering af automatiske beregninger kan gøre en KÆMPE forskel i hastighed:
1 | Application.Calculation = xlManual |
Deaktivering af statuslinjen vil også gøre en lille forskel:
1 | Application.DisplayStatusBar = Falsk |
Hvis din projektmappe indeholder begivenheder, bør du normalt deaktivere begivenheder i begyndelsen af din procedure:
1 | Application.EnableEvents = Falsk |
Sidst kan din VBA-kode bremses, når Excel forsøger at genberegne sideskift (Bemærk: ikke alle procedurer påvirkes). Brug denne kodelinje til at deaktivere visning af sideskift:
1 | ActiveSheet.DisplayPageBreaks = Falsk |