Jeżeli napisałeś skrypt w VBA przetwarzający duże ilości danych i
zauważyłeś, że w trakcie wykonywania blokuje główną aplikację,
powinieneś wprowadzić do swojego kodu instrukcje przerywające jego
wykonywanie. Poszukaj pętli która wykonuje się najdłużej i dodaj do niej
instrukcję DoEvents. Przerywa ona wykonywanie programu
i pozwala na wykonanie innych zadań oczekujących w kolejce. Potem
wykonywana jest dalsza część skryptu.
Oczywiście, instrukcja DoEvents nie musi być wykonywana w każdej pętli. Wygodnie jest użyć następującego kodu:
Spowoduje on wykonanie instrukcji DoEvents co 200 pętli iteratora i.
Najczęściej użycia tej konstrukcji wymagają skrypty wykonujące się długo ze względu na dużą ilość tablic do przeszukania oraz skrypty generujące duże ilości nowych obiektów. Przykładem może być generowanie wielu stron dokumentacji w Visio - taki proces może wymagać nawet 8 godzin pracy skryptu przy generowaniu dokumentacji wielkości 2000 stron :)
Oczywiście, instrukcja DoEvents nie musi być wykonywana w każdej pętli. Wygodnie jest użyć następującego kodu:
If i Mod 200 = 0 Then
DoEvents
End If
Spowoduje on wykonanie instrukcji DoEvents co 200 pętli iteratora i.
Najczęściej użycia tej konstrukcji wymagają skrypty wykonujące się długo ze względu na dużą ilość tablic do przeszukania oraz skrypty generujące duże ilości nowych obiektów. Przykładem może być generowanie wielu stron dokumentacji w Visio - taki proces może wymagać nawet 8 godzin pracy skryptu przy generowaniu dokumentacji wielkości 2000 stron :)
Brak komentarzy:
Prześlij komentarz