{"id":55000425,"date":"2024-04-01T00:00:00","date_gmt":"2024-04-23T12:50:12","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=425"},"modified":"2024-04-23T11:13:31","modified_gmt":"2024-04-23T11:13:31","slug":"ereignisse_in_klassen_programmieren","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/","title":{"rendered":"Ereignisse in Klassen programmieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/dc3a2f2bd5134eaea02e2db98f84d0c6\" width=\"1\" height=\"1\" alt=\"\"><b>Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k&ouml;nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl&auml;chen, dem &Ouml;ffnen oder Schlie&szlig;en von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k&ouml;nnen. Wenn man selbst Klassen programmiert, findet sich fr&uuml;her oder sp&auml;ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf&uuml;gen, dass durch eine bestimmte Aktion ausgel&ouml;st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl&ouml;sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.<\/b><\/p>\n<h2>Ereignisse in Klassenmodulen<\/h2>\n<p>Wer schon einmal eine Ereignisprozedur beispielsweise f&uuml;r das Anklicken einer Schaltfl&auml;che, das &Ouml;ffnen eines Word-Dokuments, das Markieren eines Ranges in Excel et cetera programmiert hat, kennt zumindest schon einmal die Verbraucherseite von Ereignissen.<\/p>\n<p>Hier k&ouml;nnen wir zum Beispiel in Excel in der Klasse <b>Tabelle1 <\/b>eines Excel-Dokuments im Codefenster im linken Kombinationsfeld den Eintrag <b>Worksheet <\/b>ausw&auml;hlen, was im rechten Kombinationsfeld automatisch die Standardmethode <b>SelectionChange <\/b>selektiert. Dadurch wird automatisch die Ereignisprozedur <b>Worksheet_SelectionChange <\/b>angelegt, mit der wir in diesem Fall die Adresse des neu ausgew&auml;hlten Bereichs im Direktbereich des VBA-Editors ausgeben (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_02\/pic_425_001.png\" alt=\"Ereignisprozedur beim &Auml;ndern der Markierung in einem Excel-Arbeitsblatt\" width=\"599.6265\" height=\"193.9417\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Ereignisprozedur beim &Auml;ndern der Markierung in einem Excel-Arbeitsblatt<\/span><\/b><\/p>\n<p>Nun schauen wir uns die andere Seite an, auf der wir Ereignisse definieren, die wir dann wiederum als Verbraucher nutzen k&ouml;nnen. Wozu aber &uuml;berhaupt Ereignisse? Weil wir benutzerdefiniert auf bestimmte Ereignisse reagieren k&ouml;nnen wollen. Stellen wir uns beispielsweise vor, wir wollen den Benutzer unserer Klasse <b>clsAdresse <\/b>dar&uuml;ber informieren, wenn die Methode <b>Leeren <\/b>erfolgreich aufgerufen wurde. Dann k&ouml;nnen wir das einfach erledigen, indem wir der Methode <b>Leeren<\/b> eine entsprechende Meldung hinzuf&uuml;gen:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Leeren()\n     ...\n     m_Land = \"\"\n     <span style=\"color:blue;\">MsgBox<\/span> \"Die Eigenschaften der Adresse wurden geleert.\", _\n         vbOKOnly + vbExclamation, \"Adresse geleert\"\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Rufen wir die Methode nun von einer anderen Prozedur aus auf, erscheint diese Meldung (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_02\/pic_425_013.png\" alt=\"Meldung beim Aufruf einer Methode\" width=\"649.627\" height=\"300.7363\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Meldung beim Aufruf einer Methode<\/span><\/b><\/p>\n<p>Nun stellen wir uns vor, wir wollen die Meldung dieser Klasse nicht innerhalb der Klasse verdrahten, sondern dem Entwickler, der diese Klasse in seinem Code verwendet (meist wir selbst), die M&ouml;glichkeiten geben wollen, individuell auf dieses Ereignis zu reagieren.<\/p>\n<p>Das ist ein Beispieleinsatzzweck f&uuml;r die Bereitstellung eines Ereignisses. Und das gelingt in zwei Schritten:<\/p>\n<ul>\n<li>Als Erstes definieren wir das Ereignis mit dem Schl&uuml;sselwort <b>Event<\/b>, dem Namen des Ereignisses und gegebenenfalls den zu verwendenden Parametern.<\/li>\n<li>Als zweites f&uuml;gen wir in diesem Beispiel der Methode Leeren Code hinzu, der dieses Ereignis ausl&ouml;st. Dabei verwenden wir das Schl&uuml;sselwort <b>RaiseEvent <\/b>und &uuml;bergeben die Werte f&uuml;r die Parameter, welche das Verbraucher des Ereignisses erhalten soll.<\/li>\n<\/ul>\n<p>In der Klasse f&uuml;gen wir oben die Deklaration des Ereignisses ein:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Event NachDemLeeren()<\/pre>\n<p>Der Prozedur <b>Leeren <\/b>f&uuml;gen wir am Ende den Befehl <b>RaiseEvent <\/b>hinzu und geben den Namen des Ereignisses als Parameter an:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Leeren()\n     ...\n     RaiseEvent NachDemLeeren\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dieses wird, wie in Bild 3 dargestellt, per IntelliSense angeboten. Dadurch geschieht nun erst einmal nichts.  Wir k&ouml;nnen die obige Prozedur <b>AdressblockLeeren <\/b>starten und die Methode <b>Leeren <\/b>aufrufen, aber wir erhalten keinen sichtbaren Effekt. Das ist logisch, denn wir haben das Ereignis noch nicht implementiert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_02\/pic_425_014.png\" alt=\"Deklarieren und Ausl&ouml;sen eines Ereignisses\" width=\"424.6267\" height=\"259.9277\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Deklarieren und Ausl&ouml;sen eines Ereignisses<\/span><\/b><\/p>\n<h2>Keine Ereignisprozeduren ohne das Schl&uuml;sselwort WithEvents<\/h2>\n<p>Der Schritt ist auch in dieser Konstellation nicht m&ouml;glich, denn um die Ereignisse einer Klasse zu implementieren, m&uuml;ssen die Klasse, die das Ereignis enth&auml;lt, mit einem bestimmten Schl&uuml;sselwort deklarieren. Dieses hei&szlig;t <b>WithEvents<\/b>. Es gibt noch weitere Bedingungen: Diese Deklaration kann nicht innerhalb einer Prozedur erfolgen, sondern muss im Kopf des Moduls hinterlegt werden. Au&szlig;erdem k&ouml;nnen wir das Schl&uuml;sselwort <b>WithEvents <\/b>nicht innerhalb von Standardmodulen verwenden, sondern nur in Klassenmodulen. Versuchen wir dies dennoch, erhalten wir direkt einen Kompilierfehler wie in Bild 4.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_02\/pic_425_015.png\" alt=\"Fehler beim Versuch, WithEvents in einem Standardmodul zu verwenden\" width=\"549.6265\" height=\"212.2578\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Fehler beim Versuch, WithEvents in einem Standardmodul zu verwenden<\/span><\/b><\/p>\n<p>Warum aber ben&ouml;tigen wir dieses Schl&uuml;sselwort &uuml;berhaupt? Wenn wir in Word auf die Ereignisse des <b>Document<\/b>-Objekts zugreifen oder in Access auf ein <b>Form<\/b>&#8211; oder <b>Button<\/b>-Element, k&ouml;nnen wir das auch einfach ohne <b>WithEvents<\/b>-Schl&uuml;sselwort erledigen.<\/p>\n<p>Das ist dann allerdings reiner Zufall: Bei Word waren wir dann vermutlich im Klassenmodul zum Word-Dokument und in Access im Klassenmodul des Formulars, in dem sich auch die Schaltfl&auml;che befand, deren Ereignisse wir implementiert haben. Da es sich um das Klassenmodul des Objekts selbst handelt, stehen dort alle Ereignisse standardm&auml;&szlig;ig zur Verf&uuml;gung.<\/p>\n<p>W&uuml;rden wir jedoch die Ereignisse dieses Word-Dokuments oder Access-Formulars von einem anderen Klassenmodul aus implementieren wollen, m&uuml;ssten wir dazu auch erst einmal eine Objektvariable anlegen, die wir mit dem Schl&uuml;sselwort <b>WithEvents<\/b> deklarieren. Und wir m&uuml;ssten diese auch noch mit einem Verweis auf das entsprechende Objekt versehen.<\/p>\n<p>Genauso ist es bei der Klasse <b>clsAdresse<\/b>: Diese verwenden wir von einer anderen Klasse aus, also m&uuml;ssen wir die Objektvariable mit dem Schl&uuml;sselwort <b>WithEvents <\/b>versehen &#8211; und das gelingt wiederum nur in Klassenmodulen. Welche Art von Klassenmodul wir hier verwenden, spielt allerdings keine Rolle. Wir k&ouml;nnen die Klasse sowohl innerhalb des Klassenmoduls eines eingebauten Elements wie einem Word-Dokument, einem Excel-Workbook oder einem Access-Formular deklarieren, aber auch in einem anderen alleinstehenden Klassenmodul.<\/p>\n<p>Damit Du die Beispiele dieses Artikels in allen Office-Anwendungen ausprobieren kannst, erstellen wir zu diesem Zweck ein neues Klassenmodul namens <b>clsAdressenVerwalten<\/b>.<\/p>\n<p>Diese f&uuml;gen wir die Deklaration der Objektvariablen ein, der wie die Instanz der Klasse <b>clsAdresse <\/b>zuweisen wollen:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>WithEvents objAdresse<span style=\"color:blue;\"> As <\/span>clsAdresse<\/pre>\n<p>Au&szlig;erdem f&uuml;gen wir eine Methode hinzu, die das Objekt erstellt und seine Eigenschaften f&uuml;llt:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AdresseErstellen()\n     <span style=\"color:blue;\">Set<\/span> objAdresse = <span style=\"color:blue;\">New<\/span> clsAdresse\n     <span style=\"color:blue;\">With<\/span> objAdresse\n         .Anrede = \"Herr\"\n         .Vorname = \"Andr&eacute;\"\n         .Nachname = \"Minhorst\"\n         .Strasse = \"Borkhofer Str. 17\"\n         .PLZ = \"47137\"\n         .Ort = \"Duisburg\"\n         .Land = \"Deutschland\"\n     End <span style=\"color:blue;\">With<\/span>\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Schlie&szlig;lich f&uuml;gen wir den Aufruf der Methode <b>Leeren <\/b>der Adresse hinzu:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AdresseLeeren()\n     objAdresse.Leeren\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Um die Klasse <b>clsAdressenVerwalten <\/b>wiederum zu instanziieren, legen wir in einem Standardmodul die Deklaration der Objektvariablen zu dieser Klasse an:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objAdressenVerwalten<span style=\"color:blue;\"> As <\/span>clsAdressenVerwalten<\/pre>\n<p>Diese instanziieren wir. Au&szlig;erdem rufen wir nacheinander die Methoden <b>AdresseErstellen <\/b>und <b>AdresseLeeren <\/b>auf:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AdressenSteuern()\n     <span style=\"color:blue;\">Set<\/span> objAdressenVerwalten = <span style=\"color:blue;\">New<\/span> clsAdressenVerwalten\n     objAdressenVerwalten.AdresseErstellen\n     objAdressenVerwalten.AdresseLeeren\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit geschieht nun allerdings nichts Sichtbares. Was wir erreichen wollten, ist die Implementierung des Ereignisses <b>NachDemLeeren <\/b>der Klasse <b>clsAdresse<\/b>. Dazu zeigen wir nun das Codefenster zur Klasse <b>clsAdressenVerwalten <\/b>an. Da wir hier die Objektvariable <b>objAdresse <\/b>mit dem Schl&uuml;sselwort <b>WithEvents <\/b>deklariert haben, k&ouml;nnen wir nun Ereignisprozeduren auf Basis der f&uuml;r diese Klasse definieren Ereignisse implementieren.<\/p>\n<p>Das gelingt wie folgt:<\/p>\n<ul>\n<li>Wir w&auml;hlen im linken Kombinationsfeld des Klassenmoduls <b>clsAdressenVerwalten <\/b>den Eintrag <b>objAdresse <\/b>aus.<\/li>\n<li>Im rechten Kombinationsfeld wird nun automatisch das einzige verf&uuml;gbare Ereignis ausgew&auml;hlt.<\/li>\n<li>Dies legt wiederum eine neue Ereignisprozedur auf Basis der in der Klasse <b>clsAdresse <\/b>angegebenen Deklaration an.<\/li>\n<\/ul>\n<p>Diesen Ablauf k&ouml;nnen wir uns in Bild 5 ansehen. Wir finden nun eine Ereignisprozedur vor, die wir mit einer Anweisung f&uuml;llen k&ouml;nnen &#8211; beispielsweise der Anzeige einer Meldung:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_02\/pic_425_016.png\" alt=\"Anlegen einer Ereignisprozedur f&uuml;r ein benutzerdefiniertes Ereignis\" width=\"649.627\" height=\"418.4037\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Anlegen einer Ereignisprozedur f&uuml;r ein benutzerdefiniertes Ereignis<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>objAdresse_NachDemLeeren()\n     <span style=\"color:blue;\">MsgBox<\/span> \"Adresse geleert\"\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit steht es nun offen, das Ereignis <b>NachDemLeeren <\/b>von der aufrufenden Instanz aus mit den gew&uuml;nschten Anweisungen zu f&uuml;llen.<\/p>\n<h2>Vorteil von Ereignisprozeduren bei benutzerdefinieren Ereignissen<\/h2>\n<p>Der gro&szlig;e Vorteil dieser Vorgehensweise ist der Gleiche wie bei den Ereignissen eingebauter Elemente der jeweiligen Office-Anwendung. Wir k&ouml;nnen je nach Anwendungszweck individuell festlegen, was beim Ausl&ouml;sen eines der Ereignisse geschehen soll. Damit machen wir unsere Klasse viel flexibler, als wenn wir diesen Code direkt in der Klasse einf&uuml;gen. Wir k&ouml;nnen die Ereignisse der Klasse nun mit verschiedenen Anweisungen versehen, die je nach Anwendungsfall ausgef&uuml;hrt werden sollen.<\/p>\n<h2>Ereignisse mit Parametern<\/h2>\n<p>Als N&auml;chstes wollen wir ein Ereignis mit verschiedenen Parametern hinzuf&uuml;gen. Dazu bietet sich der Zeitpunkt an, an dem wir schon die Methode zum Leeren der Adresse in der Klasse <b>clsAdresse <\/b>aufgerufen haben, aber das Leeren noch nicht stattgefunden hat.<\/p>\n<p>Wir wollen mit diesem Ereignis erstens einige der Werte der zu leerenden Adresse bereitstellen (wir k&ouml;nnten das auch mit allen Werten tun, aber wir wollen die &Uuml;bersichtlichkeit bewahren). Zweitens wollen wir einen Parameter nutzen, um das Leeren gegebenenfalls abzubrechen. Dabei handelt es sich um einen sogenannten R&uuml;ckgabeparameter.<\/p>\n<p>Die Deklaration des Ereignisses sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Event VorDemLeeren(strAnrede<span style=\"color:blue;\"> As String<\/span>, _\n     strVorname<span style=\"color:blue;\"> As String<\/span>, strNachname<span style=\"color:blue;\"> As String<\/span>, _\n     bolCancel<span style=\"color:blue;\"> As Boolean<\/span>)<\/pre>\n<p>Der &Uuml;bersichtlichkeit halber f&uuml;gen wir alle Deklarationen von Ereignissen hinter der Deklaration ein und vor den &uuml;brigen Elementen wie Methoden oder Funktionen.<\/p>\n<h2>Aufruf des Ereignisses mit Parametern integrieren<\/h2>\n<p>Wo integrieren wir den Aufruf dieses Ereignisses nun? Auch wenn dieses <b>VorDemLeeren <\/b>hei&szlig;t, geh&ouml;rt es in die Methode <b>Leeren<\/b>. Dort f&uuml;gen wir den Aufruf gleich zu Beginn ein, also bevor das eigentliche Leeren der Eigenschaften der Klasse beginnt. Mit den ersten drei Parametern wollen wir die aktuellen Werte f&uuml;r die Anrede, den Vornamen und den Nachnamen an die Implementierung des Ereignisses in der instanziierenden Klasse &uuml;bergeben. Der vierte Parameter &uuml;bergibt die Variable <b>bolCancel<\/b>, die wir zuvor deklarieren. Dieser <b>Boolean<\/b>-Parameter enth&auml;lt standardm&auml;&szlig;ig den Wert <b>False<\/b>.<\/p>\n<p>Wenn der Benutzer diesen Parameter in der Implementierung des Ereignisses nicht auf <b>True <\/b>einstellt, beh&auml;lt dieser den Wert <b>False<\/b>. Das ist wichtig zu wissen, denn wir untersuchen diesen Wert direkt im Anschluss an das Ausl&ouml;sen des Ereignisses <b>VorDemLeeren <\/b>mit <b>RaiseEvent<\/b>. Wenn <b>bolCancel <\/b>dann den Wert <b>True <\/b>aufweist, soll das Leeren der Adresse abgebrochen werden. Dazu f&uuml;gen wir hinter das Ausl&ouml;sen des Ereignisses <b>VorDemLeeren <\/b>mit der Anweisung <b>RaiseEvent <\/b>eine <b>If&#8230;Then<\/b>-Bedingung ein, die pr&uuml;ft, ob <b>bolCancel <\/b>den Wert <b>True <\/b>hat. Ist das der Fall, wird die Prozedur mit <b>Exit Sub <\/b>verlassen (siehe Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Leeren()\n     <span style=\"color:blue;\">Dim <\/span>bolCancel<span style=\"color:blue;\"> As Boolean<\/span>\n     RaiseEvent VorDemLeeren(m_Anrede, m_Vorname, m_Nachname, bolCancel)\n     <span style=\"color:blue;\">If <\/span>bolCancel = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\n         <span style=\"color:blue;\">Exit Sub<\/span>\n     <span style=\"color:blue;\">End If<\/span>\n     m_Firma = \"\"\n     m_Anrede = \"\"\n     m_Vorname = \"\"\n     m_Nachname = \"\"\n     m_Strasse = \"\"\n     m_PLZ = \"\"\n     m_Ort = \"\"\n     m_Land = \"\"\n     RaiseEvent NachDemLeeren\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Integration des Ereignisses, das vor dem Leeren der Klasse ausgel&ouml;st werden soll<\/span><\/b><\/p>\n<h2>Ereignis mit Parametern implementieren<\/h2>\n<p>Zum Implementieren dieses neuen Ereignisses w&auml;hlen wir wieder das Objekt <b>objAdresse <\/b>aus dem linken Kombinationsfeld des Codefensters der Klasse <b>clsAdressenVerwalten <\/b>aus. Im rechten Kombinationsfeld finden wir nun einen weiteren Eintrag namens <b>VorDemLeeren<\/b>, den wir ebenfalls selektieren. Damit f&uuml;gen wir eine neue Ereignisprozedur zur Klasse <b>clsAdressenVerwalten <\/b>hinzu, die wie in Bild 6 aussieht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2024_02\/pic_425_017.png\" alt=\"Anlegen einer weiteren Ereignisprozedur, diesmal mit Parametern\" width=\"649.627\" height=\"427.5404\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Anlegen einer weiteren Ereignisprozedur, diesmal mit Parametern<\/span><\/b><\/p>\n<p>Diese enth&auml;lt alle in der Definition in der Klasse <b>clsAdresse <\/b>festgelegten Parameter. Diese Prozedur f&uuml;llen wir nun wie in Listing 2. Hier nutzen wir gleich alle Parameter. Die ersten drei, <b>strAnrede<\/b>, <b>strVorname <\/b>und <b>strNachname<\/b>, integrieren wir in den Text einer <b>MsgBox<\/b>-Funktion, in der wir den Benutzer fragen, ob die Adresse mit diesen Daten gel&ouml;scht werden soll. Klickt der Benutzer auf <b>Ja<\/b>, wird <b>bolCancel <\/b>auf <b>False <\/b>gesetzt und die Adresse wird geleert. In diesem Fall erscheint anschlie&szlig;end auch noch die Meldung aus der Ereignisprozedur <b>objAdresse_NachDemLeeren<\/b>, dass die Adresse geleert wurde. Klickt er auf <b>Nein<\/b>, erh&auml;lt <b>bolCancel <\/b>den Wert <b>True <\/b>und die Adresse wird beibehalten.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>objAdresse_VorDemLeeren(strAnrede<span style=\"color:blue;\"> As String<\/span>, strVorname<span style=\"color:blue;\"> As String<\/span>, strNachname<span style=\"color:blue;\"> As String<\/span>, _\n         bolCancel<span style=\"color:blue;\"> As Boolean<\/span>)\n     If <span style=\"color:blue;\">MsgBox<\/span>(\"Adresse ''\" & strAnrede & \" \" & strVorname & \" \" & strNachname & \"'' leeren?\", vbYesNo + vbExclamation, _\n         \"Adresse leeren?\") = vbYes Then\n         bolCancel = <span style=\"color:blue;\">False<\/span>\n     <span style=\"color:blue;\">Else<\/span>\n         bolCancel = <span style=\"color:blue;\">True<\/span>\n     <span style=\"color:blue;\">End If<\/span>\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Implementierung des Ereignisses VorDemLeeren des Objekts objAdresse<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Damit haben wir die Programmierung von Ereignissen in Klassen besprochen. In weiteren Artikeln schauen wir uns konkrete Anwendungsf&auml;lle an.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k&ouml;nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl&auml;chen, dem &Ouml;ffnen oder Schlie&szlig;en von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k&ouml;nnen. Wenn man selbst Klassen programmiert, findet sich fr&uuml;her oder sp&auml;ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf&uuml;gen, dass durch eine bestimmte Aktion ausgel&ouml;st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl&ouml;sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022024,662024,44000025],"tags":[],"yst_prominent_words":[66062029],"class_list":["post-55000425","post","type-post","status-publish","format-standard","hentry","category-66022024","category-662024","category-VBAProgrammierung"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Ereignisse in Klassen programmieren - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-04-23T12:50:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-04-23T11:13:31+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Ereignisse in Klassen programmieren - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#blogposting\",\"name\":\"Ereignisse in Klassen programmieren - Visual Basic Entwickler\",\"headline\":\"Ereignisse in Klassen programmieren\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/dc3a2f2bd5134eaea02e2db98f84d0c6\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#articleImage\"},\"datePublished\":\"2024-04-01T00:00:00+00:00\",\"dateModified\":\"2024-04-23T11:13:31+00:00\",\"inLanguage\":\"de-DE\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#webpage\"},\"articleSection\":\"2\\\/2024, 2024, VBA-Programmierung, bild\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/#listItem\",\"name\":\"2024\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/#listItem\",\"position\":2,\"name\":\"2024\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/2\\\/2024\\\/#listItem\",\"name\":\"2\\\/2024\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/2\\\/2024\\\/#listItem\",\"position\":3,\"name\":\"2\\\/2024\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/2\\\/2024\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#listItem\",\"name\":\"Ereignisse in Klassen programmieren\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/#listItem\",\"name\":\"2024\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#listItem\",\"position\":4,\"name\":\"Ereignisse in Klassen programmieren\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2024\\\/2\\\/2024\\\/#listItem\",\"name\":\"2\\\/2024\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/\",\"name\":\"Ereignisse in Klassen programmieren - Visual Basic Entwickler\",\"description\":\"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\\u00e4chen, dem \\u00d6ffnen oder Schlie\\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\\u00fcher oder sp\\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\\u00fcgen, dass durch eine bestimmte Aktion ausgel\\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/ereignisse_in_klassen_programmieren\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2024-04-01T00:00:00+00:00\",\"dateModified\":\"2024-04-23T11:13:31+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Ereignisse in Klassen programmieren - Visual Basic Entwickler","description":"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.","canonical_url":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#blogposting","name":"Ereignisse in Klassen programmieren - Visual Basic Entwickler","headline":"Ereignisse in Klassen programmieren","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/vg08.met.vgwort.de\/na\/dc3a2f2bd5134eaea02e2db98f84d0c6","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#articleImage"},"datePublished":"2024-04-01T00:00:00+00:00","dateModified":"2024-04-23T11:13:31+00:00","inLanguage":"de-DE","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#webpage"},"articleSection":"2\/2024, 2024, VBA-Programmierung, bild"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/#listItem","name":"2024"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/#listItem","position":2,"name":"2024","item":"https:\/\/vbentwickler.de\/category\/2024\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/2\/2024\/#listItem","name":"2\/2024"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/2\/2024\/#listItem","position":3,"name":"2\/2024","item":"https:\/\/vbentwickler.de\/category\/2024\/2\/2024\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#listItem","name":"Ereignisse in Klassen programmieren"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/#listItem","name":"2024"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#listItem","position":4,"name":"Ereignisse in Klassen programmieren","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2024\/2\/2024\/#listItem","name":"2\/2024"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#webpage","url":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/","name":"Ereignisse in Klassen programmieren - Visual Basic Entwickler","description":"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2024-04-01T00:00:00+00:00","dateModified":"2024-04-23T11:13:31+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Ereignisse in Klassen programmieren - Visual Basic Entwickler","og:description":"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.","og:url":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2024-04-23T12:50:12+00:00","article:modified_time":"2024-04-23T11:13:31+00:00","twitter:card":"summary_large_image","twitter:title":"Ereignisse in Klassen programmieren - Visual Basic Entwickler","twitter:description":"Eines der wichtigsten Features vieler eingebauter Klassen in den Office-Anwendungen sind die Ereignisse. Damit k\u00f6nnen wir Ereignisprozeduren implementieren, mit denen wir beispielsweise auf das Anklicken von Schaltfl\u00e4chen, dem \u00d6ffnen oder Schlie\u00dfen von Dokumenten oder dem Wechseln eines Tabellenblatts in einem Excel-Arbeitsblatt reagieren k\u00f6nnen. Wenn man selbst Klassen programmiert, findet sich fr\u00fcher oder sp\u00e4ter ein Anlass, dieser ein eigenes Ereignis hinzuzuf\u00fcgen, dass durch eine bestimmte Aktion ausgel\u00f6st wird. Dieser Artikel zeigt, wir wie solche Ereignisse programmieren und ausl\u00f6sen und wie wir diese in Form von Ereignisprozeduren in den Klassen implementieren, welche das entsprechende Objekt instanziiert haben.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000425","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"created":"2024-04-23 10:58:56","updated":"2026-05-16 09:11:54","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2024\/\" title=\"2024\">2024<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2024\/2\/2024\/\" title=\"2\/2024\">2\/2024<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tEreignisse in Klassen programmieren\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2024","link":"https:\/\/vbentwickler.de\/category\/2024\/"},{"label":"2\/2024","link":"https:\/\/vbentwickler.de\/category\/2024\/2\/2024\/"},{"label":"Ereignisse in Klassen programmieren","link":"https:\/\/vbentwickler.de\/ereignisse_in_klassen_programmieren\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000425"}],"version-history":[{"count":1,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000425\/revisions"}],"predecessor-version":[{"id":88072079,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000425\/revisions\/88072079"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000425"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}