Zdarzenia arkusza roboczego w Excel VBA

Spisie treści:

Anonim

Możesz chcieć uruchomić fragment makra / VBA, gdy komórka zmieni swoją wartość, gdy nastąpi dwukrotne kliknięcie, po zaznaczeniu arkusza itp. We wszystkich tych przypadkach używamy obsługi zdarzeń arkusza roboczego. Event Handler pomaga nam uruchamiać kod VBA za każdym razem, gdy wystąpi określone zdarzenie.

W tym artykule dowiemy się pokrótce o każdym programie obsługi zdarzeń arkusza roboczego.

Co to jest program obsługi zdarzeń arkuszy roboczych?

Procedura obsługi zdarzeń w arkuszu jest podprogramem, który jest lokalny dla modułu arkusza.

Gdzie napisać kod obsługi zdarzeń arkusza roboczego?

Zdarzenia arkusza roboczego są zapisywane tylko w obiektach arkusza. Jeśli napiszesz zdarzenie arkusza w jakimś module lub module klasy, nie będzie błędu, ale po prostu nie będą działać.

Aby pisać w obiekcie arkusza. Kliknij go dwukrotnie lub kliknij prawym przyciskiem myszy i kliknij kod widoku. Zostanie wyświetlony obszar do wpisywania kodu.

Jak napisać kod dla konkretnego zdarzenia w arkuszu?

Teraz, gdy jesteś w trybie edycji, w menu rozwijanym w lewym górnym rogu zobaczysz ogólne. Kliknij menu rozwijane i wybierz arkusz. Teraz w menu rozwijanym w prawym górnym rogu pojawią się wszystkie wydarzenia. Wybierz to, czego potrzebujesz, a kod szkieletowy tego wydarzenia zostanie dla Ciebie napisany.

Każde zdarzenie ma ustaloną nazwę procedury. To są zastrzeżone nazwy podprogramów. Nie możesz ich używać do innych podprogramów na arkuszu. W module będą działać jak normalny podprogram.

Ważny: Każdy podprogram z tej listy będzie działał w określonym zdarzeniu.
Jeden typ procedury zdarzeń arkusza roboczego można zapisać tylko raz na jednym arkuszu. Jeśli napiszesz dwie takie same procedury obsługi zdarzeń na jednym arkuszu, spowoduje to błąd i żadna z nich nie zostanie wykonana. Oczywiście błędem będą niejednoznaczne podprogramy.

Dowiedzmy się pokrótce o każdym z wydarzeń.

1. tenWorksheet_Change (ByVal Target jako zakres)Wydarzenie

To zdarzenie jest wyzwalane, gdy wprowadzimy jakąkolwiek zmianę w arkuszach zawierających (z wyłączeniem formatowania). Jeśli chcesz coś zrobić, jeśli jakakolwiek zmiana zostanie dokonana w całym arkuszu, kod będzie wyglądał następująco:

Private Sub Worksheet_Change(ByVal Target As Range) 'zrób coś Msgbox "zrobiłeś coś" End Sub 

„Cel” to zawsze aktywna komórka.

Inny przykład: możesz chcieć umieścić datę i godzinę w komórce B1, jeśli zmieni się A1. W takim przypadku używamy zdarzenia worksheet_change. Kod wyglądałby tak:

Private Sub Worksheet_Change (ByVal Target As Range) Jeśli Cel.Address = "$A$1" Następnie Range("B1").Value2 = Format(Now(), "hh:mm:ss") End If End Sub 

Będzie to celować tylko w komórkę A1.

Jeśli chcesz kierować reklamy na zakres, użyj poniższego przykładu:

Uruchom makro, jeśli w arkuszu w określonym zakresie wprowadzono jakiekolwiek zmiany

2. tenWorksheet_SelectionChange(ByVal Target jako zakres)Wydarzenie

Jak sama nazwa wskazuje, to zdarzenie jest wyzwalane, gdy zmienia się wybór. Innymi słowy, jeśli kursor znajduje się w komórce A1 i przesunie się do innej komórki, kod w tym podprogramie zostanie uruchomiony.

Poniższy kod zmieni kolor aktywnych komórek, jeśli się zmieni i jeśli jest to wiersz parzysty.

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub 

Teraz, gdy mój kursor przesunie się w równym rzędzie, będzie kolorowy. Nieparzyste komórki wierszy zostaną oszczędzone.

Inny przykład zdarzenia Worksheet_SelectionChange:

Najprostszy kod VBA do podświetlania bieżącego wiersza i kolumny za pomocą

3. ten Arkusz_Aktywuj() Wydarzenie

To zdarzenie jest wyzwalane, gdy aktywuje się kod zdarzenia zawierający arkusz. Kod szkieletowy tego wydarzenia to:

Private Sub Worksheet_Activate() End Sub 

Prostym przykładem jest pokazanie nazwy arkusza po jego wybraniu.

Private Sub Worksheet_Activate() MsgBox "Jesteś na " & ActiveSheet.Name End Sub 

Jak tylko pojawisz się na arkuszu zawierającym ten kod, zdarzenie zostanie uruchomione i zostanie wyświetlony komunikat „Jesteś w arkuszu nazwa” (w moim przypadku arkusz 2).

4. ten Arkusz_Dezaktywuj() Wydarzenie

To zdarzenie jest wyzwalane po opuszczeniu kodu zawierającego arkusz. Innymi słowy, jeśli chcesz coś zrobić, na przykład ukrywać wiersze lub cokolwiek po opuszczeniu arkusza, użyj tego zdarzenia VBA. Składnia to:

Private Sub Worksheet_Deactivate() 'Twój kod' Koniec Sub 

Poniższe przykładowe zdarzenie Worksheet_Deativate po prostu wyświetli komunikat, że opuściłeś arkusz główny, gdy opuścisz ten arkusz.

Private Sub Worksheet_Deactivate() MsgBox "Opuściłeś arkusz główny" End Sub 

5. ten Arkusz_Przed usunięciem()Wydarzenie

To zdarzenie jest wyzwalane po potwierdzeniu usunięcia arkusza zawierającego zdarzenie VBA. Składnia jest prosta:

Private Sub Worksheet_BeforeDelete() End Sub 

Poniższy kod zapyta Cię, czy chcesz skopiować zawartość arkusza o usunięciu.

Private Sub Worksheet_BeforeDelete() ans = MsgBox("Czy chcesz skopiować zawartość tego arkusza do nowego arkusza?", vbYesNo) If ans = True Then 'kod do skopiowania End If End Sub 

6. ten Worksheet_BeforeDoubleClick(ByVal Target jako zakres, Anuluj jako Boolean) Wydarzenie

To zdarzenie jest wyzwalane po dwukrotnym kliknięciu komórki docelowej. Składnia tego zdarzenia arkusza roboczego VBA to:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Anuluj jako Boolean) End Sub 

Jeśli nie ustawisz docelowej komórki lub zakresu, będzie on uruchamiany przy każdym dwukrotnym kliknięciu na arkuszu.
Zmienna Cancel jest zmienną logiczną. Jeśli ustawisz wartość True, domyślna akcja nie zostanie wykonana. Oznacza to, że dwukrotne kliknięcie komórki nie przejdzie do trybu edycji.
Poniższy kod spowoduje wypełnienie komórki kolorem po dwukrotnym kliknięciu dowolnej komórki.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub 

Poniższy kod jest skierowany do komórki A1. Jeśli jest już wypełniony określonym kolorem, kolor zniknie. Jest podobny do przycisku lub pola wyboru.

Subskrypcja prywatna Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then Target.Interior.ColorIndex = xlColorIndexNone Else Target.Interior.ColorIndex = 4 End If Zakończ, jeśli Zakończ Sub 

7. ten Worksheet_BeforeRightClick(ByVal Target jako zakres, Anuluj jako Boolean) Wydarzenie

To zdarzenie jest wyzwalane, gdy klikniesz prawym przyciskiem myszy komórkę docelową. Składnia tego zdarzenia arkusza roboczego VBA to:

Subskrypcja prywatna Arkusz_Przed kliknięciem prawym przyciskiem(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 'twój kod ' End Sub 

Poniższy kod wypełni komórkę wartością 1, jeśli klikniesz ją prawym przyciskiem myszy. Nie wyświetli domyślnych opcji kliknięcia prawym przyciskiem myszy, ponieważ ustawiliśmy operator „Anuluj” na True.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Anuluj As Boolean) Cancel = True Target.Value = 1 End Sub 

8. ten Arkusz_Oblicz() Wydarzenie

Jeśli chcesz, aby coś się wydarzyło, gdy Excel oblicza arkusz, użyj tego zdarzenia. Uruchomi się, gdy program Excel obliczy arkusz. Składnia jest prosta:

Private Sub Worksheet_Calculate() ' 'twój kod ' Koniec Sub 

6. ten Worksheet_FollowHyperlink (ByVal Target jako hiperłącze)Wydarzenie

Ta procedura zostanie uruchomiona po kliknięciu hiperłącza w arkuszu. Podstawowa składnia tego programu obsługi zdarzeń to:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ' 'twój kod ' End Sub 

Jeśli chcesz, możesz ustawić docelowe hiperłącze. Jeśli nie ustawisz docelowego hiperłącza, zostanie on wykonany po kliknięciu dowolnego hiperłącza w kodzie zawierającym arkusz.

Więc tak, to były podstawowe zdarzenia z arkusza roboczego, które będą przydatne, jeśli o nich wiesz. Poniżej znajduje się kilka powiązanych artykułów, które możesz przeczytać.

Jeśli masz jakiekolwiek wątpliwości dotyczące tego artykułu lub innego artykułu związanego z programem Excel / VBA, daj nam znać w sekcji komentarzy poniżej.

Używanie zdarzenia zmiany arkusza do uruchamiania makra po wprowadzeniu jakiejkolwiek zmiany| Aby uruchomić makro za każdym razem, gdy arkusz się zaktualizuje, używamy Zdarzeń arkusza roboczego VBA.

Uruchom makro, jeśli w arkuszu w określonym zakresie wprowadzono jakiekolwiek zmiany| Aby uruchomić kod makra, gdy zmieni się wartość w określonym zakresie, użyj tego kodu VBA. Wykrywa każdą zmianę dokonaną w określonym zakresie i uruchamia zdarzenie.

Najprostszy kod VBA do podświetlania bieżącego wiersza i kolumny za pomocą | Użyj tego małego fragmentu kodu VBA, aby podświetlić bieżący wiersz i kolumnę arkusza.

Popularne artykuły:

50 skrótów Excela, które zwiększą Twoją produktywność | Przyspiesz swoje zadanie. Te 50 skrótów przyspieszy pracę w programie Excel.

Funkcja WYSZUKAJ.PIONOWO w programie Excel | Jest to jedna z najczęściej używanych i popularnych funkcji programu Excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.

LICZ.JEŻELI w Excelu 2016 | Policz wartości z warunkami za pomocą tej niesamowitej funkcji. Nie musisz filtrować danych, aby policzyć konkretną wartość. Funkcja Countif jest niezbędna do przygotowania deski rozdzielczej.

Jak korzystać z funkcji SUMIF w programie Excel? | To kolejna ważna funkcja deski rozdzielczej. Pomaga to zsumować wartości w określonych warunkach.