{"id":55000685,"date":"2009-10-01T00:00:00","date_gmt":"2020-05-22T22:17:48","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=685"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ereignisse_im_Eigenbau","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/","title":{"rendered":"Ereignisse im Eigenbau"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Ereignisse werden durch Formulare, Berichte und deren Steuerelemente ausgel&ouml;st und vielleicht noch durch einige Objekte, deren Ereignisse man sich auch noch extra per WithEvents-Anweisung gef&uuml;gig machen muss. Oder gibt es da noch mehr Ja, gibt es! Sie k&ouml;nnen n&auml;mlich eigene Ereignisse samt Ereignisprozedur und Parameter definieren und festlegen, wann diese ausgel&ouml;st werden. Wie das geht und was Sie davon haben, erfahren Sie in diesem Beitrag.<\/b><\/p>\n<p>Eigene Ereignisse programmieren &#8230; als ob die Menge der Ereignisse etwa von Formularen nicht schon un&uuml;bersichtlich genug w&auml;re! Und damit kann man doch alles machen, was n&ouml;tig ist, oder nicht Nun: Sie k&ouml;nnen schon eine Menge mit den eingebauten Ereignissen erledigen, aber fehlte Ihnen da noch nie etwas<\/p>\n<p>Bevor wir zu einem handfesten Beispiel f&uuml;r das Erweitern eines Formulars um ein benutzerdefiniertes Ereignis kommen, schauen wir uns die grundlegende Technik einmal an, und zwar am Beispiel einer Klasse, die von einem Formular referenziert und verwendet wird.<\/p>\n<p>Die Klasse soll irgendetwas unheimlich Spannendes und Aufwendiges tun, was wir in diesem Beitrag aber gar nicht unbedingt komplett beleuchten m&uuml;ssen &#8211; zum Beispiel eine E-Mail versenden, deren Daten der Klasse zuvor zugewiesen wurden. Die Klasse enth&auml;lt zun&auml;chst einige Eigenschaften, die f&uuml;r den Versand einer Mail wichtig sind:<\/p>\n<pre>Dim m_Empfaenger As String\r\nDim m_Absender As String\r\nDim m_Betreff As String\r\nDim m_Inhalt As String<\/pre>\n<p>Diese Eigenschaften macht die Klasse nach au&szlig;en &uuml;ber eine <b>Public Property <\/b>verf&uuml;gbar &#8211; hier etwa f&uuml;r die Eigenschaft <b>Empfaenger<\/b>:<\/p>\n<pre>Public Property Let Empfaenger(strEmpfaenger\r\nAs String)\r\nm_Empfaenger = strEmpfaenger\r\nEnd Property<\/pre>\n<p>Das ist alles noch nichts Neues &#8211; auch nicht die Methode <b>Senden<\/b>, mit der man den Versand der E-Mail durchf&uuml;hren kann und die hier um die eigentliche Funktion erleichtert wurde:<\/p>\n<pre>Public Sub Senden()\r\n&euro;Versendet die E-Mail ...\r\n&euro; ... viele Befehle ...\r\n&euro;Ruft benutzerdefiniertes Ereignis auf:\r\nRaiseEvent MailVersendet\r\nEnd Sub<\/pre>\n<p>Interessant wird es bei der Zeile <b>RaiseEvent MailVersendet<\/b>. <b>RaiseEvent <\/b>sorgt daf&uuml;r, dass das als Parameter angegebene Ereignis ausgel&ouml;st wird. Dieses m&uuml;ssen Sie vorher allerdings noch deklarieren, und zwar im Modulkopf:<\/p>\n<pre>Public Event MailVersendet()<\/pre>\n<p>Dies ist die denkbar einfachste Variante einer Ereignisdefinition &#8211; das nackte Ereignis enth&auml;lt keinerlei Parameter.<\/p>\n<p>Wenn Sie im VBA-Editor zun&auml;chst das Ereignis mit dem Schl&uuml;sselwort <b>Events<\/b> deklarieren, k&ouml;nnen Sie sp&auml;ter nach der Eingabe des Befehls <b>RaiseEvents<\/b> per IntelliSense darauf zugreifen (siehe Bild 1).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/EreignisseImEigenbau-web-images\/pic002_opt.jpeg\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Auf benutzerdefinierte Ereignisse k&ouml;nnen Sie im gleichen Modul per IntelliSense zugreifen.<\/span><\/b><\/p>\n<p>Wenn Sie nun ein Formular wie das aus Bild 2 verwenden, k&ouml;nnen Sie dar&uuml;ber ein Objekt auf Basis der Klasse <b>clsMail <\/b>instanzieren, mit den ben&ouml;tigten Daten f&uuml;ttern und die Mail absenden. Ach, und nat&uuml;rlich k&ouml;nnen Sie auf das Ereignis reagieren, das beim Absenden der Mail ausgel&ouml;st wird. Dies geschieht in drei Schritten:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/EreignisseImEigenbau-web-images\/pic001_opt.jpeg\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Dieses Formular reagiert auf das benutzerdefinierte Ereignis der Klasse clsMail.<\/span><\/b><\/p>\n<p>Zun&auml;chst einmal m&uuml;ssen Sie eine Objektvariable f&uuml;r die Klasse <b>clsMail <\/b>deklarieren. Dabei verwenden Sie das Schl&uuml;sselwort <b>WithEvents<\/b>, welches es erm&ouml;glicht, dass Sie auf die Ereignisse der Klasse reagieren k&ouml;nnen:<\/p>\n<pre>Dim WithEvents objMail As clsMail<\/pre>\n<p>Dann instanzieren Sie die Klasse und weisen dieser die Werte aus den Textfeldern des Formulars zu:<\/p>\n<pre>Private Sub cmdSenden_Click()\r\nSet objMail = New clsMail\r\nWith objMail\r\n.Absender = Me.txtAbsender\r\n.Empfaenger = Me.txtEmpfaenger\r\n.Betreff = Me.txtBetreff\r\n.Inhalt = Me.txtInhalt\r\n.Senden\r\nEnd With\r\nEnd Sub<\/pre>\n<p>Schlie&szlig;lich fehlt noch die Definition der Ereignisprozedur, welche die Anweisungen enth&auml;lt, die beim Ausl&ouml;sen des Ereignisses ausgef&uuml;hrt werden sollen.<\/p>\n<p><!--30percent--><\/p>\n<p>Dieses Ereignis legen Sie &uuml;ber die beiden Kombinationsfelder des VBA-Fensters der Formularklasse an, indem Sie zun&auml;chst links den Eintrag <b>objMail <\/b>und dann rechts <b>MailVersendet <\/b>ausw&auml;hlen (siehe Bild 3). Die Routine versehen Sie mit einer einfachen <b>MsgBox<\/b>-Anweisung:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/EreignisseImEigenbau-web-images\/pic003_opt.jpeg\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Anlegen einer Ereignisprozedur f&uuml;r ein benutzerdefiniertes Ereignis<\/span><\/b><\/p>\n<pre>Private Sub objMail_MailVersendet()\r\nMsgBox \"Die Mail wurde versendet.&euro;\r\nEnd Sub<\/pre>\n<p>Wenn Sie nun das Formular in der Formularansicht &ouml;ffnen und auf die Schaltfl&auml;che <b>Senden <\/b>klicken, wird ein Objekt auf Basis der Klasse <b>clsMail <\/b>instanziert, gef&uuml;llt und seine Methode <b>Senden <\/b>aufgerufen. Dies f&uuml;hrt wiederum zum Ausl&ouml;sen des Ereignisses <b>MailVersendet<\/b>, was im Formular das Anzeigen des gew&uuml;nschten Meldungsfensters nach sich zieht.<\/p>\n<p><b>Alternativen und was ihnen fehlt<\/b><\/p>\n<p>Das h&auml;tten wir auch einfacher haben k&ouml;nnen: Sie deklarieren die Methode <b>Senden <\/b>in der Klasse <b>clsMail <\/b>einfach als Funktion und legen f&uuml;r diese einen R&uuml;ckgabewert des Typs <b>Boolean <\/b>fest, der nach erfolgtem Versenden den Wert <b>True <\/b>zur&uuml;ckliefert. Die Schaltfl&auml;che <b>cmdSenden <\/b>fragt diesen Wert dann ab und zeigt im Falle von <b>True <\/b>ein entsprechendes Meldungsfenster an.<\/p>\n<p>Aber: Was w&auml;re, wenn das Formular beispielsweise den Fortschritt des Sendevorgangs anzeigen sollte &#8211; so wie in Bild 4 Woher bek&auml;me es den aktuellen prozentualen Fortschritt Nun, die Breite des Rechteck-Steuerelements kann man ja von au&szlig;en in der folgenden Form beeinflussen, und das ginge ja auch von der <b>Senden<\/b>-Methode der Klasse aus:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/EreignisseImEigenbau-web-images\/pic004_opt.jpeg\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Anzeige eines Fortschrittbalkens<\/span><\/b><\/p>\n<pre>Forms!frmMail!rctFortschritt.Width = 1000<\/pre>\n<p>Aber was, wenn das Formular <b>frmMail <\/b>&uuml;berhaupt nicht ge&ouml;ffnet ist, weil der Mailversand von ganz anderer Stelle initiiert wurde Und entspricht denn das &uuml;berhaupt einem guten Programmierstil Nein, nat&uuml;rlich nicht: Auf diese Weise w&uuml;rden Sie eine zus&auml;tzliche Abh&auml;ngigkeit der Klasse <b>clsMail <\/b>vom Formular <b>frmMail <\/b>einbauen, was nicht erstrebenswert ist &#8211; vor allem deshalb, weil die Klasse sonst nicht von anderen Komponenten aus genutzt werden k&ouml;nnte. Und au&szlig;erdem w&auml;re dies ja ein schlechtes Beispiel, wenn es nicht ein geeignetes benutzerdefiniertes Ereignis f&uuml;r unseren Anwendungsfall g&auml;be.<\/p>\n<p><b>Fortschritt<\/b><\/p>\n<p>Das Formular hat also ein Rechtecksteuerelement namens <b>rctFortschritt <\/b>zus&auml;tzlich erhalten, und die Methode <b>Senden <\/b>der Klasse <b>clsMail <\/b>ist auf sehr interessante, aber hier nicht n&auml;her beleuchtete Weise in der Lage, den Fortschritt beim Versenden der Mail in prozentualer Form zu liefern.<\/p>\n<p>Die folgende API-Funktion hilft dabei, den Fortschritt gerade so schnell zu machen, dass er im Fortschrittsbalken noch zu erkennen ist:<\/p>\n<pre>Private Declare Sub Sleep Lib \"kernel32&euro; (ByVal dwMilliseconds As Long)<\/pre>\n<p>Wohlweislich definieren wir im Kopf von <b>clsMail <\/b>einmal das folgende benutzerdefinierte Ereignis und legen daf&uuml;r einen Parameter namens <b>intProzent <\/b>fest:<\/p>\n<pre>Public Event Fortschritt(intProzent As Integer)<\/pre>\n<p>Die <b>Senden<\/b>-Methode f&uuml;gt unsere Bausteine nun so zusammen, dass das Ereignis <b>Fortschritt <\/b>jede hundertstel Sekunde einmal aufgerufen wird &#8211; und zwar mit dem Wert der Z&auml;hlervariablen <b>i <\/b>als Parameterwert:<\/p>\n<pre>Public Sub Senden()\r\nDim i As Integer\r\n&euro;Versendet die E-Mail ...\r\n&euro; ... viele Befehle ...\r\nFor i = 1 To 100\r\nSleep 10\r\nRaiseEvent Fortschritt(i)\r\nDoEvents\r\n Next i\r\n    &euro;Ruft benutzerdefiniertes Ereignis auf:\r\n    RaiseEvent MailVersendet\r\n    End Sub<\/pre>\n<p>Das Ereignis f&uuml;gen wir nat&uuml;rlich nun auch noch zum Formular <b>frmMail <\/b>hinzu. Erstmal brauchen wir eine Variable, welche die urspr&uuml;ngliche Breite des Rechtecks speichern soll:<\/p>\n<pre>Dim lngWidth As Long<\/pre>\n<p>Diese wird beim Klick auf <b>Senden <\/b>mit der aktuellen Breite des Fortschritts-Rechtecks gef&uuml;llt:<\/p>\n<pre>lngWidth = Me!rctFortschritt.Width<\/pre>\n<p>Schlie&szlig;lich folgt die Deklaration des Ereignisses, das den Fortschritt aus dem Parameter ausliest und die Breite des Fortschritts-Rechtecks entsprechend der &uuml;bermittelten Prozentzahl anpasst:<\/p>\n<pre>Private Sub objMail_Fortschritt(intProzent As\r\n Integer)\r\n    Me!rctFortschritt.Width =\r\n    lngWidth * intProzent \/ 100\r\n    End Sub<\/pre>\n<p>Fertig: Dies l&auml;sst sich ohne zus&auml;tzliche Abh&auml;ngigkeiten kaum anders abbilden als mit benutzerdefinierten Ereignissen. Wie war das nochmal mit der Abh&auml;ngigkeit Ach ja: Die Klasse soll ja nicht nur von einem speziellen Formular aus aufgerufen werden und dessen Fortschrittsbalken &uuml;ber eine direkte Referenz anpassen k&ouml;nnen. Stattdessen sollte die aufrufende Instanz selbst entscheiden, wie sie mit den &uuml;bermittelten Prozentzahlen umgeht &#8211; und das ist hier der Fall: Genau genommen kann das Ereignis ja auch komplett ignoriert werden.<\/p>\n<p><b>Formulare um benutzerdefinierte Ereignisse erweitern<\/b><\/p>\n<p>Was mit handels&uuml;blichen Klassen m&ouml;glich ist, funktioniert auch mit den Klassenmodulen von Formularen und Berichten: Sie lassen sich ebenfalls um benutzerdefinierte Ereignisse erweitern. Im Beitrag <b>Ereignisprozeduren implantieren <\/b>(Shortlink 686) stehen wir im letzten Teil vor dem Problem, dass wir von einem aufrufenden Formular aus kein Ereignis eines Popup-Formulars anzapfen konnten, um einen Zeitpunkt nach dem Anklicken der <b>OK<\/b>-Schaltfl&auml;che, aber vor dem Schlie&szlig;en des Formulars abzupassen. Der Hintergrund war, dass wir ein Textfeld des Popup-Formulars auslesen und seinen Inhalt in ein Textfeld des aufrufenden Formulars schreiben wollten. Es war zwar m&ouml;glich, auf das Klicken der <b>OK<\/b>-Schaltfl&auml;che zu reagieren, aber erst nach dem Abarbeiten des <b>OnClick<\/b>-Ereignisses der Schaltfl&auml;che im Popup-Formular selbst &#8211; und die l&ouml;ste mit <b>DoCmd.Close <\/b>bereits das Schlie&szlig;en des Formulars aus, womit beim Ausl&ouml;sen des zweiten, implantierten <b>OnClick<\/b>-Ereignisses kein Zugriff auf das Formular mehr m&ouml;glich war. Dem Formular <b>frmPopup_II <\/b>weisen Sie dazu zun&auml;chst folgende Deklaration hinzu:<\/p>\n<pre>Public Event CloseForm()<\/pre>\n<p>Die Ereignisprozedur, die beim Klicken auf die <b>OK<\/b>-Schaltfl&auml;che ausgef&uuml;hrt wird, l&ouml;st nun zun&auml;chst das benutzerdefinierte Ereignis aus und schlie&szlig;t dann das Formular:<\/p>\n<pre>Private Sub cmdOK_Click()\r\n    RaiseEvent CloseForm\r\n    DoCmd.Close acForm, Me.Name\r\n    End Sub<\/pre>\n<p>Im aufrufenden Formular brauchen Sie folgende Deklaration der Formularklasse:<\/p>\n<pre>Dim WithEvents objFrmPopup As Form_frmPopup_II<\/pre>\n<p>Das einzige Ereignis dieser Klasse implementiert das Formular wie folgt:<\/p>\n<pre>Private Sub objFrmPopup_CloseForm()\r\n    Me!txtVonPopup = objFrmPopup!txtPopup\r\n    End Sub<\/pre>\n<p>Fertig! Sie k&ouml;nnen nun vor dem Schlie&szlig;en des Formulars automatisiert auf dessen Steuerelemente zugreifen und haben au&szlig;erdem ein v&ouml;llig unabh&auml;ngiges Popup-Formular, das Sie von anderen Instanzen aus ebenfalls aufrufen k&ouml;nnen &#8211; egal, ob diese auch auf dessen Steuerelemente zugreifen m&ouml;chten. Beachten Sie, dass Sie nicht das Formular selbst, sondern die Formularklasse referenzieren m&uuml;ssen, wenn Sie auf benutzerdefinierte Ereignisse zugreifen m&ouml;chten.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Ereignisse.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{7129E204-71AB-43FB-8B5E-A252B5EDFDE0}\/aiu_685.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ereignisse werden durch Formulare, Berichte und deren Steuerelement ausgel&ouml;st, und vielleicht noch durch einige Objekte, deren Ereignisse man sich auch noch extra per WithEvents-Anweisung gef&uuml;gig machen muss. Oder gibt es da noch mehr Ja, gibt es! Sie k&ouml;nnen n&auml;mlich eigene Ereignisse samt Ereignisprozedur und Parameter definieren und festlegen, wann diese ausgel&ouml;st werden. Wie das geht und was Sie davon haben erfahren Sie in diesem Beitrag.<\/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":[662009,66052009,44000025],"tags":[],"class_list":["post-55000685","post","type-post","status-publish","format-standard","hentry","category-662009","category-66052009","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Ereignisse im Eigenbau - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ereignisse im Eigenbau\" \/>\n<meta property=\"og:description\" content=\"Ereignisse werden durch Formulare, Berichte und deren Steuerelement ausgel&ouml;st, und vielleicht noch durch einige Objekte, deren Ereignisse man sich auch noch extra per WithEvents-Anweisung gef&uuml;gig machen muss. Oder gibt es da noch mehr Ja, gibt es! Sie k&ouml;nnen n&auml;mlich eigene Ereignisse samt Ereignisprozedur und Parameter definieren und festlegen, wann diese ausgel&ouml;st werden. Wie das geht und was Sie davon haben erfahren Sie in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:17:48+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Ereignisse im Eigenbau\",\"datePublished\":\"2020-05-22T22:17:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/\"},\"wordCount\":1493,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/424feb315ad347c994cf7755d473944b\",\"articleSection\":[\"2009\",\"5\\\/2009\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/\",\"name\":\"Ereignisse im Eigenbau - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/424feb315ad347c994cf7755d473944b\",\"datePublished\":\"2020-05-22T22:17:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/424feb315ad347c994cf7755d473944b\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/424feb315ad347c994cf7755d473944b\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ereignisse_im_Eigenbau\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ereignisse im Eigenbau\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ereignisse im Eigenbau - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/","og_locale":"de_DE","og_type":"article","og_title":"Ereignisse im Eigenbau","og_description":"Ereignisse werden durch Formulare, Berichte und deren Steuerelement ausgel&ouml;st, und vielleicht noch durch einige Objekte, deren Ereignisse man sich auch noch extra per WithEvents-Anweisung gef&uuml;gig machen muss. Oder gibt es da noch mehr Ja, gibt es! Sie k&ouml;nnen n&auml;mlich eigene Ereignisse samt Ereignisprozedur und Parameter definieren und festlegen, wann diese ausgel&ouml;st werden. Wie das geht und was Sie davon haben erfahren Sie in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:17:48+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Ereignisse im Eigenbau","datePublished":"2020-05-22T22:17:48+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/"},"wordCount":1493,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b","articleSection":["2009","5\/2009","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/","url":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/","name":"Ereignisse im Eigenbau - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b","datePublished":"2020-05-22T22:17:48+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/424feb315ad347c994cf7755d473944b"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Ereignisse_im_Eigenbau\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Ereignisse im Eigenbau"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000685","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000685"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000685\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000685"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}