Wyłącz (lub włącz) automatyczne obliczenia - przykłady kodu VBA

Za każdym razem, gdy aktualizujesz wartość komórki, program Excel przechodzi przez proces ponownego obliczenia skoroszytu. Podczas pracy bezpośrednio w programie Excel chcesz, aby tak się działo przez 99,9% czasu (wyjątkiem jest praca z bardzo dużym skoroszytem). Może to jednak naprawdę spowolnić kod VBA. Dobrą praktyką jest ustawianie obliczeń na ręczne na początku makr i przywracanie obliczeń na końcu makr. Jeśli chcesz ponownie obliczyć skoroszyt, możesz ręcznie polecić programowi Excel obliczenie.

Wyłącz obliczenia automatyczne

Możesz wyłączyć automatyczne obliczanie za pomocą makra, ustawiając je na xlmanual. Użyj następującego fragmentu kodu VBA:

1 Aplikacja.Obliczenia = xlPodręcznik

Włącz ponownie obliczenia automatyczne

Aby ponownie włączyć automatyczne obliczanie za pomocą ustawienia xlAutomatic:

1 Aplikacja.Calculation = xlAutomatic

Zalecam wyłączenie obliczeń automatycznych na samym początku procedury i ponowne włączenie obliczeń automatycznych na końcu. Będzie to wyglądać tak:

Przykład makra wyłączania automatycznych obliczeń

12345678 Sub Auto_Calcs_Example()Aplikacja.Obliczenia = xlPodręcznik'Zrób cośAplikacja.Calculation = xlAutomaticNapis końcowy

Obliczenia ręczne

Gdy obliczenia automatyczne są wyłączone, możesz użyć Oblicz polecenie, aby zmusić program Excel do ponownego obliczenia:

1 Oblicz

Możesz także powiedzieć programowi Excel, aby ponownie obliczył tylko pojedynczy arkusz:

1 Arkusze ("arkusz1").Oblicz

Możesz również powiedzieć VBA, aby ponownie obliczył tylko zakres (kliknij, aby przeczytać nasz artykuł o metodach obliczania VBA)

Oto jak to może wyglądać w makrze:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc()Aplikacja.Obliczenia = xlPodręcznik'Zrób coś„Przelicz”Oblicz„Rób więcej rzeczy”Aplikacja.Calculation = xlAutomaticNapis końcowy

Ustawienia VBA - kod przyspieszenia

Jeśli Twoim celem jest przyspieszenie kodu, powinieneś również rozważyć dostosowanie tych innych ustawień:

Wyłączenie aktualizacji ekranu może mieć ogromną różnicę w szybkości:

1 Application.ScreenUpdating = Fałsz

Wyłączenie paska stanu również zrobi małą różnicę:

1 Application.DisplayStatusBar = False

Jeśli twój skoroszyt zawiera zdarzenia, powinieneś również wyłączyć zdarzenia na początku procedur (aby przyspieszyć kod i zapobiec niekończącym się pętlom!):

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ć DisplayPageBreaks, użyj tego wiersza kodu:

1 ActiveSheet.DisplayPageBreaks = Fałsz

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave