{"id":55000678,"date":"2025-06-01T00:00:00","date_gmt":"2025-06-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/678"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"VBA_basics_Projekten_Modulen_und_Klassen_verwalten","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html","title":{"rendered":"VBA [basics]: Projekten, Modulen und Klassen verwalten"},"content":{"rendered":"<p class='introduction'>In einer Access-Datei, also einer Datei mit der Endung <b>.mdb <\/b>oder <b>.accdb <\/b>(oder anderen, &auml;hnlichen Endungen f&uuml;r Spezialf&auml;lle), finden wir genau ein VBA-Projekt, das zu dieser Datei geh&ouml;rt (es kann noch weitere eingebundene Projekte geben, aber das ist ein fortgeschrittenes Thema). Dieses Projekt enth&auml;lt Module und Verweise auf einzubindende Bibliotheken. Die Module teilen sich wieder auf in Standardmodule und Klassenmodule. Die Klassenmodule teilen sich auf in alleinstehende Klassenmodule und Klassenmodule, die zu einem Formular oder Bericht geh&ouml;ren. Diese Begriffe schauen wir uns im vorliegenden Artikel an und zeigen, wie wir diese optimal im VBA-Editor verwalten k&ouml;nnen.<\/p>\n<h2>VBA-Projekte<\/h2>\n<p>Wenn wir den VBA-Editor wie im Artikel <b>VBA [basics]: Aller Anfang ist leicht <\/b>(<b>www.access-basics.de\/677<\/b>) beschrieben erstmalig &ouml;ffnen und noch keine Module angelegt haben, finden wir die Anzeige des VBA-Projekts, das zu der aktuell ge&ouml;ffneten Datenbank geh&ouml;rt, im Bereich <b>Projekt &#8211; Database <\/b>vor (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_678_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_678_001.png\" alt=\"Ein neues, leeres VBA-Projekt\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Ein neues, leeres VBA-Projekt<\/p>\n<p>Standardmodule, alleinstehende Klassenmodule und Klassenmodule von Formularen und Berichten zeigt dieser Bereich dann unterhalb des VBA-Projekts an.<\/p>\n<h2>Mehr als ein VBA-Projekt<\/h2>\n<p>Es kann auch passieren, dass der Projekt-Explorer mehr als ein VBA-Projekt anzeigt. Das ist beispielsweise der Fall, wenn wir in Access ein Access-Add-In ge&ouml;ffnet haben. Dann zeigt der Projekt-Explorer auch das VBA-Projekt des Add-Ins an. Wir k&ouml;nnen auch eine Access-Datenbank als VBA-Bibliothek zum VBA-Projekt der aktuellen Datenbank hinzuf&uuml;gen. Dann k&ouml;nnen wir die in dieser Datenbank angelegten VBA-Elemente in der aktuellen Datenbank nutzen.<\/p>\n<p>Das an dieser Stelle jedoch nur als Hinweis f&uuml;r den Fall, dass Du einmal ein Access-Add-In nutzen und Dich dann wunderst, woher das zus&auml;tzliche VBA-Projekt im Projekt-Explorer stammt.<\/p>\n<h2>Name des VBA-Projekts &auml;ndern<\/h2>\n<p>Das VBA-Projekt zu einer neuen Access-Datenbank erh&auml;lt standardm&auml;&szlig;ig die Bezeichnung <b>Database<\/b>. Diesen bekommen wir im Projekt-Explorer und im Eigenschaften-Bereich an jeder denkbaren Stelle pr&auml;sentiert (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_678_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_678_002.png\" alt=\"Der Projektname ist sehr pr&auml;sent im Projekt- und Eigenschaften-Bereich\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Der Projektname ist sehr pr&auml;sent im Projekt- und Eigenschaften-Bereich<\/p>\n<p>Den Projektnamen sollten wir direkt beim ersten &Ouml;ffnen des VBA-Editors f&uuml;r diese Datenbank &auml;ndern. Der Grund: Da das VBA-Projekt jeder Datenbank diesen Namen standardm&auml;&szlig;ig erh&auml;lt, kann passieren, dass wir eine andere Datenbank mit dem gleichen VBA-Projektnamen als Access-Add-In oder Bibliotheksdatenbank einbinden. Dann kommt es wegen mehrerer VBA-Projekte mit dem gleichen Namen zu Konflikten.<\/p>\n<p>Das Umbenennen ist einfach: Wenn der Eigenschaften-Bereich noch nicht eingeblendet ist, machen wir diesen mit der Taste <b>F4 <\/b>sichtbar. Dann markieren wir im Projekt-Explorer den Eintrag f&uuml;r das VBA-Projekt und &auml;ndern den Wert der Eigenschaft <b>(Name) <\/b>im Eigenschaften-Bereich.<\/p>\n<p>Wir k&ouml;nnten den Namen der Datenbankdatei mit dem Pr&auml;fix <b>prj <\/b>(f&uuml;r <b>Projekt<\/b>) verwenden, also bei einer Datenbankdatei namens <b>Beispiel.accdb <\/b>beispielsweise <b>prjBeispiel<\/b>.<\/p>\n<h2>Standardmodule und alleinstehende Klassenmodule<\/h2>\n<p>In der n&auml;chsten Ebene unter dem VBA-Projekt finden wir die Module. Davon gibt es drei Arten:<\/p>\n<ul>\n<li>Standardmodule<\/li>\n<li>Alleinstehende Klassenmodule<\/li>\n<li>Klassenmodule von Formularen oder Berichten<\/li>\n<\/ul>\n<h2>Standardmodule<\/h2>\n<p>Standardmodule enthalten Prozeduren, Funktionen, Variablen und andere VBA-Elemente, die bei &ouml;ffentlicher Deklaration von &uuml;berall innerhalb der Datenbank und des VBA-Projekts aus verwendet werden k&ouml;nnen. Beispielsweise k&ouml;nnen wir eine &ouml;ffentlich deklarierte Funktion in einem Standardmodul von Routinen in anderen Modulen aus aufrufen. Oder wir deklarieren &ouml;ffentliche Variablen, deren Werte von &uuml;berall gesetzt und gelesen werden k&ouml;nnen.<\/p>\n<p>Au&szlig;erdem gibt es Klassenmodule, die sich wiederum in zwei Gruppen aufteilen:<\/p>\n<ul>\n<li>alleinstehende Klassenmodule und<\/li>\n<li>Klassenmodule von Formularen und Berichten<\/li>\n<\/ul>\n<p>Diese stellen wir nachfolgend vor.<\/p>\n<h2>Alleinstehende Klassenmodule<\/h2>\n<p>Klassenmodule stellen Eigenschaften, Methoden und Ereignisse zur Verf&uuml;gung. Wir m&uuml;ssen als Objekt deklariert und initialisiert werden, dann k&ouml;nnen wir &uuml;ber den Namen der Objektvariablen auf die enthaltenen Eigenschaften, Methoden und Ereignisse zugreifen.<\/p>\n<p>Solche Klassen k&ouml;nnen wir selbst definieren, aber es gibt auch eingebaute Klassen in den vom aktuellen VBA-Projekt referenzierten Bibliotheken. Diese stellen zum Beispiel Klassen bereit, mit denen wir die Eigenschaften und Methoden der aktuellen Datenbank nutzen (<b>Database<\/b>) oder mit denen wir auf die Daten einer Tabelle oder Abfrage zugreifen k&ouml;nnen (<b>Recordset<\/b>).<\/p>\n<p>Mehr zu solchen Klassen erf&auml;hrst Du sp&auml;ter im Artikel <b>VBA [basics]: Mit Klassenmodulen arbeiten <\/b>(<b>www.access-basics.de\/680<\/b>).<\/p>\n<h2>Klassenmodule von Formularen und Berichten<\/h2>\n<p>F&uuml;r Formulare und Berichte legt Access jeweils ein eigenes Klassenmodul an, sobald wir f&uuml;r ein Ereignis eines Formulars oder Berichts oder eines darin enthaltenen Steuerelements eine Ereignisprozedur hinterlegen wollen. Diese dienen vorrangig dazu, die verschiedenen Ereignisprozeduren zu implementieren wie zum Beispiel solche, die beim &Ouml;ffnen oder Schlie&szlig;en des Formulars ausgel&ouml;st werden, beim Anzeigen eines Datensatzes, beim Bet&auml;tigen einer Schaltfl&auml;che oder auch beim &Auml;ndern des Wertes eines Steuerelements. Mehr zu Ereignissen in Formularen und Berichten erf&auml;hrst Du unter <b>VBA [basics]: Klassenmodule f&uuml;r Formulare und Berichte <\/b>(<b>www.access-basics.de\/682<\/b>).<\/p>\n<h2>Standardmodule und alleinstehende Klassenmodule anlegen<\/h2>\n<p>Standardmodule und alleinstehende Klassenmodule k&ouml;nnen wir auf zwei Arten anlegen:<\/p>\n<ul>\n<li>&Uuml;ber das Ribbon von Access<\/li>\n<li>&Uuml;ber den VBA-Editor<\/li>\n<\/ul>\n<h2>Module anlegen von Access aus<\/h2>\n<p>Von Access aus legen wir ein Modul &uuml;ber die Befehle der Gruppe <b>Makros und Code <\/b>des Tabs <b>Erstellen <\/b>an (siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_678_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_678_003.png\" alt=\"Anlegen von Modulen &uuml;ber das Access-Hauptfenster\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Anlegen von Modulen &uuml;ber das Access-Hauptfenster<\/p>\n<p>Hier finden wir die folgenden Befehle:<\/p>\n<ul>\n<li><b>Modul<\/b>: Legt ein Standardmodul an und zeigt es im VBA-Editor an.<\/li>\n<li><b>Klassenmodul<\/b>: Legt ein Klassenmodul an und zeigt es im VBA-Editor an.<\/li>\n<li><b>Visual Basic<\/b>: &Ouml;ffnet den VBA-Editor.<\/li>\n<\/ul>\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>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 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:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000678\/\">\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=\"\/index.php\/data\/wp\/v2\/posts\/55000678?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\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000678\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"bbdee2443c\"\/>\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>In einer Access-Datei, also einer Datei mit der Endung <b>.mdb <\/b>oder <b>.accdb <\/b>(oder anderen, &auml;hnlichen Endungen f&uuml;r Spezialf&auml;lle), finden wir genau ein VBA-Projekt, das zu dieser Datei geh&ouml;rt (es kann noch weitere eingebundene Projekte geben, aber das ist ein fortgeschrittenes Thema). Dieses Projekt enth&auml;lt Module und Verweise auf einzubindende Bibliotheken. Die Module teilen sich wieder auf in Standardmodule und Klassenmodule. Die Klassenmodule teilen sich auf in alleinstehende Klassenmodule und Klassenmodule, die zu einem Formular oder Bericht geh&ouml;ren. Diese Begriffe schauen wir uns im vorliegenden Artikel an und zeigen, wie wir diese optimal im VBA-Editor verwalten k&ouml;nnen.<\/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":[662025,66032025,44000011],"tags":[],"class_list":["post-55000678","post","type-post","status-publish","format-standard","hentry","category-662025","category-66032025","category-VBAGrundlagen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>VBA [basics]: Projekten, Modulen und Klassen verwalten - Access [basics]<\/title>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VBA [basics]: Projekten, Modulen und Klassen verwalten - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"In einer Access-Datei, also einer Datei mit der Endung .mdb oder .accdb (oder anderen, &auml;hnlichen Endungen f&uuml;r Spezialf&auml;lle), finden wir genau ein VBA-Projekt, das zu dieser Datei geh&ouml;rt (es kann noch weitere eingebundene Projekte geben, aber das ist ein fortgeschrittenes Thema). Dieses Projekt enth&auml;lt Module und Verweise auf einzubindende Bibliotheken. Die Module teilen sich wieder auf in Standardmodule und Klassenmodule. Die Klassenmodule teilen sich auf in alleinstehende Klassenmodule und Klassenmodule, die zu einem Formular oder Bericht geh&ouml;ren. Diese Begriffe schauen wir uns im vorliegenden Artikel an und zeigen, wie wir diese optimal im VBA-Editor verwalten k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_678_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"12\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_678_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html\",\"name\":\"VBA [basics]: Projekten, Modulen und Klassen verwalten - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html#primaryimage\"},\"datePublished\":\"2025-06-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Projekten_Modulen_und_Klassen_verwalten.html\",\"name\":\"VBA [basics]: Projekten, Modulen und Klassen verwalten\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000678"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000678\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}