{"id":55000331,"date":"2022-08-01T00:00:00","date_gmt":"2023-03-02T17:03:40","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=331"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"VBA_Basics_Module_Klassen_und_Co","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/VBA_Basics_Module_Klassen_und_Co\/","title":{"rendered":"VBA Basics: Module, Klassen und Co."},"content":{"rendered":"<p><b>Unter VBA strukturieren wir den Code in verschiedene Elemente. Die &uuml;bergeordneten Elemente sind die Module. Hier unterscheiden wir zwischen Klassenmodulen und Standardmodulen. Darunter k&ouml;nnen wir Variable, Konstanten und &auml;hnliche deklarieren sowie auszuf&uuml;hrende Anweisungen unterbringen. Diese Anweisungen m&uuml;ssen eine Voraussetzung erf&uuml;llen: Sie m&uuml;ssen in einer Sub- oder Function-Prozedur oder innerhalb einer Property-Methode eingetragen werden. In diesem Artikel schauen wir uns die Grundlagen von Modulen, Klassenmodulen und Objektmodulen im Detail an.<\/b><\/p>\n<h2>Module unter VBA<\/h2>\n<p>Module sind im Prinzip Textdokumente, die Code aufnehmen k&ouml;nnen. Allerdings sind diese Textdokumente nicht in Form einzelner Dateien verf&uuml;gbar, wie es beispielsweise bei anderen Entwicklungsumgebungen beziehungsweise Programmiersprachen der Fall ist, sondern sie sind alle in einer einzigen Datei gespeichert. Unter Access befinden sich die Module gemeinsam mit den &uuml;brigen Elementen wie Tabellen, Abfragen, Formularen und Berichten direkt in der <b>.accdb<\/b>-Datei. Unter Excel, Word und PowerPoint landen sie im jeweiligen Dokument. Unter Outlook, wo es keine Dateien wie bei den anderen Office-Anwendungen gibt, liegt das VBA-Projekt sogar in Form einer eigenen Datei vor. <\/p>\n<p>Module lassen sich allerdings auch von den &uuml;brigen Office-Anwendungen als Textdateien exportieren und so kannst Du sie auch in anderen Office-Dokumenten beziehungsweise Access-Datenbanken wieder importieren.<\/p>\n<h2>Modularten<\/h2>\n<p>Es gibt eigentlich nur zwei Modularten:<\/p>\n<ul>\n<li><b>Klassenmodule<\/b>: Dies sind Module mit einigen besonderen Eigenschaften. In der Regel m&uuml;ssen diese erst initialisiert und mit einer Objektvariablen referenziert werden, damit man mit den enthaltenen Elementen arbeiten kann. In manchen F&auml;llen kann man jedoch auch direkt auf diese zugreifen, ohne dass man sie explizit initialisieren muss. Beispiele f&uuml;r Klassenmodule sind die Module von Formularen und Berichten unter Access, die Module f&uuml;r die Arbeitsmappe und die einzelnen Tabellen unter Excel, das Modul <b>ThisDocument <\/b>zu einem Word-Dokument oder auch das Modul <b>ThisOutlookSession <\/b>unter Outlook.<\/li>\n<li><b>Standardmodule<\/b>: Standardmodule kann man den VBA-Projekten aller Office-Anwendungen hinzuf&uuml;gen. Sie m&uuml;ssen im Gegensatz zu Klassenmodulen nicht initialisiert werden, daher stehen die darin enthaltenen Variablen, <b>Sub<\/b>&#8211; und <b>Function<\/b>-Prozeduren und andere Elemente jederzeit zur Verf&uuml;gung. Standardmodule kann man sehr gut nutzen, um Elemente mit gemeinsamen Eigenschaften zu speichern. So verwende ich beispielsweise immer ein Modul namens <b>mdlTools<\/b>, in dem ich allerlei Prozeduren und Funktionen angelegt habe, die ich an verschiedenen Stellen ben&ouml;tige.<\/li>\n<\/ul>\n<p>Die Klassenmodule k&ouml;nnen wir allerdings noch einmal aufteilen in alleinstehende Klassenmodule und Klassenmodule von Office-Objekten wie Access-Formularen, Word-Dokumenten, Excel-Tabellenbl&auml;ttern et cetera, die beim Anlegen dieser Elemente oder sp&auml;testens beim Hinzuf&uuml;gen von Ereignisprozeduren zu diesen Elementen erstellt werden.<\/p>\n<p>Alleinstehende Klassenmodule sind solche Klassenmodule, die wir selbst erstellen k&ouml;nnen und die nicht mit anderen Elementen wie Formularen, Word-Dokumenten et cetera verkn&uuml;pft sind. In diesem kapseln wir zusammenh&auml;ngende Variablen, Methoden, Funktionen und Ereignisse.<\/p>\n<p>Auf Basis dieser benutzerdefinierten Klassenmodule lassen sich Objekte erstellen, die f&uuml;r die sogenannte objektorientierte Programmierung notwendig sind. Auch wenn die M&ouml;glichkeiten der objektorientierten Programmierung unter VBA nicht so umfangreich sind wie etwa unter C# oder VB.NET, wollen wir diesem Thema einen eigenen Artikel widmen.<\/p>\n<p>Den Unterschied zwischen den Klassenmodulen, die zu einem Objekt geh&ouml;ren, und den alleinstehenden Klassenmodulen erkennst Du an dem Ordner, in dem diese im Projekt-Explorer angezeigt werden.<\/p>\n<p>Unter Excel befinden sich die an Objekte gebundenen Klassenmodule beispielsweise im Ordner <b>Microsoft Excel Objekte<\/b>. Die alleinstehenden Klassenmodule finden wir hingegen im Ordner <b>Klassenmodule<\/b>. Und um die Ordner zu vervollst&auml;ndigen: Die Standardmodule landen in einem Ordner namens <b>Module<\/b>.<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000331\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000331?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000331\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"e5d0bba7c3\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unter VBA strukturieren wir den Code in verschiedene Elemente. Die &uuml;bergeordneten Elemente sind die Module. Hier unterscheiden wir zwischen Klassenmodulen und Standardmodulen. Darunter k&ouml;nnen wir Variablen und &auml;hnliche deklarieren sowie auszuf&uuml;hrende Anweisungen unterbringen. Diese Anweisungen m&uuml;ssen eine Voraussetzung erf&uuml;llen: Sie m&uuml;ssen in einer Sub- oder Function-Prozedur oder innerhalb einer Property-Methode eingetragen werden. In diesem Artikel schauen wir uns die Grundlagen von Modulen, Klassenmodulen und Objektmodulen im Detail an.<\/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":[662022,66042022,44000021,44000025],"tags":[],"yst_prominent_words":[],"class_list":["post-55000331","post","type-post","status-publish","format-standard","hentry","category-662022","category-66042022","category-Entity_Framework","category-VBAProgrammierung"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000331","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=55000331"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000331\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000331"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}