Bez ohľadu na to, ako to vyzerá, keď vaše makro VBA manipuluje s obrazovkou, môžete svojmu makru pomôcť rýchlejšie pracovať, ak vypnete (deaktivujete) ScreenUpdating.
Zakázať aktualizáciu obrazovky
1. Ak chcete deaktivovať ScreenUpdating, na začiatku kódu zadajte tento riadok:
1 | Application.ScreenUpdating = False |
Povoliť aktualizáciu obrazovky
2. Ak chcete znova povoliť ScreenUpdating, na konci kódu zadajte tento riadok:
1 | Application.ScreenUpdating = True |
Príklad aktualizácie obrazovky VBA
Váš postup potom bude vyzerať takto:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = False'Urob niečoRozsah („a1“). Rozsah kopírovania („b1“)Rozsah („a2“). Rozsah kopírovania („b2“)Rozsah ("a3"). Rozsah kopírovania ("b3")Application.ScreenUpdating = TrueKoniec pod |
Aktualizácia obrazovky
Vypnutím funkcie ScreenUpdating sa váš kód VBA spustí oveľa rýchlejšie, ale tiež bude vaša práca pôsobiť profesionálnejšie. Koncoví používatelia zvyčajne nechcú vidieť zákulisie akcií vašich procedúr (najmä keď postup prebieha pomaly). Tiež by ste nemali chcieť, aby koncoví užívatelia videli zákulisie (napr. Skryté pracovné listy). Odporúčam deaktivovať (a znova povoliť) ScreenUpdating prakticky vo všetkých vašich postupoch.
Existujú však prípady, keď chcete, aby sa obrazovka obnovila. Na obnovenie obrazovky budete musieť dočasne zapnúť ScreenUpdating (neexistuje žiadny príkaz „obnoviť“ obrazovku):
123 | Application.ScreenUpdating = True'Urob niečoApplication.ScreenUpdating = False |
Nastavenia VBA - Zrýchlite kód
Existuje niekoľko ďalších nastavení, s ktorými môžete hrať, aby ste zvýšili rýchlosť kódu.
Zakázanie automatických výpočtov môže znamenať OBROVSKÝ rozdiel v rýchlosti:
1 | Application.Calculation = xlManual |
Deaktivácia stavového riadka bude mať tiež malý rozdiel:
1 | Application.DisplayStatusBar = False |
Ak váš zošit obsahuje udalosti, mali by ste zvyčajne zakázať udalosti na začiatku postupu:
1 | Application.EnableEvents = False |
Nakoniec sa váš kód VBA môže spomaliť, keď sa Excel pokúsi znova vypočítať konce strán (Poznámka: Neovplyvní to všetky postupy). Ak chcete zakázať zobrazovanie zlomov stránok, použite tento riadok kódu:
1 | ActiveSheet.DisplayPageBreaks = Nepravda |