{"id":55000707,"date":"2026-02-01T00:00:00","date_gmt":"2026-02-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/707"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"VBA_basics_Variablen_und_Datentypen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html","title":{"rendered":"VBA [basics]: Variablen und Datentypen"},"content":{"rendered":"<p class='introduction'>Wer mit VBA programmiert, kommt nicht weit, ohne das Konzept der Variablen zu verstehen. Variablen sind gewisserma&szlig;en der Arbeitsspeicher eines Programms: Sie nehmen Werte zwischenzeitlich auf, damit wir damit rechnen, sie vergleichen oder weitergeben k&ouml;nnen. Und damit VBA wei&szlig;, was f&uuml;r eine Art von Wert in einer Variablen landet &#8211; eine Zahl, ein Text, ein Datum -, gibt es die Datentypen. Wer die falschen Datentypen w&auml;hlt, riskiert subtile Fehler, die manchmal erst beim Kunden auftauchen. Wer sie richtig einsetzt, schreibt stabileren und schnelleren Code. In diesem Artikel zeigen wir, wie Variablen deklariert werden, welche Datentypen es gibt und wann man welchen verwendet.<\/p>\n<h2>Was ist eine Variable?<\/h2>\n<p>Stell Dir vor, Du berechnest in einer Prozedur den Gesamtpreis aus Menge und Einzelpreis. Du k&ouml;nntest den Einzelpreis direkt als feste Zahl in die Formel schreiben, aber sobald sich der Preis &auml;ndert oder Du denselben Wert an mehreren Stellen ben&ouml;tigst, wird das m&uuml;hsam.<\/p>\n<p>Stattdessen speicherst Du den Wert in einer Variablen und verwendest deren Namen im Code &#8211; dann musst Du den Wert nur an einer einzigen Stelle anpassen.<\/p>\n<p>Eine Variable ist also ein benannter Speicherplatz im Arbeitsspeicher, der w&auml;hrend der Ausf&uuml;hrung einer Prozedur einen Wert aufnehmen und ver&auml;ndern kann.<\/p>\n<p>Der Name der Variablen ist frei w&auml;hlbar, solange er einige Regeln einh&auml;lt: Er darf kein VBA-Schl&uuml;sselwort sein (also nicht <b>Sub<\/b>, <b>End<\/b>, <b>If<\/b> und so weiter), er darf keine Leerzeichen enthalten und er muss mit einem Buchstaben beginnen.<\/p>\n<h2>Warum Option Explicit so wichtig ist<\/h2>\n<p>Bevor wir zur Deklaration von Variablen kommen, m&uuml;ssen wir kurz auf die Einstellung <b>Option Explicit<\/b> eingehen.<\/p>\n<p>Wir haben ihr bereits einen eigenen Artikel gewidmet &#8211; <b>VBA [basics]: Warum Option Explicit wichtig ist<\/b> (<b>www.access-basics.de\/701<\/b>) &#8211; und empfehlen Dir dringend, diesen zu lesen, sofern Du das noch nicht getan hast.<\/p>\n<p>Der Kern der Sache ist folgender: Ohne <b>Option Explicit<\/b> erlaubt VBA es, Variablen einfach zu verwenden, ohne sie vorher zu deklarieren.<\/p>\n<p>Das klingt bequem, f&uuml;hrt aber zu einem der h&auml;ufigsten Fehler &uuml;berhaupt: Ein Tippfehler im Variablennamen wird nicht als Fehler erkannt, sondern als neue Variable behandelt, die schlicht leer ist.<\/p>\n<p>Der Code l&auml;uft weiter &#8211; nur mit dem falschen Wert. Solche Fehler zu finden kostet Stunden.<\/p>\n<p>Mit <b>Option Explicit<\/b> ganz oben in jedem Modul erzwingt VBA, dass jede Variable vor ihrer Verwendung deklariert werden muss.<\/p>\n<p>Du kannst diese Einstellung dauerhaft aktivieren, sodass sie in jedem neuen Modul automatisch steht &#8211; wie das geht, zeigen wir im Artikel <b>VBA [basics]: Optionen des VBA-Editors<\/b> (<b>www.access-basics.de\/683<\/b>).<\/p>\n<h2>Variablen deklarieren<\/h2>\n<p>Eine Variable wird mit dem Schl&uuml;sselwort <b>Dim<\/b> deklariert, gefolgt vom Namen der Variablen und dem Schl&uuml;sselwort <b>As<\/b> sowie dem gew&uuml;nschten Datentyp. Das sieht dann zum Beispiel so aus:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>intAnzahl<span style=\"color:blue;\"><span style=\"color:blue;\"> As Integer<\/span><\/span>\r\n<span style=\"color:blue;\">Dim <\/span>strName<span style=\"color:blue;\"><span style=\"color:blue;\"> As String<\/span><\/span>\r\n<span style=\"color:blue;\">Dim <\/span>datGeburtstag<span style=\"color:blue;\"><span style=\"color:blue;\"> As Date<\/span><\/span><\/pre>\n<p>Variablendeklarationen stehen immer am Anfang einer Prozedur, bevor der eigentliche Code beginnt.<\/p>\n<p>Das ist zwar technisch nicht in allen F&auml;llen zwingend erforderlich, aber es ist eine gute Gewohnheit, die den Code &uuml;bersichtlich h&auml;lt und dazu f&uuml;hrt, dass man auf einen Blick sieht, mit welchen Variablen eine Prozedur arbeitet.<\/p>\n<p>Wichtig: Wenn man mehrere Variablen in einer Zeile deklariert, muss jede ihren eigenen Typ bekommen. Die folgende Schreibweise ist ein klassischer Fallstrick:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>lngA, lngB<span style=\"color:blue;\"><span style=\"color:blue;\"> As Long<\/span><\/span>  'Achtung: lngA ist Variant, \r\n                         'nur lngB ist Long!<\/pre>\n<p>Wer das nicht wei&szlig;, wundert sich, warum der Code merkw&uuml;rdig reagiert. Die sichere Schreibweise ist eine eigene Zeile pro Variable:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>lngA<span style=\"color:blue;\"><span style=\"color:blue;\"> As Long<\/span><\/span>\r\n<span style=\"color:blue;\">Dim <\/span>lngB<span style=\"color:blue;\"><span style=\"color:blue;\"> As Long<\/span><\/span><\/pre>\n<h2>Namenskonventionen f&uuml;r Variablen<\/h2>\n<p>Wenn Du bereits die Artikel zu den Konventionen f&uuml;r Tabellennamen gelesen hast &#8211; <b>Tabellen [basics]: Konventionen<\/b> (<b>www.access-basics.de\/555<\/b>) -, wirst Du das Prinzip kennen: Pr&auml;fixe helfen dabei, auf einen Blick zu erkennen, womit man es zu tun hat.<\/p>\n<p>F&uuml;r Variablen hat sich in der Access-VBA-Entwicklung eine &auml;hnliche Konvention etabliert.<\/p>\n<p>Dabei wird dem Variablennamen ein kurzes K&uuml;rzel vorangestellt, das den Datentyp anzeigt:<\/p>\n<ul>\n<li><b>int<\/b> f&uuml;r <b>Integer<\/b>, zum Beispiel <b>intAnzahl<\/b><\/li>\n<li><b>lng<\/b> f&uuml;r <b>Long<\/b>, zum Beispiel <b>lngKundeID<\/b><\/li>\n<li><b>dbl<\/b> f&uuml;r <b>Double<\/b>, zum Beispiel <b>dblPreis<\/b><\/li>\n<li><b>cur<\/b> f&uuml;r <b>Currency<\/b>, zum Beispiel <b>curUmsatz<\/b><\/li>\n<li><b>str<\/b> f&uuml;r <b>String<\/b>, zum Beispiel <b>strNachname<\/b><\/li>\n<li><b>bln<\/b> f&uuml;r <b>Boolean<\/b>, zum Beispiel <b>blnAktiv<\/b><\/li>\n<li><b>dat<\/b> f&uuml;r <b>Date<\/b>, zum Beispiel <b>datLieferdatum<\/b><\/li>\n<li><b>byt<\/b> f&uuml;r <b>Byte<\/b>, zum Beispiel <b>bytWert<\/b><\/li>\n<li><b>obj<\/b> f&uuml;r allgemeine Objekte, zum Beispiel <b>objFormular<\/b><\/li>\n<li><b>var<\/b> f&uuml;r <b>Variant<\/b>, zum Beispiel <b>varErgebnis<\/b><\/li>\n<\/ul>\n<p>Du musst diese Konvention nicht zwingend verwenden &#8211; VBA erzwingt sie nicht. Aber wenn Du einmal in einem fremden Code gearbeitet hast, der keine Konventionen kennt, wirst Du sie zu sch&auml;tzen wissen. Es ist einer jener kleinen Aufw&auml;nde, der sich schnell mehrfach auszahlt.<\/p>\n<h2>Die Datentypen im &Uuml;berblick<\/h2>\n<p>VBA kennt eine Reihe von Datentypen, die f&uuml;r unterschiedliche Arten von Werten gedacht sind. Wer aus Excel-VBA kommt, kennt die meisten davon schon.<\/p>\n<p>Wer frisch einsteigt, muss sich kurz damit besch&auml;ftigen &#8211; aber der Aufwand ist &uuml;berschaubar, und die Logik dahinter leuchtet schnell ein.<\/p>\n<h2>Ganzzahlen: Byte, Integer und Long<\/h2>\n<p>F&uuml;r ganze Zahlen stehen in VBA mehrere Datentypen zur Verf&uuml;gung. Der kleinste ist <b>Byte<\/b>, der Werte von <b>0<\/b> bis <b>255<\/b> aufnehmen kann. Er kommt vor allem beim Arbeiten mit Arrays oder beim Ansprechen von Windows-APIs zum Einsatz, im normalen Datenbankbetrieb ist er selten n&ouml;tig.<\/p>\n<p><b>Integer<\/b> kann Werte von <b>-32.768<\/b> bis <b>32.767<\/b> speichern und belegt 2 Byte Speicher. Das klingt zun&auml;chst ausreichend, hat aber eine t&uuml;ckische Eigenschaft: Sobald ein Wert diesen Bereich &uuml;berschreitet &#8211; und das passiert schneller als man denkt, zum Beispiel bei der Verarbeitung von Datensatz-IDs oder Jahresums&auml;tzen -, bricht VBA mit einem Laufzeitfehler ab.<\/p>\n<p><b>Long<\/b> hingegen fasst Werte von etwa <b>-2,1 Milliarden<\/b> bis <b>2,1 Milliarden<\/b> und belegt 4 Byte. In modernem VBA, das intern mit 32 oder 64 Bit arbeitet, ist <b>Long<\/b> meist gleich schnell oder sogar schneller als <b>Integer<\/b>, weil VBA <b>Integer<\/b>-Werte intern h&auml;ufig ohnehin in <b>Long<\/b> konvertiert.<\/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\/55000707\/\">\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\/55000707?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\/55000707\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"9f18b59416\"\/>\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>Wer mit VBA programmiert, kommt nicht weit, ohne das Konzept der Variablen zu verstehen. Variablen sind gewisserma&szlig;en der Arbeitsspeicher eines Programms: Sie nehmen Werte zwischenzeitlich auf, damit wir damit rechnen, sie vergleichen oder weitergeben k&ouml;nnen. Und damit VBA wei&szlig;, was f&uuml;r eine Art von Wert in einer Variablen landet &#8211; eine Zahl, ein Text, ein Datum -, gibt es die Datentypen. Wer die falschen Datentypen w&auml;hlt, riskiert subtile Fehler, die manchmal erst beim Kunden auftauchen. Wer sie richtig einsetzt, schreibt stabileren und schnelleren Code. In diesem Artikel zeigen wir, wie Variablen deklariert werden, welche Datentypen es gibt und wann man welchen verwendet.<\/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":[66012026,662026,44000011],"tags":[],"class_list":["post-55000707","post","type-post","status-publish","format-standard","hentry","category-66012026","category-662026","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]: Variablen und Datentypen - Access [basics]<\/title>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VBA [basics]: Variablen und Datentypen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Wer mit VBA programmiert, kommt nicht weit, ohne das Konzept der Variablen zu verstehen. Variablen sind gewisserma&szlig;en der Arbeitsspeicher eines Programms: Sie nehmen Werte zwischenzeitlich auf, damit wir damit rechnen, sie vergleichen oder weitergeben k&ouml;nnen. Und damit VBA wei&szlig;, was f&uuml;r eine Art von Wert in einer Variablen landet - eine Zahl, ein Text, ein Datum -, gibt es die Datentypen. Wer die falschen Datentypen w&auml;hlt, riskiert subtile Fehler, die manchmal erst beim Kunden auftauchen. Wer sie richtig einsetzt, schreibt stabileren und schnelleren Code. In diesem Artikel zeigen wir, wie Variablen deklariert werden, welche Datentypen es gibt und wann man welchen verwendet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\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=\"14\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\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html\",\"name\":\"VBA [basics]: Variablen und Datentypen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"datePublished\":\"2026-02-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_Variablen_und_Datentypen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.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_Variablen_und_Datentypen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/VBA_basics_Variablen_und_Datentypen.html\",\"name\":\"VBA [basics]: Variablen und Datentypen\"}}]},{\"@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\/55000707","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=55000707"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000707\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}