Funkcja Excel VBA DoEvents
Z pomocą VBA DoEvents możemy sprawić, że kod będzie działał w tle i jednocześnie umożliwi nam pracę z programem Excel i innymi aplikacjami. DoEvents nie tylko pozwala nam pracować z innymi programami, ale także może przerwać działanie kodu.
Funkcja DoEvents przekazuje kontrolę do systemu operacyjnego komputera, na którym pracujemy.

Jak korzystać z funkcji DoEvents?
Gdy wymagania są ogromne, wymagana jest duża ilość kodu VBA. W takich przypadkach program Excel zawiesza się i zatrzymuje na jakiś czas, a nawet czasami przestaje odpowiadać.
Na przykład spójrz na poniższy kod.
Kod:
Sub DoEvents_Example1 () Dim i As Long For i = 1 do 100000 Range („A1”). Value = i Next i End Sub

Powyższy kod wstawi numery seryjne od 1 do 100 000. Wykonanie zadania z łatwością zajmie więcej niż minutę. Podczas wykonywania program Excel zawiesza się przez znaczny czas, aby ukończyć zadanie. W tym czasie program Excel wyświetla komunikat „Excel nie odpowiada”.

Ponadto nie możemy uzyskać dostępu do arkusza, nad którym pracujemy. To frustrujące, więc w jaki sposób możemy udostępnić arkusz programu Excel do pracy, gdy kod działa za ekranem.
Można to osiągnąć, dodając funkcję VBA DoEvents .
Kod:
Sub DoEvents_Example1 () Dim i As Long For i = 1 do 100000 Range („A1”). Value = i DoEvents Next i End Sub

W momencie dodania funkcji DoEvents w kodzie, możemy uzyskać dostęp do arkusza programu Excel.

Z powyższego widać, że kod jest uruchomiony, ale mamy dostęp do arkusza.
Przerwij działanie kodu
Gdy kod działa za ekranem, możemy dodawać wiersze, kolumny i usuwać to samo, możemy zmienić nazwę arkusza, a także możemy zrobić wiele innych rzeczy. W momencie dodania DoEvents sprawia, że kod VBA działa szybko i pozwala nam stwierdzić, że wspomniane zadanie działa samodzielnie.
- Jednym z niebezpieczeństw związanych z funkcją DoEvents jest zmiana arkuszy roboczych lub skoroszytów i nadpisanie aktywnych wartości arkusza.
- Innym niebezpieczeństwem jest to, że jeśli wprowadzimy jakąkolwiek wartość do komórki, wykonanie kodu zostanie zatrzymane, a nawet nas nie powiadamia.