{"id":55000319,"date":"2022-04-01T00:00:00","date_gmt":"2023-03-02T17:05:12","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=319"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"VBABasics_Variablen","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/VBABasics_Variablen\/","title":{"rendered":"VBA-Basics: Variablen"},"content":{"rendered":"<p><b>Variablen sind die M&ouml;glichkeit unter VBA, bestimmte Werte wie Zahlen, Texte, Datumsangaben oder auch komplexere Elemente wie Verweise auf Objekte der Benutzeroberfl&auml;che der Office-Anwendungen oder auf selbst erstellte Objekte f&uuml;r den Zeitraum der Benutzung zu speichern und wieder abrufen zu k&ouml;nnen. Kurz gesagt: Mit Variablen merken wir uns verschiedene Dinge, die wir noch mal brauchen k&ouml;nnen. Dieser Artikel stellt die verschiedenen Basisdatentypen f&uuml;r Variablen vor und zeigt, wie wir diese deklarieren, mit Werten oder Verweisen f&uuml;llen und diese wieder abfragen. Au&szlig;erdem gehen wir auch auf den G&uuml;ltigkeitsbereich, die G&uuml;ltigkeitsdauer und die Frage der Benennung von Variablen ein.<\/b><\/p>\n<h2>Voraussetzung<\/h2>\n<p>Im ersten Teil dieser Artikelreihe namens <b>VBA-Basics: Schnellstart <\/b>(<b>www.vbentwickler.de\/318<\/b>) haben wir gezeigt, wie Du ein Modul in einem VBA-Projekt einer Office-Anwendung anlegst.<\/p>\n<p>Im vorliegenden Artikel bauen wir darauf auf und gehen davon aus, dass Du in irgendeiner Office-Anwendung bereits ein Modul erstellt hast, das wir zum Experimentieren mit Variablen nutzen k&ouml;nnen.<\/p>\n<h2>Was sind Variablen?<\/h2>\n<p>Falls Du noch gar nicht wei&szlig;t, was eine Variable ist, hier eine Erkl&auml;rung: Eine Variable ist eine Art Beh&auml;lter f&uuml;r einen Wert, dem wir einen Namen geben, um dar&uuml;ber den Beh&auml;lter f&uuml;llen und auslesen zu k&ouml;nnen.<\/p>\n<p>Neben dem Namen legen wir in der Regel auch noch fest, welcher Art die Werte sind, welche die Variable aufnehmen k&ouml;nnen soll, also zum Beispiel Texte, Zahlen verschiedener Wertebereiche und Genauigkeiten, Datumsangaben oder Ja-\/Nein-Werte.<\/p>\n<p>Variablen k&ouml;nnen aber auch komplexe Objekte enthalten. Diese werden dann faktisch nicht in der Variablen gespeichert, sondern in der Variable landet nur ein Verweis auf die Speicherstelle des komplexen Objekts. Doch dazu sp&auml;ter mehr.<\/p>\n<h2>Variable deklarieren<\/h2>\n<p>Damit wir sehen, was eine Variable kann und was n&ouml;tig ist, um diese &uuml;berhaupt zu nutzen, verwenden wir das folgende Beispiel. Die wichtigste Voraussetzung f&uuml;r die Verwendung einer Variablen ist die Deklaration. Durch die Deklaration legen wir f&uuml;r die Variable den Namen fest, die zul&auml;ssigen Werte beziehungsweise den Datentyp sowie den G&uuml;ltigkeitsbereich und in gewisser Weise auch die G&uuml;ltigkeitsdauer.<\/p>\n<h2>Modul als Voraussetzung<\/h2>\n<p>Im ersten Teil dieser Artikelreihe haben wir schon gesehen, wie wir ein Modul zu einem VBA-Projekt hinzuf&uuml;gen. Ein solches Modul ben&ouml;tigen wir auf jeden Fall, um eine Variable zu deklarieren &#8211; wo sonst sollen wir diese hinschreiben?<\/p>\n<h2>String-Variable deklarieren<\/h2>\n<p>Also schreiben wir einfach einmal die erste Variable mit dem Datentyp <b>String <\/b>in dieses Modul. Diese Variable soll den Namen <b>strText <\/b>erhalten:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>strText<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Dies liefert die folgenden Informationen:<\/p>\n<ul>\n<li>Die <b>Dim<\/b>-Anweisung gibt an, dass nun die Deklaration einer Variablen folgt.<\/li>\n<li><b>strText <\/b>ist der Name der Variablen.<\/li>\n<li>Das Schl&uuml;sselwort <b>As <\/b>leitet die Angabe des Datentyps ein.<\/li>\n<li><b>String <\/b>ist der Datentyp der Variablen. Das hei&szlig;t, die Variable kann Zeichenketten aufnehmen.<\/li>\n<\/ul>\n<p>Was k&ouml;nnen wir nun mit dieser Variablen anfangen? Wir k&ouml;nnen sie beispielsweise mit einem Wert f&uuml;llen, zum Beispiel der Zeichenkette <b>Beispieltext<\/b>.<\/p>\n<p>Da es sich hierbei um eine Zeichenkette handelt, m&uuml;ssen wir sie in Anf&uuml;hrungszeichen einfassen. Dann k&ouml;nnen wir den Wert im Direktbereich des VBA-Editors der Variablen <b>strText <\/b>zuweisen:<\/p>\n<pre>strText = \"Beispieltext\"<\/pre>\n<p>Danach lassen wir uns den Wert im Direktbereich mit der <b>Debug.Print<\/b>-Anweisung ausgeben:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> strText<\/pre>\n<p>Das Ergebnis sehen wir in Bild 1. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/pic_319_001.png\" alt=\"Testen einer Variablen\" width=\"424,6267\" height=\"264,5376\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Testen einer Variablen<\/span><\/b><\/p>\n<h2>Private oder Public?<\/h2>\n<p>Um den G&uuml;ltigkeitsbereich einer Variablen festzulegen, haben wir verschiedene M&ouml;glichkeiten. Die erste ist der Ort, an dem wir die Variable festlegen.<\/p>\n<p>Die zweite ist das Schl&uuml;sselwort, mit dem wir die Deklaration einleiten. Wir k&ouml;nnen grunds&auml;tzlich zwischen den folgenden drei G&uuml;ltigkeitsbereichen unterscheiden:<\/p>\n<ul>\n<li>Innerhalb einer Prozedur<\/li>\n<li>Innerhalb eines Moduls<\/li>\n<li>Im kompletten VBA-Projekt<\/li>\n<\/ul>\n<h2>Variablen nur innerhalb von Prozeduren nutzen<\/h2>\n<p>Wenn wir eine Variable nur innerhalb einer Prozedur verwenden wollen, dann deklarieren wir sie genau in dieser Prozedur, also beispielsweise wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>ProzedurMitVariable()\r\n     <span style=\"color:blue;\">Dim <\/span>strProzedur<span style=\"color:blue;\"> As String<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wir k&ouml;nnen nun nur noch innerhalb der Prozedur auf diese Variable zugreifen &#8211; beispielsweise, indem wir diese mit einem Wert f&uuml;llen und den Wert der Variablen im Direktbereich ausgeben:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>ProzedurMitVariable()\r\n     <span style=\"color:blue;\">Dim <\/span>strProzedur<span style=\"color:blue;\"> As String<\/span>\r\n     strProzedur = \"Beispieltext\"\r\n     <span style=\"color:blue;\">Debug.Print<\/span> strProzedur\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Nun k&ouml;nntest Du versuchen, die innerhalb dieser Prozedur deklarierte Variable vom Direktbereich aus zu f&uuml;llen und abzurufen, indem Du diese im Direktbereich ausgibst:<\/p>\n<pre>strProzedur = \"Beispieltext\"\r\n<span style=\"color:blue;\">Debug.Print<\/span> strProzedur<\/pre>\n<p>Das funktioniert zwar, aber der Direktbereich hat eigene Regeln, was die G&uuml;ltigkeit von Elementen angeht. Viel wichtiger ist, dass wir diese Variable nicht von anderen Prozeduren aus setzen oder lesen k&ouml;nnen.<\/p>\n<p>Das probieren wir aus, indem wir in einer anderen Prozedur im gleichen Modul versuchen, diese Variable zu setzen:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>Zugriffsversuch()\r\n     strProzedur = \"Noch ein Text\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>F&uuml;hren wir diese Prozedur aus, erhalten wir die Fehlermeldung aus Bild 2. Der G&uuml;ltigkeitsbereich der Variablen <b>strProzedur <\/b>ist also auf die Prozedur selbst beschr&auml;nkt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_02\/pic_319_002.png\" alt=\"Versuch, auf eine private Variable zuzugreifen\" width=\"549,6265\" height=\"251,0315\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Versuch, auf eine private Variable zuzugreifen<\/span><\/b><\/p>\n<h2>Variablen nur innerhalb eines Moduls nutzen<\/h2>\n<p>Wenn wir eine Variable in einer Prozedur setzen und diese in einer anderen Prozedur auslesen wollen, dann k&ouml;nnen wir die Variable weder in der einen noch in der anderen Prozedur deklarieren. Vielmehr deklarieren wir diese dann im allgemeinen Teil des Moduls, was bedeutet: Hinter der letzten <b>Option&#8230;<\/b>-Anweisung und vor der ersten Prozedur.<\/p>\n<p>Wir deklarieren die Variable wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>strModulweit<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Die erste Prozedur im gleichen Modul soll die Variable mit einem Wert f&uuml;llen:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>VariableSetzen()\r\n     strModulweit = \"Modulweit\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/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>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\/55000319\/\">\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\/55000319?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\/55000319\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"29a9ab4ae1\"\/>\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>Variablen sind die M&ouml;glichkeit unter VBA, bestimmte Werte wie Zahlen, Texte, Datumsangaben oder auch komplexere Elemente wie Verweise auf Objekte der Benutzeroberfl&auml;che der Office-Anwendungen oder auf selbst erstellte Objekte f&uuml;r den Zeitraum der Benutzung zu speichern und wieder abrufen zu k&ouml;nnen. Kurz gesagt: Mit Variablen merken wir uns verschiedene Dinge, die wir noch mal brauchen k&ouml;nnen. Dieser Artikel stellt die verschiedenen Basisdatentypen f&uuml;r Variablen vor und zeigt, wie wir diese deklarieren, mit Werten oder Verweisen f&uuml;llen und diese wieder abfragen. Au&szlig;erdem gehen wir auch auf den G&uuml;ltigkeitsbereich, die G&uuml;ltigkeitsdauer und die Frage der Benennung von Variablen ein.<\/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":[66022022,662022,44000023,44000025,44000028],"tags":[],"yst_prominent_words":[],"class_list":["post-55000319","post","type-post","status-publish","format-standard","hentry","category-66022022","category-662022","category-PowerApps","category-VBAProgrammierung","category-Word_programmieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000319","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=55000319"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000319\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000319"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}