{"id":55000241,"date":"2014-10-01T00:00:00","date_gmt":"2020-01-24T15:59:09","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=241"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"TempVars_unter_VBA","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html","title":{"rendered":"TempVars unter VBA"},"content":{"rendered":"<p class='introduction'>Im Artikel <b>Programmieren mit Makros<\/b> haben Sie bereits die so genannten tempor&auml;ren Variablen, auch <b>TempVars <\/b>genannt, kennen gelernt. Im vorliegenden Artikel vertiefen wir dieses Thema und schauen uns vor allem an, wie Sie die <b>TempVars <\/b>unter VBA nutzen und wie Sie damit die Verbindung zwischen VBA und Makros herstellen. <\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1405_Tempvars.accdb<\/b>.<\/p>\n<h2>Voraussetzungen<\/h2>\n<p><b>TempVars <\/b>wurden erst mit Access 2007 eingef&uuml;hrt. Dementsprechend k&ouml;nnen Sie als Nutzer von Access 2003 und &auml;lter nicht auf dieses Feature zugreifen.<\/p>\n<h2>Tempor&auml;re Variablen<\/h2>\n<p>Tempor&auml;re Variablen sind eigentlich ein Sonderfall des <b>Collection<\/b>-Objekts.Die Unterschiede sind, dass Sie dieses Objekt nicht erst wie ein <b>Collection<\/b>-Objekt deklarieren und instanzieren m&uuml;ssen, sondern dass es immer und &uuml;berall bereitsteht.<\/p>\n<p>Warum nun sollte ich einen Wert in einer tempor&auml;ren Variablen speichern und nicht in einer herk&ouml;mmlichen Variablen<\/p>\n<p>Daf&uuml;r gibt es gleich mehrere Gr&uuml;nde:<\/p>\n<ul>\n<li>Tempor&auml;re Variablen werden im Gegensatz zu herk&ouml;mmlichen Variablen im Falle eines Laufzeitfehlers nicht gel&ouml;scht &#8211; ein Beispiel folgt sp&auml;ter. Sie werden erst beim Schlie&szlig;en der Access-Datei gel&ouml;scht (sofern Sie dies nicht vorher per Makro oder Code erledigt haben).<\/li>\n<li>Tempor&auml;re Variablen k&ouml;nnen Sie sowohl von VBA als auch von Makros aus nutzen.<\/li>\n<\/ul>\n<p>Tempor&auml;re Variablen nehmen Variablen des Typs <b>Variant <\/b>auf, also auch Strings, Zahlen et cetera, aber keine Objekte.<\/p>\n<h2>Tempor&auml;re Variablen im Makros<\/h2>\n<p>Schauen wir kurz auf die Verwendung von tempor&auml;ren Variablen in Makros. Diese legen Sie wie in mit dem Makrobefehl <b>FestlegenTempVar<\/b> fest (siehe Bild 1). In diesem Fall hei&szlig;t die Variable <b>AktuelleAusgabe <\/b>und wird mit dem Wert <b>5\/2014 <\/b>gef&uuml;llt.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_241_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_241_001.png\" alt=\"Festlegen einer tempor&auml;ren Variablen per Makro\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Festlegen einer tempor&auml;ren Variablen per Makro<\/p>\n<p>Das Makro <b>macAktuelleAusgabeAusgeben <\/b>sieht wie in Bild 2 aus und gibt den Inhalt der tempor&auml;ren Variablen in einem Meldungsfenster aus.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_241_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_241_002.png\" alt=\"Ausgabe des Inhalts der tempor&auml;ren Variablen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Ausgabe des Inhalts der tempor&auml;ren Variablen<\/p>\n<p>Das Ergebnis ist das Meldungsfenster aus Bild 3. Der Wert des Ausdrucks <b>[TempVar]![AktuelleAusgabe]<\/b> erscheint als Teil der auszugebenden Zeichenkette. Wichtig: Der Zugriff auf die Elemente der <b>TempVar<\/b>-Auflistung (die hier unsinnigerweise im Singular anzugeben ist) erfolgt &uuml;ber die Ausrufezeichen-Syntax.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_241_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_241_003.png\" alt=\"Per Makro angezeigtes Meldungsfenster mit dem Inhalt einer tempor&auml;ren Variablen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Per Makro angezeigtes Meldungsfenster mit dem Inhalt einer tempor&auml;ren Variablen<\/p>\n<h2>Tempor&auml;re Variable per VBA festlegen<\/h2>\n<p>Wenn Sie eine tempor&auml;re Variable per VBA festlegen m&ouml;chten, erledigne Sie dies interessanterweise nicht mit einer der Methoden des <b>DoCmd<\/b>-Objekts, welches ja fast alle in Makros verwendeten Befehle anbietet.<\/p>\n<p>Stattdessen nutzen Sie direkt die <b>TempVars<\/b>-Auflistung, in diesem Fall die <b>Add<\/b>-Methode dieser Auflistung:<\/p>\n<pre>TempVars.Add   \"AktuelleAusgabe\", \"5\/2014\"<\/pre>\n<p>Eine auf diese Weise festgelegte Variable k&ouml;nnen Sie auch mit dem soeben definierten Makro <b>macAktuelleAusgabeAusgeben <\/b>anzeigen. Damit ist schon einmal sichergestellt, dass Makros und VBA auf die gleichen tempor&auml;ren Variablen zugreifen.<\/p>\n<h2>Per VBA auf eine tempor&auml;re Variable zugreifen<\/h2>\n<p>Wenn Sie von VBA aus den Wert einer tempor&auml;ren Variablen zugreifen m&ouml;chten, verwenden Sie die <b>Item<\/b>-Eigenschaft der <b>TempVars<\/b>-Auflistung und &uuml;bergeben dieser den Namen der ben&ouml;tigten tempor&auml;ren Variablen:<\/p>\n<pre><span style=\"color:blue;\">MsgBox<\/span> \"Die aktuelle Ausgabe hei&szlig;t \"      & TempVars.Item(\"AktuelleAusgabe\")<\/pre>\n<p>Das Ergebnis sieht nun genauso aus wie beim Aufruf des Makros <b>macAktuelleAusgabeAusgeben<\/b>.<\/p>\n<p>Es gibt noch einen weiteren Weg, auf die Inhalte des <b>TempVars<\/b>-Objekts zuzugreifen &#8211; und zwar, indem Sie einfach direkt den Namen der Variablen angeben:<\/p>\n<pre><span style=\"color:blue;\">MsgBox<\/span> \"Die aktuelle Ausgabe hei&szlig;t \"           & TempVars(\"AktuelleAusgabe\")<\/pre>\n<p>Die n&auml;chste Variante ist der Zugriff &uuml;ber den numerischen Index:<\/p>\n<pre><span style=\"color:blue;\">MsgBox<\/span> \"Inhalt der ersten TempVar: \"                           & TempVars(0)<\/pre>\n<p>Damit greifen Sie aber nat&uuml;rlich nicht mehr gezielt auf eine benannte tempor&auml;re Variable zu.<\/p>\n<p>Es gibt einen wichtigen Unterschied beim Zugriff &uuml;ber den Namen der Variablen und &uuml;ber den Index: Wenn Sie &uuml;ber den Namen auf die tempor&auml;re Variable zugreifen, wird schlicht eine leere Zeichenfolge zur&uuml;ckgegeben. Wenn Sie es &uuml;ber den Index versuchen und f&uuml;r den Index keine Variable hinterlegt ist, l&ouml;st dies einen Fehler aus (Fehler <b>2467<\/b>, <b>In dem von Ihnen eingegebenen Ausdruck wird auf ein Objekt verwiesen, das geschlossen oder nicht vorhanden ist<\/b>).<\/p>\n<h2>Wert einer tempor&auml;ren Variablen &auml;ndern<\/h2>\n<p>Den Wert einer tempor&auml;ren Variablen &auml;ndern Sie auf zwei Arten &#8211; entweder durch direkte Zuweisung oder indem Sie die Variable einfach mit der Add-Methode neu erstellen. Die erste Version sieht so aus:<\/p>\n<pre>TempVars(\"AktuelleAusgabe\") = \"6\/2014\"<\/pre>\n<p>Oder so:<\/p>\n<pre>TempVars(0) = \"6\/2014\"<\/pre>\n<p>Beim &uuml;berschreiben verwenden Sie diesen Befehl:<\/p>\n<pre>TempVars.Add(\"AktuelleAusgabe\")                                 \"6\/2014\"<\/pre>\n<p>Wichtig: Nicht nur die letztere Variante legt eine neue tempor&auml;re Variable an, wenn diese noch nicht vorhanden ist &#8211; auch die einfache Zuweisung erzeugt gegebenenfalls eine neue tempor&auml;re Variable.<\/p>\n<h2>Alle TempVars durchlaufen<\/h2>\n<p>Die einfachste M&ouml;glichkeit, die Werte aller tempor&auml;ren Variablen auszugeben, ist das Durchlaufen aller <b>TempVars <\/b>in einer <b>For Each<\/b>-Schleife. Dabei verwenden wir eine Variable des Typs <b>TempVar<\/b>, um die aktuelle tempor&auml;re Variable zu referenzieren. Die Prozedur aus Listing 1 zeigt, wie dies funktioniert.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AlleTempVarsAusgeben()\r\n     <span style=\"color:blue;\">Dim <\/span>objTempVar<span style=\"color:blue;\"> As <\/span>TempVar\r\n     For Each objTempVar In TempVars\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Name: \" & objTempVar.Name & <span style=\"color:blue;\">vbCrLf<\/span> & \"Wert: \" & objTempVar.Value\r\n     <span style=\"color:blue;\">Next<\/span> objTempVar\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 1: Ausgeben aller tempor&auml;ren Variablen und ihrer Werte<\/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>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\/55000241\/\">\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\/55000241?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\/55000241\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\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>Im Artikel <b>Programmieren mit Makros<\/b> haben Sie bereits die so genannten tempor&auml;ren Variablen, auch <b>TempVars <\/b>genannt, kennen gelernt. Im vorliegenden Artikel vertiefen wir dieses Thema und schauen uns vor allem an, wie Sie die <b>TempVars <\/b>unter VBA nutzen und wie Sie damit die Verbindung zwischen VBA und Makros herstellen. <\/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":[662014,66052014,44000011],"tags":[],"class_list":["post-55000241","post","type-post","status-publish","format-standard","hentry","category-662014","category-66052014","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>TempVars unter VBA - Access [basics]<\/title>\n<meta name=\"description\" content=\"Im Artikel Programmieren mit Makros haben Sie bereits die so genannten tempor\u00e4ren Variablen, auch TempVars genannt, kennen gelernt. Im vorliegenden Artikel vertiefen wir dieses Thema und schauen uns vor allem an, wie Sie die TempVars unter VBA nutzen und wie Sie damit die Verbindung zwischen VBA und Makros herstellen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TempVars unter VBA - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Im Artikel Programmieren mit Makros haben Sie bereits die so genannten tempor\u00e4ren Variablen, auch TempVars genannt, kennen gelernt. Im vorliegenden Artikel vertiefen wir dieses Thema und schauen uns vor allem an, wie Sie die TempVars unter VBA nutzen und wie Sie damit die Verbindung zwischen VBA und Makros herstellen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:09+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_241_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\/TempVars_unter_VBA.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_241_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html\",\"name\":\"TempVars unter VBA - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:09+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Im Artikel Programmieren mit Makros haben Sie bereits die so genannten tempor\\u00e4ren Variablen, auch TempVars genannt, kennen gelernt. Im vorliegenden Artikel vertiefen wir dieses Thema und schauen uns vor allem an, wie Sie die TempVars unter VBA nutzen und wie Sie damit die Verbindung zwischen VBA und Makros herstellen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.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\/TempVars_unter_VBA.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/TempVars_unter_VBA.html\",\"name\":\"TempVars unter VBA\"}}]},{\"@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\/55000241","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=55000241"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000241\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}