Jakkoli to vypadá skvěle, když vaše makro VBA manipuluje s obrazovkou, můžete svému makru pomoci běžet rychleji, pokud vypnete (zakážete) ScreenUpdating.
Zakázat aktualizaci obrazovky
1. Chcete -li deaktivovat ScreenUpdating, na začátek kódu vložte tento řádek:
1 | Application.ScreenUpdating = False |
Povolit aktualizaci obrazovky
2. Chcete-li znovu povolit ScreenUpdating, zadejte na konec kódu tento řádek:
1 | Application.ScreenUpdating = True |
Příklad aktualizace obrazovky VBA
Váš postup pak bude vypadat takto:
1234567891011 | PodobrazovkaUpdating_Example ()Application.ScreenUpdating = False'Dělej něcoRozsah ("a1"). Rozsah kopírování ("b1")Rozsah ("a2"). Rozsah kopírování ("b2")Rozsah ("a3"). Rozsah kopírování ("b3")Application.ScreenUpdating = TrueEnd Sub |
Aktualizace ScreenUpdating
Deaktivace ScreenUpdating zrychlí váš kód VBA mnohem rychleji, ale také bude vaše práce vypadat profesionálněji. Koncoví uživatelé obvykle nechtějí vidět zákulisí akcí vašich procedur (zvláště když procedura běží pomalu). Také možná nebudete chtít, aby koncoví uživatelé viděli funkce v zákulisí (např. Skryté pracovní listy). Doporučuji deaktivovat (a znovu povolit) ScreenUpdating prakticky ve všech vašich postupech.
Existují však případy, kdy chcete, aby se obrazovka obnovila. Chcete -li obnovit obrazovku, budete muset dočasně znovu zapnout ScreenUpdating (neexistuje žádný příkaz „Obnovit“ obrazovku):
123 | Application.ScreenUpdating = True'Dělej něcoApplication.ScreenUpdating = False |
Nastavení VBA - Zrychlete kód
Existuje několik dalších nastavení, se kterými si můžete zlepšit rychlost kódu.
Deaktivace automatických výpočtů může znamenat OBROVSKÝ rozdíl v rychlosti:
1 | Application.Calculation = xlManual |
Deaktivace stavového řádku bude mít také malý rozdíl:
1 | Application.DisplayStatusBar = False |
Pokud váš sešit obsahuje události, měli byste obvykle zakázat události na začátku postupu:
1 | Application.EnableEvents = False |
Nakonec se váš kód VBA může zpomalit, když se Excel pokusí znovu vypočítat konce stránek (Poznámka: nebudou ovlivněny všechny postupy). Chcete -li zakázat zobrazování zlomů stránek, použijte tento řádek kódu:
1 | ActiveSheet.DisplayPageBreaks = False |