Choć wygląda to fajnie, gdy makro VBA manipuluje ekranem, możesz przyspieszyć działanie makra, jeśli wyłączysz (wyłączysz) funkcję ScreenUpdating.
Wyłącz aktualizację ekranu
1. Aby wyłączyć ScreenUpdating, na początku kodu umieść tę linię:
1 | Application.ScreenUpdating = Fałsz |
Włącz aktualizację ekranu
2. Aby ponownie włączyć ScreenUpdating, na końcu kodu umieść ten wiersz:
1 | Application.ScreenUpdating = Prawda |
Przykład aktualizacji ekranu VBA
Twoja procedura będzie wtedy wyglądać tak:
1234567891011 | PodekranAktualizacja_Przykład()Application.ScreenUpdating = Fałsz'Zrób cośZakres("a1").Zakres kopiowania("b1")Zakres("a2").Zakres kopiowania("b2")Zakres("a3").Zakres kopiowania("b3")Application.ScreenUpdating = PrawdaNapis końcowy |
Odświeżanie ekranu
Wyłączenie funkcji ScreenUpdating sprawi, że Twój kod VBA będzie działał DUŻO szybciej, ale także sprawi, że Twoja praca będzie wyglądać bardziej profesjonalnie. Użytkownicy końcowi zazwyczaj nie chcą widzieć zakulisowych działań procedur (zwłaszcza, gdy procedura działa wolno). Ponadto możesz nie chcieć, aby użytkownicy końcowi widzieli funkcje zakulisowe (np. Ukryte arkusze robocze). Zalecam wyłączenie (i ponowne włączenie) funkcji ScreenUpdating w praktycznie wszystkich procedurach.
Czasami jednak chcesz, aby ekran się odświeżył. Aby odświeżyć ekran, musisz tymczasowo ponownie włączyć ScreenUpdating (nie ma polecenia „odśwież” ekranu):
123 | Application.ScreenUpdating = Prawda'Zrób cośApplication.ScreenUpdating = Fałsz |
Ustawienia VBA - kod przyspieszenia
Istnieje kilka innych ustawień, z którymi można się bawić, aby poprawić szybkość kodu.
Wyłączenie automatycznych obliczeń może spowodować OGROMNĄ różnicę w szybkości:
1 | Aplikacja.Obliczenia = xlPodręcznik |
Wyłączenie paska stanu również zrobi małą różnicę:
1 | Application.DisplayStatusBar = False |
Jeśli skoroszyt zawiera zdarzenia, zwykle należy wyłączyć zdarzenia na początku procedury:
1 | Application.EnableEvents = False |
Wreszcie kod VBA może zostać spowolniony, gdy program Excel spróbuje ponownie obliczyć podziały stron (uwaga: nie będzie to miało wpływu na wszystkie procedury). Aby wyłączyć wyświetlanie podziałów stron, użyj tego wiersza kodu:
1 | ActiveSheet.DisplayPageBreaks = Fałsz |