Wydarzenia w Excel VBA

Spisie treści:

Anonim

Ogólnie rzecz biorąc, wydarzenia to nic innego jak dzieje się coś. Tak samo jest w Excelu. Ale czasami chcemy, aby coś wydarzyło się automatycznie, gdy nastąpi określone zdarzenie. Aby coś zrobić, gdy w programie Excel wydarzy się określone zdarzenie, używamy zdarzenia Excel VBA.

Programy obsługi zdarzeń Excel VBA: typy

W Excel VBA istnieje głównie 7 rodzajów obsługi zdarzeń.

  1. Zdarzenia aplikacji
  2. Wydarzenia ze skoroszytu
  3. Wydarzenia w arkuszu roboczym
  4. Wydarzenia na wykresie
  5. Zdarzenia formularza użytkownika
  6. Kombinacja klawiszy Zdarzenia (zdarzenia związane ze skrótami klawiszowymi)
  7. Wydarzenia na czas

Zbadajmy je jeden po drugim.

Zdarzenia aplikacji w Excelu

Zdarzenia na poziomie aplikacji są wyzwalane, gdy aplikacja (Excel) jest zamknięta, otwarta, aktywowana, chroniona, niechroniona itp.

Na poziomie aplikacji istnieje ponad 50 rodzajów zdarzeń. Nie możemy więc omówić ich wszystkich tutaj.

Zakres Zdarzenia Aplikacyjnego:

Te zdarzenia będą działać we wszystkich skoroszytach programu Excel, o ile kod zawierający skoroszyt jest otwarty. Na przykład, jeśli utworzono zdarzenie na poziomie aplikacji informujące o nazwie arkusza aktywnego arkusza, zostanie ono wywołane przy każdej aktywacji arkusza dowolnego skoroszytu.

Jak utworzyć procedurę obsługi zdarzeń aplikacji w VBA?

Tworzenie zdarzeń aplikacji jest nieco skomplikowane. Wyjaśniłem to tutaj szczegółowo na przykładzie.

Zdarzenia skoroszytu w programie Excel

Zakres wydarzenia ze skoroszytu

Zdarzenia skoroszytu działają w całym skoroszycie zawierającym kod. Zdarzenie może otwierać, zamykać, aktywować, dezaktywować skoroszyt, zmieniać arkusz itp.

Gdzie pisać zdarzenia ze skoroszytu?

Zdarzenia skoroszytu są zapisywane w obiekcie skoroszytu.

Jak napisać wydarzenie Workbook?

Wykonaj następujące kroki:

1. W eksploratorze projektów kliknij dwukrotnie obiekt skoroszytu. Zostanie wyświetlony obszar wpisywania kodu. Wszystkie zdarzenia w zakresie skoroszytu są zapisywane tutaj.

2. W lewym górnym rogu obszaru pisania kodu zobaczysz rozwijane menu. Kliknij menu rozwijane i wybierz skoroszyt. Domyślnie jest ogólne.

3. Po wybraniu skoroszytu z lewego menu rozwijanego domyślnie wstawi on podprogram zdarzenia workbook_open. Ale jeśli chcesz użyć innego podprogramu zdarzenia, wybierz go z menu rozwijanego w prawym górnym rogu. Wyświetli listę wszystkich dostępnych zdarzeń ze skoroszytu.

4. Wybierz wydarzenie, którego potrzebujesz. Na potrzeby przykładu wybieram zdarzenie SheetActivate. To zdarzenie jest uruchamiane przy każdym zaznaczeniu arkusza w kodzie zawierającym skoroszyt.

Przykład zdarzenia ze skoroszytu:To jest prosty przykład. Chcę tylko pokazać nazwę aktywowanego arkusza roboczego. W tym celu po prostu używam zdarzenia SheetActivate w obiekcie Workbook.

Subskrypcja prywatna Workbook_SheetActivate(ByVal Sh jako obiekt) MsgBox Sh.Name i „Aktywowany” End Sub 

Teraz za każdym razem, gdy zostanie aktywowany nowy arkusz w tym skoroszycie, to zdarzenie zostanie uruchomione. Zostaniesz poproszony o masaż, aktywowana nazwa arkusza.

Wiem, że ten kod nie jest zbyt przydatny, ale możesz umieścić dowolny zestaw instrukcji między tymi wierszami. Możesz wywoływać funkcje i podprogramy z samych modułów.

Zdarzenia arkusza kalkulacyjnego w Excelu

Wszystkie zdarzenia kierowane na zakres i komórki są zapisywane w zdarzeniach arkusza roboczego. Możesz przeczytać o zdarzeniach w arkuszu roboczym tutaj.

Zakres zdarzenia arkusza roboczego

Zdarzenia arkusza są kierowane do zakresów i komórek określonego arkusza. Zdarzenie arkusza zostanie wywołane w przypadku zdarzeń, które mają miejsce w określonym arkuszu (arkusz zawierający kod).

Gdzie są zapisywane zdarzenia arkusza roboczego?

Zdarzenia arkusza są zapisywane w obiekcie arkusza.

Jak napisać kod obsługi zdarzeń w arkuszu?

To to samo, co zdarzenia ze skoroszytu.

1. W eksploratorze projektów kliknij dwukrotnie obiekt arkusza. W arkuszu zostanie wyświetlony obszar do wpisywania kodu. Wszystkie zdarzenia w zakresie arkusza są zapisywane w tych arkuszach.

2. W lewym górnym rogu obszaru pisania kodu zobaczysz rozwijane menu. Kliknij menu rozwijane i wybierz arkusz. Domyślnie jest ogólne.

3. Po wybraniu arkusza roboczego z lewego menu rozwijanego domyślnie zostanie wstawiony podprogram zdarzenia worksheet_selectionChange. Ale jeśli chcesz użyć innego podprogramu zdarzenia, wybierz go z menu rozwijanego w prawym górnym rogu. Wyświetli listę wszystkich dostępnych zdarzeń w arkuszu.

4. Wybierz wydarzenie, którego potrzebujesz. Na potrzeby przykładu wybieram zdarzenie Worksheet_SelectionChange(ByVal Target As Range). Zdarzenie to uruchamia się przy każdej zmianie wyboru zakresu na arkuszu.

Przykładowy arkusz roboczy

Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "Jesteś w " & Target.Address End Sub 

Powyższe zdarzenie jest zapisane w arkuszu 1 skoroszytu. To zdarzenie pokaże adres zakresu, który wybrałeś w arkuszu zawierającym kod, za każdym razem, gdy zmienisz wybór zakresu. Poniżej znajduje się kilka przykładów zdarzeń w arkuszu.

Zdarzenia arkusza roboczego są najczęściej używane w dynamicznych pulpitach nawigacyjnych. Możesz używać komórek jako pól wyboru lub aktywnych wyborów, aby Twoje pulpity nawigacyjne były dynamiczne.

Poniżej znajduje się kilka przykładów zdarzeń w arkuszu.

Używanie zdarzenia zmiany arkusza do uruchamiania makra po wprowadzeniu jakiejkolwiek zmiany

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

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

Wydarzenia na wykresie

W programie Excel istnieją dwa rodzaje zdarzeń wykresu. Jednym z nich są zwykle osadzone wykresy, które szczegółowo omówiliśmy tutaj. Przypomina to zdarzenia na poziomie aplikacji.

Innym jest arkusz wykresu. Są to specjalne arkusze, które zawierają tylko wykresy połączone z danymi w niektórych innych arkuszach.

Jeśli chodzi o wydarzenia, są one bardzo podobne do zwykłych prześcieradeł.

Gdzie pisać wykresy wydarzeń?

Zdarzenia wykresu są zapisywane w obiekcie wykresu. Wystarczy dwukrotnie kliknąć arkusz wykresu, aby otworzyć obszar kodu.

Jak pisać wydarzenia na wykresach?

Wykonaj następujące kroki:

1. W eksploratorze projektu kliknij dwukrotnie obiekt arkusza wykresu, aby otworzyć obszar kodu. Wszystkie zdarzenia związane z arkuszem wykresu są opisane tutaj.

2. W prawym górnym rogu obszaru kodu zobaczysz zwykłe menu rozwijane. Wybierz wykres z tego menu.

3. W prawym rogu wybierz żądane wydarzenie.

Na przykład, jeśli chcę coś zrobić, gdy tylko użytkownik wybierze wykres, użyję zdarzenia Chart_Activate.

Przykład: Zdarzenie arkusza wykresu

Private Sub Chart_Activate() MsgBox "Wykres jest odświeżony" End Sub 

Powyższy fragment kodu zostanie uruchomiony, gdy tylko wybierzesz arkusz wykresu. Tutaj pokaże tylko komunikat, że wykres jest odświeżony, ale możesz wiele zrobić. Tak jak możesz dynamicznie wybrać zakres danych dla wykresu, zanim wyświetlisz ten komunikat.

Poniżej kilka przykładów zdarzeń na wykresach:

Zdarzenia UserForm

Zdarzenie formularza użytkownika jest takie samo jak inne zdarzenia. Istnieje kilka zdarzeń, które występują w formularzu użytkownika. Możesz użyć tych zdarzeń, aby wywołać zdarzenia.

Gdzie pisać zdarzenia User Form?

Aby napisać zdarzenie formularza użytkownika, musisz najpierw wstawić UserForm.

1. Następnie kliknij prawym przyciskiem myszy UserForm i kliknij kod widoku. Teraz otworzy się obszar kodu.

2. Teraz w lewym górnym rogu wybierz Formularz użytkownika.

3. Z lewego menu wybierz zdarzenie, którego chcesz użyć do wyzwolenia wykonania kodu.

4. Wpisz żądany kod pomiędzy kodem zdarzenia kodu.

Poniższy przykład pokazuje po prostu komunikat, gdy formularz użytkownika jest aktywowany.

Private Sub UserForm_Activate() MsgBox "Witam, proszę dokładnie zweryfikować swoje dane." Napis końcowy 

Powyższy kod pokazuje tylko komunikat, ale możesz użyć tego zdarzenia, aby wstępnie wypełnić formularz niektórymi domyślnymi danymi wejściowymi lub użyć informacji z arkusza, aby go wypełnić.

Wydarzenie Onkey

Zdarzenia te są wyzwalane po naciśnięciu określonego klawisza lub kombinacji klawiszy. Przypomina to tworzenie własnych na skróty.

Zdarzenie OnKey jest w rzeczywistości funkcją lub metodą klasy Application, która ma dwa argumenty, jak pokazano poniżej:

Aplikacja.onkey Klucz, ["procedura"]

ten klucz to klawisz lub kombinacja klawiszy, których chcesz użyć jako wyzwalacza.

"Procedura" jest opcjonalnym argumentem będącym ciągiem nazwy procedury lub makra, które chcesz uruchomić. Jeśli nie zdefiniujesz procedury, uruchomi ona bieżącą procedurę.

Gdzie pisać wydarzenia Onkey?

Cóż, możesz napisać zdarzenie Onkey na dowolnym normalnym module. Będą działać w normalnych modułach, ale najpierw będziesz musiał uruchomić podprogram zawierający instrukcje Onkey. To nie jest tak, że uruchamiasz makro za każdym razem, aby użyć zdarzeń Onkey. Tylko raz będziesz musiał uruchomić to makro po otwarciu skoroszytu.

Jeśli nie chcesz uruchamiać makra zawierającego zdarzenia Onkey, możesz umieścić je w zdarzeniu workbook_open() w obiekcie workbook. Spowoduje to, że zdarzenia Onkey będą aktywne zaraz po otwarciu skoroszytu zawierającego zdarzenia Onkey.

Jak napisać obsługę zdarzeń Onkey?

Jeśli więc masz już jakieś makra, które chcesz uruchomić z określonym skrótem, napisz nową procedurę, która będzie zawierała listę skrótów. Na przykład tutaj mam makro, które pokazuje komunikat, że skrót działa.

Sub show_msg() MsgBox "Skrót działa" End Sub 

Teraz chcę uruchomić to makro, naciskając kombinację klawiszy CTRL+j. Aby to zrobić, piszę poniższy kod VBA.

Sub Activate_Onkey() Application.OnKey "^j", "show_msg" End Sub

"^" (karate) oznacza klawisz CTRL. Poniżej znajduje się tabela wszystkich kluczowych skrótów w programie Excel VBA.

https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey

Jak aktywować wydarzenie Onkey?

Po napisaniu powyższego kodu w module, jeśli przejdziesz do widoku Excela i użyjesz klawisza CTRL+J, to nie zadziała. Najpierw musisz uruchomić sub, który definiuje zdarzenia OnKey. Więc uruchom raz sub Activate_Onkey(), a wtedy będzie działać przez całą sesję. Po zamknięciu skoroszytu zawierającego definicje Onkey przestanie on działać.

Możesz umieścić definicje Onkey w procedurze, którą chcesz wykonać. Ale wtedy będziesz musiał uruchomić makro raz ręcznie. Dlatego proponuję umieścić zdarzenia Onkey w zdarzeniach Workbook_Open. Spowoduje to, że wszystkie zdarzenia Onkey aktywują się automatycznie.

Wydarzenie Ontime w Excelu

Jak sama nazwa wskazuje, zdarzenie Onkey uruchamia określony podprogram w najwcześniejszym możliwym czasie lub później. Program Excel może być zajęty niektórymi innymi zadaniami, takimi jak wykonywanie sumarycznego zestawu instrukcji lub bycie w trybie kopiowania przeszłości. W takim przypadku może to opóźnić wydarzenie Ontime. Dlatego argument jest pokazany jako najwcześniejszy czas.

Składnia zdarzenia OnTime

Zdarzenie Ontime jest funkcją klasy Application. Ma dwa podstawowe argumenty i dwa opcjonalne argumenty.

Application.Ontime NajwcześniejszyTime, "Procedura", [Ostatni Czas], [Harmonogram]

tenNajwcześniejszy czasto czas, w którym chcesz, aby procedura została uruchomiona. Ale program Excel uruchomi określone makro po określonym najwcześniejszym czasie, tylko wtedy, gdy będzie wolne.

ten "Procedura" to nazwa procedury, którą chcesz uruchomić w określonym czasie.

Jak już powiedziałem, nie ma gwarancji, że excel uruchomi Twoją procedurę w określonym czasie. ten Ostatni czasto czas po najwcześniejszym czasie, w którym program Excel ma wolne okno i wykonuje zadanie.

Jeśli chcesz dezaktywować zaplanowane wydarzenie OnTime, ustawharmonogram do fałszu.

Gdzie napisać wydarzenie Ontime?

Zdarzenie OnTime można zapisać w dowolnym module. Będziesz musiał wykonać zdarzenie zawierające procedurę aktywacji zdarzenia.

Jeśli chcesz, aby wydarzenie zostało aktywowane zaraz po otwarciu skoroszytu zawierającego wydarzenie, umieść je w zdarzeniu workbook_open. Aktywuje wydarzenie, gdy tylko otworzysz kod zawierający wydarzenie w Excelu.

Jak napisać Wydarzenie Ontime?

Załóżmy, że masz podprogram, który pokazuje aktualną datę i godzinę

Sub show_msg() MsgBox "Aktualna data i godzina to " & Teraz zakończ Sub

Teraz, jeśli chcesz, aby ta procedura została uruchomiona po 5 sekundach uruchomienia innego makra, musisz umieścić ten kod.

Sub OnTimeTest() '--kilka innych zadań Application.ontime Now + (5/24/60/60), "show_msg" End Sub

Po uruchomieniu podprogramu OnTimeTest, po pięciu sekundach jego uruchomienia uruchomi podprogram show_msg. Więc będzie dobrze, jeśli chcesz coś zrobić po kilku razach robienia czegoś innego, użyj powyższej struktury.

Jeśli chcesz, aby makro uruchamiało się co kilka sekund/minut/godzin/itd., możesz wywołać tę funkcję samodzielnie. Byłby to rodzaj rekurencyjnego podprogramu.

Sub OnTimeTest() MsgBox "Aktualna data i godzina to " & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" End Sub

Powyższy podprogram będzie uruchamiany po każdych pięciu sekundach od jego uruchomienia.

Więc tak, to są wydarzenia w Excel VBA. Niektóre z powyższych kategorii mają wiele różnych wyzwalaczy zdarzeń. Oczywiście nie mogę ich wszystkich tutaj wyjaśnić. To sprawi, że artykuł będzie długi. To był tylko wstęp do wydarzeń dostępnych w Excel VBA. Aby uzyskać więcej informacji, skorzystaj z linków umieszczonych w artykułach. Poniżej wymieniłem kilka powiązanych artykułów. Ty też możesz je przeczytać.

Jeśli masz jakiekolwiek wątpliwości związane z tym artykułem lub jakąkolwiek inną myślą dotyczącą Excela / VBA, zapytaj nas w sekcji komentarzy poniżej.

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.