{"id":55000087,"date":"2012-08-01T00:00:00","date_gmt":"2020-01-24T15:58:00","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=87"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"For_EachSchleifen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html","title":{"rendered":"For Each-Schleifen"},"content":{"rendered":"<p class='introduction'>Die For&#8230;Next-Schleife ist Ihnen l&auml;ngst bekannt. Etwas weniger oft nutzt man die For Each-Schleife. Der Hauptgrund ist, dass diese nur mit Auflistungen zusammenarbeitet, also mit Objekten, die meiste mehrere gleichartige Objekte zusammenfassen. Beispiele sind die Formulare einer Datenbank oder die Steuerelemente eines Formulars. Anhand dieser Beispiele lernen Sie in diesem Beitrag die Verwendung von For Each-Schleifen kennen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1110_ForEach.mdb<\/b>.<\/p>\n<h2>Jeder nur einmal!<\/h2>\n<p>Die <b>For Each<\/b>-Schleife ist bestens dazu geeignet. Elemente von Auflistungen unter VBA zu durchlaufen. Auflistungen Was f&uuml;r Auflistungen Nun: In objektorientierten Sprachen, wie es auch VBA teilweise ist, gibt es nicht nur Objekte mit bestimmten Eigenschaften (wie Formulare, Steuerelemente, Datenbanken oder Tabellen), sondern auch Objekte, die den Zugriff auf solche Elemente etwa &uuml;ber die Angabe eines Indexes erlauben.<\/p>\n<h2>Offene Formulare durchlaufen<\/h2>\n<p>Wenn Sie beispielsweise einmal wissen m&ouml;chten, welche Formulare aktuell in Ihrer Datenbank ge&ouml;ffnet sind, hilft Ihnen eine <b>For Each<\/b>-Schleife weiter. Die Auflistung <b>AllForms <\/b>des CurrentProject-Objekts liefert die notwendigen Daten. Mit der folgenden Anweisung k&ouml;nnen Sie etwa im Direktfenster die Anzahl der Formulare der aktuellen Datenbank abfragen:<\/p>\n<pre>  CurrentProject.AllForms.Count\r\n 4 <\/pre>\n<p>Nun wollen Sie aber alle Formulare durchlaufen und deren Namen ausgeben. Um dies innerhalb einer <b>For Each<\/b>-Schleife durchzuf&uuml;hren, brauchen Sie zun&auml;chst einmal eine Objektvariable als Laufvariable. In diesem Fall verwenden Sie dazu ein Objekt des Typs <b>AccessObject<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>AccessObject<\/pre>\n<p>Wie finden Sie den Typ heraus Ganz einfach: &ouml;ffnen Sie den Objektkatalog von Access mit der Tastenkombination <b>F2<\/b>, suchen Sie dort nach der Auflistungsklasse (hier <b>AllForms<\/b>) und klicken Sie auf die Eigenschaft, die so aussieht, als ob sie einen Verweis auf eines der enthaltenen Elemente zur&uuml;ckliefern k&ouml;nnte &#8211; in diesem Fall also <b>Item<\/b>. Ganz unten erfahren Sie dann, dass <b>Item <\/b>den Typ <b>AccessObject <\/b>besitzt (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_87_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_87_001.png\" alt=\"Der Objektkatalog hilft, den Typ eines Auflistungsobjekts zu ermitteln.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Der Objektkatalog hilft, den Typ eines Auflistungsobjekts zu ermitteln.<\/p>\n<p>Damit k&ouml;nnen Sie dann die <b>For Each<\/b>-Schleife zusammensetzen, die wie folgt aussieht:<\/p>\n<pre>For Each frm In CurrentProject.AllForms\r\n     <span style=\"color:blue;\">Debug.Print<\/span> frm.Name\r\n<span style=\"color:blue;\">Next<\/span> frm<\/pre>\n<p>Diese Schleife durchl&auml;uft alle Elemente der <b>AllForms<\/b>-Auflistung und weist das jeweils aktuelle Element der Variablen <b>frm <\/b>zu. Damit k&ouml;nnen Sie dann innerhalb der Schleife anstellen, was Sie m&ouml;chten. Gut, es gibt eine Ausnahme: das L&ouml;schen der enthaltenen Elemente geht auf diese Weise schief.<\/p>\n<h2>Ge&ouml;ffnete Formulare durchlaufen<\/h2>\n<p>Viele Objekte k&ouml;nnen Sie auf verschiedene Arten durchlaufen. Wenn Sie beispielsweise nur die aktuell ge&ouml;ffneten Elemente referenzieren m&ouml;chten, nutzen Sie die <b>Forms<\/b>-Auflistung und durchlaufen alle darin enthaltenen Objekte des Typs <b>Form<\/b>. Das sieht dann so aus:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Form\r\nFor Each frm In Forms\r\n     <span style=\"color:blue;\">Debug.Print<\/span> frm.Name\r\n<span style=\"color:blue;\">Next<\/span> frm<\/pre>\n<h2>Alternative mit For&#8230;Next<\/h2>\n<p>Das Gleiche gelingt auch mit einer <b>For&#8230;Next<\/b>-Schleife &#8211; die <b>For Each<\/b>-Schleife ist nur etwas eleganter. Mit <b>For&#8230;Next<\/b> sieht das Durchlaufen der Formulare wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\nFor i = 0 To Forms.Count - 1\r\n     <span style=\"color:blue;\">Debug.Print<\/span> Forms(i).Name\r\n<span style=\"color:blue;\">Next<\/span> i<\/pre>\n<p>Und wenn Sie auch hier ein <b>Form<\/b>-Objekt nutzen m&ouml;chten, f&uuml;ge Sie noch ein paar Zeilen hinzu:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Form\r\n<span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\nFor i = 0 To Forms.Count - 1\r\n     <span style=\"color:blue;\">Set<\/span> frm = Forms(i)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> frm.Name\r\n<span style=\"color:blue;\">Next<\/span> i<\/pre>\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\/55000087\/\">\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\/55000087?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\/55000087\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"28cddb3e50\"\/>\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>Die For&#8230;Next-Schleife ist Ihnen l&auml;ngst bekannt. Etwas weniger oft nutzt man die For Each-Schleife. Der Hauptgrund ist, dass diese nur mit Auflistungen zusammenarbeitet, also mit Objekten, die meiste mehrere gleichartige Objekte zusammenfassen. Beispiele sind die Formulare einer Datenbank oder die Steuerelemente eines Formulars. Anhand dieser Beispiele lernen Sie in diesem Beitrag die Verwendung von For Each-Schleifen kennen.<\/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":[66102011,662011,44000011],"tags":[],"class_list":["post-55000087","post","type-post","status-publish","format-standard","hentry","category-66102011","category-662011","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>For Each-Schleifen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Die For...Next-Schleife ist Ihnen l\u00e4ngst bekannt. Etwas weniger oft nutzt man die For Each-Schleife. Der Hauptgrund ist, dass diese nur mit Auflistungen zusammenarbeitet, also mit Objekten, die meiste mehrere gleichartige Objekte zusammenfassen. Beispiele sind die Formulare einer Datenbank oder die Steuerelemente eines Formulars. Anhand dieser Beispiele lernen Sie in diesem Beitrag die Verwendung von For Each-Schleifen kennen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"For Each-Schleifen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Die For...Next-Schleife ist Ihnen l\u00e4ngst bekannt. Etwas weniger oft nutzt man die For Each-Schleife. Der Hauptgrund ist, dass diese nur mit Auflistungen zusammenarbeitet, also mit Objekten, die meiste mehrere gleichartige Objekte zusammenfassen. Beispiele sind die Formulare einer Datenbank oder die Steuerelemente eines Formulars. Anhand dieser Beispiele lernen Sie in diesem Beitrag die Verwendung von For Each-Schleifen kennen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58: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_87_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=\"8\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\/For_EachSchleifen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_87_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html\",\"name\":\"For Each-Schleifen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Die For...Next-Schleife ist Ihnen l\\u00e4ngst bekannt. Etwas weniger oft nutzt man die For Each-Schleife. Der Hauptgrund ist, dass diese nur mit Auflistungen zusammenarbeitet, also mit Objekten, die meiste mehrere gleichartige Objekte zusammenfassen. Beispiele sind die Formulare einer Datenbank oder die Steuerelemente eines Formulars. Anhand dieser Beispiele lernen Sie in diesem Beitrag die Verwendung von For Each-Schleifen kennen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.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\/For_EachSchleifen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/For_EachSchleifen.html\",\"name\":\"For Each-Schleifen\"}}]},{\"@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\/55000087","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=55000087"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000087\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}