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 czasem nawet przestaje odpowiadać.
Możesz pobrać ten szablon VBA DoEvents Excel tutaj - Szablon VBA DoEvents ExcelNa 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 może zająć 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 jako „Excel nie odpowiada”.
Ponadto nie możemy uzyskać dostępu do arkusza, nad którym pracujemy. To jest 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 góry widać, że kod działa, ale mamy dostęp do arkusza.
Przerwij działanie kodu
Gdy kod jest uruchomiony 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. Dodanie DoEvents sprawia, że kod vba działa szybko i pozwala stwierdzić, że wspomniane zadanie działa samodzielnie.
- Jednym z niebezpieczeństw związanych z funkcją DoEvents jest to, że gdy przełączamy arkusze lub skoroszyty, nadpisuje ona wartości aktywnego arkusza.
- Innym niebezpieczeństwem jest to, że jeśli wprowadzimy jakąkolwiek wartość do komórki, wykonanie kodu zatrzymuje się i nawet nas nie powiadamia.