Jak tworzyć zdarzenia na poziomie aplikacji w Excel VBA

Spisie treści:

Anonim

Zdarzenia na poziomie aplikacji działają w całej aplikacji (w tym dokumencie Excel). Ale aktywacja zdarzenia aplikacji nie jest tak łatwa, jak tworzenie zdarzeń skoroszytu lub arkusza roboczego. Ale zapewniam, że to też nie jest takie trudne. W tym artykule nauczymy się w kilku prostych krokach tworzyć i używać zdarzenia aplikacji w Excel VBA.

Krok 1: Utwórz obiekt zdarzenia w module klasy

Aby stworzyć obiekt zdarzenia, musimy użyć modułu class.

  • Wstaw moduł zajęć. Nazwij to, jak chcesz. Nazwałem go MyAppEvents.
  • Zdefiniuj zmienną zdarzenia typu Application za pomocą słowa kluczowego WithEvents.
    Private WithEvents myApp jako aplikacja
  • Zainicjuj to zdarzenie w podprogramie class_initialize().
    Z menu po lewej wybierz klasę. Następnie w prawym górnym menu rozwijanym wybierz inicjalizuj.

    Private Sub Class_Initialize() Ustaw myApp = Sub End aplikacji
  • Teraz zdefiniuj zdarzenia, których chcesz użyć. Z menu w lewym górnym rogu wybierz obiekt zdarzenia. Wszystkie dostępne procedury obsługi zdarzeń będą dostępne w menu rozwijanym w prawym górnym rogu. Wybierz to, czego potrzebujesz i zdefiniuj, co chcesz zrobić, gdy to zdarzenie zostanie wyzwolone.
    Używam zdarzenia SheetActivate. Za każdym razem, gdy użytkownik przełączy się między arkuszami dowolnego otwartego skoroszytu, wyświetli nazwę skoroszytu i wybrany przez użytkownika arkusz.

    Private Sub myApp_SheetActivate(ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub 

Tutaj możesz zdefiniować tyle zdarzeń, ile chcesz.

Wydarzenia nie zaczną działać od razu. To był pierwszy krok. Ponieważ jest to moduł klasy, musimy utworzyć jego obiekt, aby aktywować zdarzenia.

Teraz musimy tylko rozpocząć te zdarzenia od normalnego podprogramu.

Krok 2: Utwórz podprogram startowy zdarzenia w module normalnym

Teraz mamy klasę eventową. Musimy tylko stworzyć obiekt tej klasy i zainicjować go. Po uruchomieniu tego podprogramu wszystkie zdarzenia zdefiniowane w klasie zdarzeń zaczną działać.

  • Włóż normalny moduł.
  • Zdefiniuj zmienną klasy, którą utworzyłeś.
    Prywatna aplikacja jako MyAppEvents
  • Zainicjuj go w podprogramie. Możesz go nazwać, jak chcesz.
    Private Sub StartEvents() Ustaw AppE = New MyAppEvents End Sub
  • Uruchom ten kod za pomocą klawisza F5. Opcjonalnie możesz przypisać to makro do przycisku w arkuszu, jeśli chcesz uruchomić zdarzenia z arkusza.

I gotowe. Teraz za każdym razem, gdy przełączysz arkusze, pojawi się okno komunikatu z nazwą skoroszytu i arkusza, o ile kod zawierający skoroszyt jest otwarty.

Czy było ciężko? Nie sądzę. Daj mi znać, co myślisz w sekcji komentarzy poniżej.

Włączanie i wyłączanie zdarzeń aplikacji VBA

Po uruchomieniu makra w normalnym module będzie ono wyzwalane zawsze, dopóki nie zamkniesz skoroszytu zawierającego zdarzenia. Ale możesz chcieć, aby włączały i wyłączały je zgodnie z twoją wolą. Można to zrobić na dwa sposoby.

  • Unieważnij obiekt zdarzenia
  • Ustaw EnableEvents na False

1. Unieważnienie obiektu zdarzenia

W osobnym podprogramie ustaw obiekt zdarzenia na Nothing

Private Sub StopEvents() Set AppE = Nic Koniec Sub

Po uruchomieniu tego kodu zdarzenia przestaną działać. Możesz umieścić go w przycisku w arkuszu, aby zatrzymać zdarzenia. Teraz będziesz mieć dwa przyciski do uruchamiania i zatrzymywania tych konkretnych zdarzeń. Po prostu zatrzyma zdarzenia utworzone przez obiekt AppE.

2. Ustaw EnableEvents na False

Drugą metodą jest wyłączenie zdarzeń. Aby wszystkie zdarzenia były niemożliwe do wyłapania, ustawiamy właściwość EnableEvents klasy Application na Fałszywe.

Private Sub StopEvents() Application.EnableEvents= False End Sub

Powyższy kod wyłączy wszystkie zdarzenia. Nawet domyślne wydarzenia w programie Excel. Nie będą działać, dopóki nie uruchomisz ich ponownie. Nawet jeśli uruchomisz podprogram StartEvents() (powyżej), zdarzenie nie zadziała. Aby wszystkie zdarzenia działały ponownie, musisz ponownie ustawić właściwość EnableEvents na True.

Jeśli więc chcesz, aby Twoje wydarzenia działały za każdym razem, gdy je uruchamiasz, dodaj ten wiersz kodu w sub.

Private Sub StartEvents() Application.EnableEvents = True Ustaw AppE = New MyAppEvents End Sub

Uruchamianie zdarzeń aplikacji niestandardowej za każdym razem, gdy otwierany jest skoroszyt

Jeśli tworzysz narzędzie dla użytkownika końcowego, możesz chcieć, aby zdarzenia działały automatycznie. W takim przypadku możesz umieścić starter zdarzenia w obiekcie Workbook za pomocą zdarzenia Workbook_open() zamiast w normalnym module. Spowoduje to zainicjowanie obiektu zdarzenia zaraz po otwarciu skoroszytu zawierającego zdarzenia.

Więc tak, w ten sposób można wykorzystać zdarzenie aplikacji w programie Excel. Daj mi znać, czy było to wystarczająco wyjaśniające i pomogło ci zrozumieć zdarzenia na poziomie aplikacji w Excel VBA w sekcji komentarzy poniżej. Jeśli masz coś do dodania, zapisz to też. Możesz zadać pytania związane z tym artykułem lub dowolnym innym tematem związanym z programem Excel VBA w sekcji komentarzy poniżej.

Pobierz plik roboczy poniżej:

Zdarzenia w Excel VBA | W programie Excel istnieje siedem typów zdarzeń. Każde wydarzenie dotyczy innego zakresu. Zdarzenie aplikacji dotyczy na poziomie skoroszytu. Skoroszyt na poziomie arkuszy. Zdarzenie arkusza roboczego na poziomie zakresu.

Zdarzenia arkusza roboczego w Excel VBA|Zdarzenia arkusza roboczego są naprawdę przydatne, gdy chcesz, aby makra były uruchamiane po wystąpieniu określonego zdarzenia w arkuszu.

Zdarzenia ze skoroszytu przy użyciu VBA w programie Microsoft Excel | Zdarzenia skoroszytu działają na całym skoroszycie. Ponieważ wszystkie arkusze są częścią skoroszytu, te zdarzenia również na nich działają.

Zapobiegaj wykonywaniu automakro/makro zdarzeń za pomocą VBA w programie Microsoft Excel| Aby zapobiec uruchomieniu makra auto_open użyj klawisza Shift.

Zdarzenia obiektów wykresu przy użyciu VBA w programie Microsoft Excel| Wykresy są złożonymi obiektami i dołączasz do nich kilka komponentów. Do tworzenia zdarzeń wykresu używamy modułu Class.

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.