<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vba Archive - Robert Skibbe</title>
	<atom:link href="https://robbelroot.de/blog/tag/vba/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>alias RobbelRoot – Freelance Full Stack Developer .NET</description>
	<lastBuildDate>Wed, 25 Mar 2026 17:14:40 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://robbelroot.de/wp-content/uploads/2020/12/cropped-favicon-32x32.png</url>
	<title>vba Archive - Robert Skibbe</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBA</title>
		<link>https://robbelroot.de/blog/vba/</link>
					<comments>https://robbelroot.de/blog/vba/#respond</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Sun, 15 Aug 2021 19:22:04 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications lernen]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[büro]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[familie]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[msft]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[onedrive]]></category>
		<category><![CDATA[onenote]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[powerpoint]]></category>
		<category><![CDATA[produkte]]></category>
		<category><![CDATA[teams]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visio]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[visual basic for applications]]></category>
		<category><![CDATA[word]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=5700</guid>

					<description><![CDATA[<p>VBA Ein weiteres Akronym Namens VBA geistert seit längerer Zeit in der Welt der IT, aber auch im Büroalltag umher. Besonders Büroangestellte nutzen VBA häufig in Kombination mit den Microsoft Office Produkten, teilweise auch ohne es aktiv zu wissen. Doch was ist dieses VBA &#8222;Ding&#8220; denn nun, wofür wurde es &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba/">VBA</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Logo-–-Visual-Basic-for-Applications.png"><img fetchpriority="high" decoding="async" width="1200" height="628" src="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Logo-–-Visual-Basic-for-Applications.png" alt="VBA Logo – Visual Basic for Applications" class="wp-image-5720" title="VBA Logo – Visual Basic for Applications"/></a><figcaption>VBA Logo – Visual Basic for Applications</figcaption></figure>






<h2 class="wp-block-heading">VBA</h2>



<p>Ein <strong>weiteres Akronym </strong>Namens <strong>VBA </strong>geistert seit längerer Zeit in der <strong>Welt der IT</strong>, aber <strong>auch </strong>im <strong>Büroalltag </strong>umher.</p>



<p><strong>Besonders Büroangestellte </strong>nutzen <strong>VBA </strong>häufig in Kombination mit den <strong>Microsoft Office Produkten</strong>, <strong>teilweise </strong>auch <strong>ohne </strong>es aktiv zu <strong>wissen</strong>.</p>



<p>Doch <strong>was ist </strong>dieses <strong>VBA </strong>&#8222;Ding&#8220; denn nun, <strong>wofür </strong>wurde es <strong>erfunden </strong>und <strong>was macht man </strong>damit genau?</p>



<h2 class="wp-block-heading">Was ist VBA?</h2>



<p><strong>VBA </strong>ist <strong>wie </strong>oben schon eingängig <strong>erwähnt </strong>ein <strong>Akronym</strong>, also eine <strong>Abkürzung für </strong>die Wörter &#8222;<strong>Visual Basic for Applications</strong>&#8222;.</p>



<p>Was <strong>irgendwie nach </strong>einer Art <strong>Brillenputzmittel</strong>, bzw. <strong>Auflage </strong>auf <strong>Brillen </strong>klingt, <strong>ist </strong>in Wahrheit eine <strong><a href="https://de.wikipedia.org/wiki/Skriptsprache" target="_blank" rel="noreferrer noopener">Skriptsprache</a></strong>.</p>



<p><strong>Diese Skriptsprache </strong>wurde <strong>von </strong>der <strong>Firma Microsoft </strong>unterstützend zu vielen Ihrer <strong>Office Produkte</strong>, wie z. B. <strong>Excel </strong>und <strong>Word entwickelt</strong>.</p>



<h2 class="wp-block-heading">Wofür VBA?</h2>



<p><strong>Da </strong>wir <strong>nun verstanden </strong>haben <strong>wo VBA eingesetzt </strong>wird, <strong>also bei </strong>bestehenden <strong>Produkten wie </strong>z. B. <strong>Microsoft Excel</strong>, schauen wir uns nun <strong>dessen Verwendung </strong>an.</p>



<p>Meiner <strong>persönlichen Erfahrung </strong>nach, <strong>denken viele </strong>Kenner <strong>sofort </strong>an <strong>Excel</strong>, <strong>wenn </strong>sie das <strong>Stichwort </strong>&#8222;<strong>VBA</strong>&#8220; hören, nicht ohne Grund.</p>



<p><strong>Auch wenn </strong>die <strong>Microsoft Office</strong> Produktfamilie <strong>natürlich </strong>über einen sehr <strong>großen Funktionsumfang </strong>verfügt, hat man häufig <strong>individuelle Wünsche</strong>.</p>



<p>Neben den individuellen Wünschen <strong>spielt </strong>natürlich <strong>auch </strong>z. B. die <strong>Automatisierung </strong>von gewissen Prozessen eine <strong>große Rolle</strong>.</p>



<p><strong>Wer hat </strong>schon <strong>Lust</strong>, die häufig an <strong>Praktikanten </strong>verteilte <strong>Arbeit </strong>zu <strong>übernehmen </strong>und sich <strong>dumm </strong>und <strong>dusselig </strong>zu <strong>klicken</strong>.</p>



<p><strong>Dafür könnte </strong>man sich einige <strong>kleine Skripte </strong>in VBA bauen, <strong>Die </strong>einem <strong>dann </strong>diese unangenehme <strong>Arbeit</strong> <strong>abnehmen</strong>, <strong>oder </strong>zumindest <strong>erleichtert</strong>.</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Was-ist-das-1.png"><img decoding="async" width="1200" height="628" src="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Was-ist-das-1.png" alt="VBA - Was ist das?" class="wp-image-5727" title="VBA - Was ist das"/></a><figcaption>VBA &#8211; Was ist das?</figcaption></figure>



<h2 class="wp-block-heading">Was ist nun das VB in VBA?</h2>



<p><strong>Nun kommst </strong>Du ggf. mit deinen <strong>Englischkenntnissen an </strong>den <strong>Punkt</strong>, <strong>wo </strong>Du die Bedeutung des &#8222;..<strong>for Applications</strong>&#8220; verstanden hast.</p>



<p>Denn <strong>wie erklärt</strong>, <strong>erweitert </strong>man bestehende <strong><a href="https://de.wikipedia.org/wiki/Microsoft_Office" target="_blank" rel="noreferrer noopener">Office-Programme</a></strong> <strong>durch VBA </strong>um seine individuell <strong>gewünschten Programm</strong>&#8211;<strong>Funktionen</strong>.</p>



<p><strong>Was </strong>dabei <strong>allerdings </strong>noch <strong>offen bleibt </strong>ist dieser <strong>Teil namens </strong>&#8222;Visual Basic&#8220; in <strong>VBA</strong>.</p>



<p><strong>Visual Basic</strong> (Classic) – oder auch kurz &#8222;VB&#8220; – ist die <strong><a href="https://de.wikipedia.org/wiki/Programmiersprache" target="_blank" rel="noreferrer noopener">Programmiersprache</a> worauf VBA </strong>letztendlich <strong>basiert</strong>.</p>



<p>Sie <strong>ist </strong>der <strong>Vorreiter für </strong>die <strong>Sprache</strong>, <strong>weshalb </strong>diese <strong>Webseite </strong>vor vielen Jahren überhaupt <strong>entstanden ist </strong>– Visual Basic NET.</p>



<h2 class="wp-block-heading">Einsatzbeispiel für VBA</h2>



<p><strong>Wie oben </strong>bereits <strong>erwähnt </strong>gibt es <strong>teilweise Situationen</strong> in denen man sich <strong>gerne </strong>ein <strong>Skript für wiederkehrende Arbeiten </strong>erstellen möchte.</p>



<p><strong>Damit </strong>könnte man <strong>nach initial </strong>investierter <strong>Zeit</strong>, <strong>zukünftig </strong>ein <strong>Vielfaches </strong>dieser Arbeitszeit und Arbeitskraft <strong>sparen </strong>und vereinfachen.</p>



<p>Schauen wir uns dafür <strong>in diesem Abschnitt </strong>einmal ein <strong>kleines Beispiel </strong>an, wo wir so eine <strong>individuelle Erweiterung </strong>genauer <strong>betrachten</strong>.</p>



<p>Das <strong>Beispiel in </strong>all seinen <strong>vollständigen Details </strong>findest Du im Beitrag &#8222;<strong><a href="https://robbelroot.de/blog/serienbrief-excel/" target="_blank" rel="noreferrer noopener">Serienbrief mit Ecxel</a></strong>&#8222;, ich <strong>werde hier </strong>die <strong>wesentlichen Schritte </strong>wiederholen.</p>



<p>Dabei <strong>ergänze ich </strong>einige <strong>Sachen</strong>, Welche zu diesem <strong>Beitrag </strong>hier <strong>besser passen </strong>und daher <strong>einfacher nachvollziehbar </strong>sind.</p>



<h3 class="wp-block-heading">Das Dilemma mit den Adressen</h3>



<p><strong>Jeder der schonmal </strong>in seinem Leben <strong>mit Adress-Daten</strong> gearbeitet hat, <strong>kennt </strong>das dahinter steckende <strong>Dilemma</strong>.</p>



<p><strong>Mal </strong>werden Postleitzahl und Ort <strong>vertauscht</strong>, hier und da <strong>ein Leerzeichen </strong>zu <strong>viel </strong>und und und.</p>



<p><strong>Manchmal fragt man sich </strong>wirklich, <strong>wie </strong>Diese herauskommenden <strong>Daten </strong>letztendlich <strong>zustande kommen</strong>.</p>



<p><strong>Ich selbst kenne </strong>das aufgrund einer ehemaligen Arbeitskollegin <strong>aus </strong>einen <strong>vergangenen Job </strong>sehr gut.</p>



<h3 class="wp-block-heading">Monkey Work als Beispiel – Kein Einzelfall</h3>



<p><strong>Sie war </strong>den <strong>ganzen Arbeitstag </strong>(!) damit <strong>beschäftigt</strong>, <strong>Adressen </strong>zu <strong>korrigieren </strong>und aufzuarbeiten – schrecklich.</p>



<p><strong>Leider </strong>ist das <strong>absolut</strong> <strong>kein Einzelfall</strong>, auch <strong>bei </strong>einem <strong>ehemaligen Kunden </strong>kannte ich <strong>Mitarbeiter</strong>, die dieser Arbeit nachkamen.</p>



<p><strong>Oftmals </strong>ist es <strong>in </strong>solchen <strong>Unternehmen </strong>leider die <strong>Folge von fehlendem Budget </strong>für individuelle Entwicklungen.</p>



<p><strong>Manchmal meint </strong>man auch, man <strong>könne </strong>sich dafür <strong>keine Zeit nehmen </strong>&#8222;..ich muss schließlich mein <strong>Tagesgeschäft fortführen</strong>..&#8220;.</p>



<p><strong>Fangen </strong>wir <strong>lieber nicht </strong>die <strong>mentale Debatte </strong>an, <strong>ob </strong>diese Vorgehensweisen <strong>so sinnvoll </strong>waren..</p>



<p><strong>Fokussieren </strong>wir uns <strong>stattdessen </strong>lieber <strong>auf </strong>das ursprüngliche <strong>Problem</strong>, eine <strong>kleine Funktionalität </strong>zur <strong>Korrektur von Adressen</strong> zu erstellen.</p>



<p><strong>Natürlich </strong>werde ich <strong>hier </strong>nur ein <strong>kleines Beispiel </strong>machen, <strong>da </strong>es <strong>nicht um </strong>die <strong>Funktionalität </strong>geht.</p>



<p><strong>Mir geht </strong>es hier <strong>besonders um </strong>das <strong>Verständnis über </strong>die <strong>Einsatzmöglichkeiten </strong>von <strong>VBA</strong>.</p>



<h3 class="wp-block-heading">Tabellenstruktur &amp; Beispieldaten</h3>



<p><strong>Schaue </strong>Dir am besten einfach mal <strong>folgende Tabellenstruktur und </strong>die darin befindlichen <strong>Daten </strong>an:</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Monkey-Work-Tabellenstruktur.png"><img decoding="async" width="555" height="178" src="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Monkey-Work-Tabellenstruktur.png" alt="VBA Monkey Work Tabellenstruktur" class="wp-image-5733" title="VBA Monkey Work Tabellenstruktur"/></a><figcaption>VBA Monkey Work Tabellenstruktur</figcaption></figure>



<p>Dir <strong>fällt </strong>sehr <strong>wahrscheinlich </strong>der <strong>falsche Datensatz </strong>in der dritten Zeile <strong>auf</strong>.</p>



<p><strong>Dort wurde </strong>bei der Eingabe (aus welcher Quelle auch immer), leider die <strong>Postleitzahl mit </strong>dem <strong>Ort vertauscht</strong>.</p>



<p><strong>Natürlich </strong>könnten wir <strong>bei </strong>diesen <strong>wenigen Einträgen</strong> <strong>auch </strong>eine <strong>manuelle Korrektur </strong>durchführen.</p>



<p><strong>Wenn </strong>ich allerdings <strong>an </strong>den <strong>erwähnten Kunden </strong>denke, dann <strong>hatte </strong>man <strong>mit </strong>ungefähr <strong>200 Bestellungen am Tag</strong> ein <strong>Problem</strong>.</p>



<h3 class="wp-block-heading">Lösungsansatz</h3>



<p><strong>Wenn </strong>wir <strong>nun </strong>über einen <strong>möglichen Lösungsansatz </strong>nachdenken, könnte man <strong>wie folgt </strong>vorgehen.</p>



<p><strong>Man geht </strong>das aktive <strong>Tabellenblatt bei </strong>z. B. einem <strong>Klick </strong>eines Buttons <strong>mit </strong>einer <strong>Schleife durch</strong>.</p>



<p>In <strong>jedem Schleifendurchlauf prüft </strong>man, <strong>ob </strong>z. B. <strong>im Ort Zahlen</strong> enthalten sind.</p>



<p><strong>Vermutlich </strong>gibt es <strong>hier noch andere Ansätze</strong>, allerdings <strong>reicht </strong>das für unser Beispiel <strong>aus</strong>.</p>



<p><strong>Meine Gedanken </strong>dabei waren, dass <strong>in einem Ort definitiv keine Zahlen</strong> vorkommen und <strong>eine Postleitzahl</strong> soweit ich weiß<strong> in einigen Gebieten</strong> <strong>auch Buchstaben </strong>enthalten kann.</p>



<p><strong>Im Endeffekt kann </strong>man das ja je nach individuellem Wunsch <strong>anpassen</strong>, bzw. <strong>verändern</strong>.</p>



<h3 class="wp-block-heading">Code</h3>



<p>In <strong>diesem Abschnitt schauen </strong>wir uns den möglichen <strong>Code </strong>für die oben genannte Variante <strong>an</strong>.</p>



<p>Der <strong>erste Bestandteil </strong>ist wie erwähnt das <strong>Durchlaufen der Zeilen</strong>, des <strong>aktiven Tabellenblatts</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim rowRange As Range
For Each rowRange In ActiveSheet.UsedRange.Rows
  ' mach was mit der Range namens rowRange
Next</pre>



<p><strong>Danach könnten </strong>wir <strong>einstellen</strong>, dass die <strong>Reihe nur verarbeitet </strong>wird, <strong>wenn </strong>beide notwendigen <strong>Datenfelder ausgefüllt </strong>sind.</p>



<p><strong>Dazu benutze </strong>ich <strong>wie immer gerne</strong>, ein so genanntes &#8222;<strong>Early Return</strong>&#8222;, ich <strong>weise </strong>die <strong>Schleife </strong>in den <strong>nächsten Durchlauf</strong>, <strong>statt </strong>If-<strong>Konstrukte </strong>tief <strong>zu verschachteln</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim zipText As String
zipText = ActiveSheet.Cells(rowRange.Row, 1).Text
Dim hasNoZip As Boolean
hasNoZip = zipText = ""

Dim cityText As String
cityText = ActiveSheet.Cells(rowRange.Row, 2).Text
Dim hasNoCity As Boolean
hasNoCity = cityText = ""

If hasNoZip Or hasNoCity Then
  Continue For
End If</pre>



<p><strong>Zum Schluss </strong>können wir dann unsere <strong>Prüfung und </strong>die <strong>Tausch-Arbeit </strong>selbst durchführen.</p>



<p><strong>Dazu könnten </strong>wir <strong>auf komplizierte </strong>&#8222;<strong><a href="https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck" target="_blank" rel="noreferrer noopener">Regular Expressions&#8220;</a></strong> zurückgreifen, <strong>jedoch </strong>bin ich ein <strong>Fan von </strong>&#8222;<strong><a href="https://de.wikipedia.org/wiki/KISS-Prinzip" target="_blank" rel="noreferrer noopener">KISS</a></strong>&#8222;, daher verwenden wir einfach den <strong><a href="https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/like-operator" target="_blank" rel="noreferrer noopener">&#8222;Like&#8220;-Operator</a></strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim cityContainsNoNumber As Boolean
cityContainsNoNumber = cityText Not Like "*[0-9]*"
If cityContainsNoNumber Then
  ' wieder early return / Continue
  Continue For
End If</pre>



<p>Im <strong>letzten Schritt </strong>folgt der <strong>Tausch der Werte</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ActiveSheet.Cells(rowRange.Row, 1).Text = cityText
ActiveSheet.Cells(rowRange.Row, 2).Text = zipText</pre>



<h3 class="wp-block-heading">Kompletter Code</h3>



<p><strong>Hier </strong>findest Du noch einmal den <strong>vollständigen Code</strong>, <strong>um </strong>die <strong>PLZ mit </strong>dem <strong>Ort</strong>/der Stadt zu <strong>tauschen</strong>, <strong>wenn </strong>die <strong>Stadt </strong>eine <strong>Zahl enthält</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim rowRange As Range
For Each rowRange In ActiveSheet.UsedRange.Rows
  Dim zipText As String
  zipText = ActiveSheet.Cells(rowRange.Row, 1).Text
  Dim hasNoZip As Boolean
  hasNoZip = zipText = ""

  Dim cityText As String
  cityText = ActiveSheet.Cells(rowRange.Row, 2).Text
  Dim hasNoCity As Boolean
  hasNoCity = cityText = ""

  If hasNoZip Or hasNoCity Then
    Continue For
  End If

  Dim cityContainsNoNumber As Boolean
  cityContainsNoNumber = cityText Not Like "*[0-9]*"
  If cityContainsNoNumber Then
    Continue For
  End If

  ActiveSheet.Cells(rowRange.Row, 1).Text = cityText
  ActiveSheet.Cells(rowRange.Row, 2).Text = zipText
Next</pre>



<h2 class="wp-block-heading">Wo den Code unterbringen?</h2>



<p><strong>Damit </strong>Du den <strong>Code </strong>von oben verwenden kannst, muss er natürlich <strong>irgendwo untergebracht </strong>werden, <strong>damit </strong>er auch <strong>ausgeführt </strong>wird.</p>



<p>Das <strong>passiert </strong>in Excel z. B. <strong>häufig durch </strong>sogenannte <strong>Makros</strong>, wie Du auch in <strong>diesen Beiträgen </strong>erfahren konntest: <strong><a href="https://robbelroot.de/blog/excel-makro-erstellen/" target="_blank" rel="noreferrer noopener">Excel Makros erstellen</a></strong>, oder <strong><a href="https://robbelroot.de/blog/excel-makro-button/" target="_blank" rel="noreferrer noopener">Excel Makro Button</a></strong>.</p>



<h2 class="wp-block-heading">Fazit – VBA</h2>



<p>In <strong>diesem Beitrag </strong>hast Du <strong>gelernt</strong>, <strong>wie </strong>Du dein <strong>Erlebnis von Office Produkten </strong>wie z. B. <strong>Excel verbessern </strong>kannst.</p>



<p>Dies <strong>geschieht durch </strong>die <strong>auf </strong>der <strong>Visual Basic</strong> (Classic) <strong>basierenden Skriptsprache namens </strong>Visual Basic for Applications, oder <strong>kurz </strong>&#8222;<strong>VBA</strong>&#8222;.</p>



<p><strong>Diese Verbesserungen</strong> können <strong>in Form von </strong>zusätzlichen <strong>Funktionen</strong>, <strong>oder auch </strong>in Form von <strong>konkreten </strong>arbeitserleichternden <strong>Mitteln existieren</strong>.</p>



<h2 class="wp-block-heading">Downloads</h2>



<div class="wp-block-file"><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Monkey-Work-Beispiel.xlsx">VBA-Monkey-Work-Beispiel</a><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-Monkey-Work-Beispiel.xlsx" class="wp-block-file__button" download>Herunterladen</a></div>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba/">VBA</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excel Kalenderwoche</title>
		<link>https://robbelroot.de/blog/excel-kalenderwoche/</link>
					<comments>https://robbelroot.de/blog/excel-kalenderwoche/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Thu, 12 Aug 2021 19:01:11 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Excel Problemlösungen]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[büro]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[daten]]></category>
		<category><![CDATA[datum]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[jahr]]></category>
		<category><![CDATA[kalender]]></category>
		<category><![CDATA[kalenderwoche]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[monat]]></category>
		<category><![CDATA[msft]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[planen]]></category>
		<category><![CDATA[planung]]></category>
		<category><![CDATA[produkt]]></category>
		<category><![CDATA[produkte]]></category>
		<category><![CDATA[projekt]]></category>
		<category><![CDATA[projektplanung]]></category>
		<category><![CDATA[range]]></category>
		<category><![CDATA[reichweite]]></category>
		<category><![CDATA[reihe]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[spalte]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[week]]></category>
		<category><![CDATA[woche]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=5266</guid>

					<description><![CDATA[<p>Excel Kalenderwoche Du möchtest eine Excel Kalenderwoche bestimmen, um zum Beispiel diverse Projekte wie einen Kalender, o. Ä. umzusetzen? Dann begrüße ich Dich herzlich in meinem heutigen Beitrag über die Kalenderwoche, bzw. die Kalenderwochen-Funktion in Excel! Vielleicht helfen Dir später auch noch weitere Beiträge zum Thema Microsoft Excel, wie Diese &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-kalenderwoche/">Excel Kalenderwoche</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche-1024x536.png" alt="Excel Kalenderwoche" class="wp-image-5271" title="Excel Kalenderwoche" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Kalenderwoche.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>Excel Kalenderwoche</figcaption></figure>






<h2 class="wp-block-heading">Excel Kalenderwoche</h2>



<p>Du <strong>möchtest </strong>eine <strong>Excel Kalenderwoche</strong> bestimmen, <strong>um </strong>zum Beispiel diverse <strong>Projekte wie </strong>einen <strong>Kalender</strong>, o. Ä. umzusetzen?</p>



<p><strong>Dann </strong>begrüße ich Dich herzlich in meinem <strong>heutigen Beitrag über </strong>die <strong>Kalenderwoche</strong>, bzw. die Kalenderwochen-Funktion in <strong>Excel</strong>!</p>



<p><strong>Vielleicht </strong>helfen Dir <strong>später </strong>auch <strong>noch </strong>weitere <strong>Beiträge </strong>zum Thema <strong>Microsoft Excel</strong>, wie Diese hier: <strong><a href="https://robbelroot.de/blog/excel-makro-erstellen/" target="_blank" rel="noreferrer noopener">VBA Makro</a></strong>, <strong><a href="https://robbelroot.de/blog/vba-range/" target="_blank" rel="noreferrer noopener">Range</a></strong>, <strong><a href="https://robbelroot.de/blog/ifs-vba/">IFS VBA</a></strong>.</p>



<h2 class="wp-block-heading">Kalenderwochen – Häufig gebraucht</h2>



<p>Ich denke <strong>absolut jeder</strong>, <strong>der </strong>mal <strong>mit Daten </strong>(plural Datum) <strong>gearbeitet </strong>hat, ist früher oder später an ein und dasselbe <strong>Problem </strong>geraten – <strong>Kalenderwochen</strong>.</p>



<p>Diese <strong>Problemstellung </strong>ist wie viele Andere auch, <strong>nicht plattformabhängig</strong>, da z. B. <strong>Kalender </strong>nun einmal <strong>auf verschiedenen Plattformen gebraucht </strong>werden.</p>



<p>Was jedoch <strong>Plattform</strong>&#8211; <strong>und </strong>auch <strong>kontextual</strong>&#8211;<strong>abhängig </strong>ist, <strong>sind </strong>deren jeweilige <strong>Umsetzungen auf </strong>den entsprechenden <strong>Plattformen</strong>.</p>



<h2 class="wp-block-heading">Google-Kalender – Ein Beispiel</h2>



<p><strong>Neben </strong>Microsoft <strong>Outlook </strong>verwenden natürlich <strong>auch andere </strong>bekannte <strong>Anbieter wie </strong>z. B. <strong>Google </strong>die Darstellung von <strong>Kalenderwochen</strong>.</p>



<p><strong>Bei Outlook </strong>muss man Diese <strong>teilweise </strong>(also je nach Version und Einstellungen) allerdings erst <strong>aktivieren</strong>.</p>



<p><strong>Auf </strong>dem <strong>Handy </strong>sehe ich <strong>aktuell </strong>auch in der Monatsansicht z. B. <strong>keine Kalenderwochen </strong>(ich nutze aktuell ein <strong>iPhone </strong>XR mit dem <strong>iOS-Kalender</strong>).</p>



<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender.png"><img loading="lazy" decoding="async" width="1024" height="718" src="https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender-1024x718.png" alt="Kalenderwochen im Google Kalender" class="wp-image-5290" title="Kalenderwochen im Google Kalender" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender-1024x718.png 1024w, https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender-300x210.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender-768x538.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender-700x490.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender-332x233.png 332w, https://robbelroot.de/wp-content/uploads/2021/08/Kalenderwochen-im-Google-Kalender.png 1303w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>Kalenderwochen im Google Kalender</figcaption></figure>



<h2 class="wp-block-heading">Excel Kalenderwoche, etwa berechnen?</h2>



<p>Im <strong>Internet </strong>finden sich für die <strong>verschiedensten Sprachen </strong>und <strong>Plattformen Codeschnippsel</strong>, <strong>wie </strong>man die <strong>Kalenderwoche </strong>eines gegebenen Datum <strong>berechnen </strong>kann.</p>



<p>Wie man <strong>Kalenderwochen</strong> errechnet, bzw. bestimmt ist ja <strong>mehr oder weniger </strong>ein <strong>offenes </strong>Geheimnis, denn wie fast alles im Leben, <strong>gibt es </strong>auch <strong>hierfür Normen</strong>.</p>



<p>Unter anderem gibt es die <strong>für uns eher interessante</strong> <strong><a href="https://de.wikipedia.org/wiki/Woche#Z%C3%A4hlweise_nach_ISO_8601" target="_blank" rel="noreferrer noopener">Norm &#8222;ISO8601&#8220;</a></strong> und die z. B. in den <strong><a href="https://de.wikipedia.org/wiki/Woche#Berechnung_in_den_USA_und_vielen_anderen_L%C3%A4ndern" target="_blank" rel="noreferrer noopener">USA vertretene Norm</a></strong>.</p>



<p><strong>Zum Glück </strong>gibt es aber zumindest <strong>einige Hilfsmittel</strong>, Welche es uns <strong>ermöglichen</strong>, <strong>auf </strong>vorhandene <strong>Tools zurückzugreifen</strong>, <strong>statt </strong>alles in <strong>Eigenarbeit </strong>zu berechnen.</p>



<p>Das <strong>sieht </strong>dann je <strong>nach Programmier</strong>&#8211; und <strong>Skriptsprache </strong>ggf. <strong>anders </strong>aus und ist <strong>mal mehr </strong>und mal <strong>weniger </strong>kompliziert.</p>



<p>Hier siehst Du beispielsweise ein <strong>ISO8601</strong>&#8211;<strong>Beispiel aus </strong>dem <strong>VB.NET-Umfeld</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Public Shared Function GetIso8601WeekOfYear(time As DateTime) As Integer
    Dim day As DayOfWeek = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time)

    If day >= DayOfWeek.Monday AndAlso day &lt;= DayOfWeek.Wednesday Then
        time = time.AddDays(3)
    End If

    Return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
End Function</pre>



<h2 class="wp-block-heading">Durch Verwendung von VBA-Code</h2>



<p>Wer <strong>im Bereich Excel </strong>unterwegs ist, wird vermutlich auch irgendwann in Kontakt mit <strong>Microsofts Skriptsprache Visual Basic for Applications</strong> (kurz VBA) kommen.</p>



<p><strong>Auch dort </strong>könnte eventuell die <strong>Notwendigkeit </strong>für die Erörterung der <strong>Kalenderwoche eines </strong>bestimmten <strong>Datums </strong>vorkommen.</p>



<p>In <strong>VBA </strong>selbst gibt es dazu eine relativ <strong>einfache Funktion</strong>, Welche sich in der <strong>Dokumentation </strong>unter dem <strong>Namen </strong>&#8222;<strong><a href="https://docs.microsoft.com/de-de/office/vba/api/excel.worksheetfunction.weeknum" target="_blank" rel="noreferrer noopener">WeekNum</a></strong>&#8220; versteckt.</p>



<p>Ein möglicher <strong>Beispielcode </strong>dazu könnte <strong>so </strong>aussehen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim weekNumber As Integer = WorksheetFunction.WeekNum(now, vbMonday)
' do something with weekNumber..</pre>



<h2 class="wp-block-heading">Gerade und ungerade Kalenderwochen</h2>



<p><strong>Eventuell </strong>besteht ja auch die <strong>Notwendigkeit</strong> zum Beispiel in &#8222;<strong>geraden Kalenderwochen</strong>&#8220; <strong>anders </strong>zu verfahren, <strong>als </strong>in <strong>Ungeraden</strong>.</p>



<p><strong>Womöglich </strong>möchte man die <strong>Reihen</strong>, oder <strong>Spalten </strong>anders <strong>färben</strong>, oder die <strong>Werte </strong>innerhalb der Zellen <strong>anders verarbeiten</strong>.</p>



<p>Dies <strong>könnte </strong>man z. B. <strong>wie folgt </strong>lösen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim weekNumber As Integer = WorksheetFunction.WeekNum(now, vbMonday)
Dim isWeekNumberEven As Boolean = weekNumber Mod 2
If isWeekNumberEven Then
    ' do something on even weeknumber..
Else
    ' do something on odd weeknumber
End If</pre>



<h2 class="wp-block-heading">Excel Kalenderwoche – Einfachste Methode</h2>



<p>Ganz nach dem &#8222;das <strong>Beste </strong>kommt <strong>zum Schluss</strong>&#8222;-Motto, gibt es <strong>in Excel </strong>wohl (zum Glück) eine <strong>sehr einfache Variante</strong>, um an die <strong>Kalenderwoche </strong>zu kommen.</p>



<p>Dazu verwendet man die <strong>gleichermaßen benannte Methode </strong>namens <strong><a href="https://support.microsoft.com/de-de/office/kalenderwoche-funktion-e5c43a03-b4ab-426c-b411-b18c13c75340" target="_blank" rel="noreferrer noopener">KALENDERWOCHE</a></strong> – einfach, oder!?</p>



<p>Dessen genauen <strong>Aufbau mit Parametern </strong>und<strong> Details</strong>, kannst Du Dir in der oben verlinkten <strong>Seite der Dokumentation </strong>anschauen.</p>



<p><strong>Achte </strong>bei dem folgenden Code-Beispiel <strong>besonders auf </strong>den <strong>zweiten Parameter</strong>, Dieser gibt eine <strong>wichtige Information </strong>an.</p>



<p>Der <strong>zweite Parameter </strong>der Funktion <strong>bestimmt </strong>dabei, an <strong>welchem Wochentag </strong>die <strong>Woche</strong>(n) für die Berechnung <strong>starten </strong>soll.</p>



<p>Beim <strong>ersten Parameter </strong>hingegen handelt es sich um den <strong>jeweiligen Wert </strong>(also <strong>das Datum</strong>), Welcher verwendet werden soll.</p>



<p>Dabei <strong>handelt </strong>es <strong>sich </strong>im unteren Beispiel natürlich um den <strong>Wert in </strong>der <strong>Zelle </strong>&#8222;<strong>A2</strong>&#8222;.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">=KALENDERWOCHE(A2;2)</pre>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-kalenderwoche/">Excel Kalenderwoche</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/excel-kalenderwoche/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>VBA in Excel öffnen</title>
		<link>https://robbelroot.de/blog/vba-in-excel-oeffnen/</link>
					<comments>https://robbelroot.de/blog/vba-in-excel-oeffnen/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Tue, 10 Aug 2021 06:57:30 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications lernen]]></category>
		<category><![CDATA[arbeitsblatt]]></category>
		<category><![CDATA[create]]></category>
		<category><![CDATA[erstellen]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[machen]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[öffnen]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[sheet]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[visual basic for applications]]></category>
		<category><![CDATA[worksheet]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=5233</guid>

					<description><![CDATA[<p>VBA in Excel öffnen Du möchtest VBA in Excel öffnen und mit der Programmierung von Excel-Hilfsmitteln durch Visual Basic for Applications loslegen? Erfahre in meinem heutigen Beitrag, wie Du einfach und schnell durchstarten kannst! Vielleicht schwenkt Dein Interesse nach diesem Beitrag noch auf folgende ähnliche Beiträge: IFS VBA, VBA For &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-in-excel-oeffnen/">VBA in Excel öffnen</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen-1024x536.png" alt="VBA in Excel öffnen" class="wp-image-5237" title="VBA in Excel öffnen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/08/VBA-in-Excel-oeffnen.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>VBA in Excel öffnen</figcaption></figure>






<h2 class="wp-block-heading">VBA in Excel öffnen</h2>



<p>Du möchtest <strong>VBA in Excel öffnen</strong> und mit der <strong>Programmierung </strong>von Excel-Hilfsmitteln durch <strong>Visual Basic for Applications</strong> loslegen?</p>



<p><strong>Erfahre </strong>in meinem heutigen Beitrag, <strong>wie </strong>Du <strong>einfach </strong>und <strong>schnell </strong>durchstarten kannst!</p>



<p>Vielleicht schwenkt Dein Interesse nach diesem Beitrag noch auf folgende <strong>ähnliche Beiträge</strong>: <strong><a href="https://robbelroot.de/blog/ifs-vba/" target="_blank" rel="noreferrer noopener">IFS VBA</a></strong>, <strong><a href="https://robbelroot.de/blog/vba-for-schleife/" target="_blank" rel="noreferrer noopener">VBA For Schleife</a></strong>, <strong><a href="https://robbelroot.de/blog/vba-instr/" target="_blank" rel="noreferrer noopener">InStr</a></strong>.</p>



<h2 class="wp-block-heading">Was ist VBA?</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/vba-kreis-logo.png"><img loading="lazy" decoding="async" width="256" height="256" src="https://robbelroot.de/wp-content/uploads/2021/08/vba-kreis-logo.png" alt="Excel VBA Kreis Logo" class="wp-image-5248" title="Excel VBA Kreis Logo" srcset="https://robbelroot.de/wp-content/uploads/2021/08/vba-kreis-logo.png 256w, https://robbelroot.de/wp-content/uploads/2021/08/vba-kreis-logo-150x150.png 150w" sizes="auto, (max-width: 256px) 100vw, 256px" /></a></figure>



<p><strong>Bevor </strong>wir uns <strong>mit </strong>dem <strong>Kern beschäftigen</strong>, also wie wir <strong>VBA in Excel öffnen</strong> können, <strong>schauen </strong>wir uns einmal genauer an <strong>was VBA überhaupt ist</strong>.</p>



<p><strong>Falls </strong>Du frei nach dem Motto &#8222;<strong>TL;DR;</strong> (Too Long Didn&#8217;t Read)&#8220; <strong>direkt </strong>zum Ort des Geschehens <strong>hüpfen </strong>möchtest, <strong>scrolle </strong>einfach ein wenig <strong>runter</strong>.</p>



<p>Ich <strong>denke </strong>allerdings, dass vor allem <strong>Anfänger </strong>sich die obige <strong>Frage stellen </strong>und sich ein wenig Einführung, bzw. <strong>Wiederholung</strong> <strong>nicht schaden </strong>kann.</p>



<h2 class="wp-block-heading">Microsoft Excel</h2>



<p>Wenn man an <strong>Bürojobs aus</strong> fast <strong>egal welcher Branche </strong>denkt, denkt man <strong>meistens auch </strong>an die <strong><a href="https://de.wikipedia.org/wiki/Microsoft_Office" target="_blank" rel="noreferrer noopener">Office-Produktfamilie</a></strong> von Microsoft.</p>



<p>In <strong>so gut wie</strong> jeder ausgeschriebenen <strong>Stellenanzeige </strong>werden zumindest <strong>Grundkenntnisse </strong>erwartet, da Sie ein elementarer <strong>Grundbaustein sind</strong>.</p>



<p>Egal ob im Bereich Transporte, Network-Marketing, oder sonst irgendwo, <strong>fast überall </strong>sind die bekannten Office-Produkte wie <strong>Word, Excel und Outlook</strong> im Einsatz.</p>



<p><strong>Häufig </strong>gibt es allerdings <strong>Aufgaben </strong>und bestimmte <strong>Einsatzfelder</strong>, wo diverse <strong>Tätigkeiten wiederholt </strong>werden müssen.</p>



<p><strong>Ebenso </strong>saß man als Nutzer der Produkte vermutlich schon <strong>selbst an </strong>dem <strong>Punkt</strong>, wo man <strong>gerne </strong>die eine oder andere <strong>Funktion mehr </strong>gehabt hätte.</p>



<h2 class="wp-block-heading">VBA zur Rettung</h2>



<p><strong>Genau </strong>an dieser im vorherigen Abschnitt <strong>erwähnten Stelle kommt </strong>dann <strong><a href="https://de.wikipedia.org/wiki/Visual_Basic_for_Applications" target="_blank" rel="noreferrer noopener">Visual Basic for Applications</a></strong> – oder kurz <strong>VBA </strong>– ins Spiel.</p>



<p>Was <strong>im ersten Moment </strong>eventuell wie ein <strong>Werkzeug </strong>zum <strong>Zeichnen </strong>o. Ä. klingt, <strong>ist </strong>in Wahrheit <strong>eine Skriptsprache</strong>.</p>



<p><strong>Wie </strong>der <strong>Name </strong>auch schon ggf. <strong>vermuten lässt</strong>, ist Diese <strong>auf </strong>die <strong>Verwendung innerhalb </strong>von bestehenden <strong>Anwendungen </strong>konzipiert.</p>



<p><strong>Um genau </strong>zu sein handelt es sich bei diesen <strong>Anwendungen exakt </strong>um die <strong>vorher angesprochenen Produkte </strong>wie Word, <strong>Excel </strong>und Co.</p>



<p>Wir <strong>können </strong>mit<strong> VBA </strong>die <strong>vorhandenen Funktionalitäten </strong>der einzelnen Programme <strong>erweitern und </strong>uns so eine <strong>individuell </strong>größere Palette an <strong>Werkzeugen </strong>bauen.</p>



<p>So hat <strong>jeder VBA-Nutzer</strong> die Möglichkeit, sich seine ein wenig mehr auf sich <strong>zurechtgeschnittene Arbeitsumgebung </strong>zu <strong>schaffen</strong>.</p>



<p><strong>Dabei </strong>ist es besonders <strong>toll</strong>, dass <strong>durch </strong>diverse <strong>Funktionen wie </strong>z. B. das <strong>Aufnehmen von <a href="https://de.wikipedia.org/wiki/Makro" target="_blank" rel="noreferrer noopener">Makros</a></strong>, nicht zwangsweise <strong>Programmierkenntnisse </strong>notwendig sind.</p>



<p><strong>Natürlich </strong>sind Diese jedoch <strong>von Vorteil </strong>und vereinfachen Vieles, wie die Anpassung und <strong>Erweiterung </strong>der Skripte, usw.</p>



<h2 class="wp-block-heading">VBA in Excel öffnen – Das Beispiel</h2>



<p><strong>Letztendlich </strong>kann man <strong>VBA</strong>, bzw. genauer genommen den <strong>VBA-Editor in Excel</strong> auf unterschiedliche Wege <strong>öffnen</strong>.</p>



<p>Am einfachsten ist es, wenn man die <strong>Tastenkombination [ALT]-[F11]</strong> verwendet, <strong>um </strong>den <strong>VBA-Editor</strong> zu <strong>öffnen</strong>.</p>



<pre class="wp-block-verse"><strong>Achtung!</strong> Je nach Version des jeweiligen Programmes (Word, Excel, Outlook..), kann es <strong>kleine Unterschiede </strong>geben!</pre>



<p><strong>Eventuell </strong>musst Du vor dem Öffnen des Editors <strong>auch bereits </strong>ein <strong>Dokument</strong>, bzw. eine <strong>Tabelle geöffnet </strong>haben.</p>



<p><strong>Über </strong>die <strong>grafische Oberfläche </strong>kannst Du zumeist auch die <strong>Schritte über </strong>das <strong>Menüband </strong>gehen.</p>



<h2 class="wp-block-heading">Wenn es nicht funktioniert</h2>



<p><strong>Falls </strong>Du mit den hier drüber genannten Schritten <strong>nicht weiterkommst</strong>, kannst Du <strong>überprüfen</strong>, <strong>ob </strong>Dir die <strong>Sicherheitseinstellungen </strong>im Weg sind.</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen.png"><img loading="lazy" decoding="async" width="657" height="426" src="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen.png" alt="Microsoft Excel Optionen öffnen" class="wp-image-5217" title="Microsoft Excel Optionen öffnen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen.png 657w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen-300x195.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen-332x215.png 332w" sizes="auto, (max-width: 657px) 100vw, 657px" /></a><figcaption>Microsoft Excel Optionen öffnen</figcaption></figure>



<p><strong>Gehe </strong>dazu am besten einmal <strong>in </strong>die <strong>Optionen </strong>deines <strong>Programmes </strong>und <strong>überprüfe </strong>den <strong>Punkt </strong>&#8222;<strong>Trust Center</strong>&#8222;, bzw. &#8222;<strong>Sicherheitseinstellungen</strong>&#8222;.</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen.png"><img loading="lazy" decoding="async" width="781" height="297" src="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen.png" alt="Microsoft-Excel-Makroeinstellungen" class="wp-image-5221" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen.png 781w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-300x114.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-768x292.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-700x266.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-332x126.png 332w" sizes="auto, (max-width: 781px) 100vw, 781px" /></a><figcaption>Microsoft-Excel-Makroeinstellungen</figcaption></figure>



<p><strong>Dort </strong>findest Du eventuell <strong>mehr Informationen </strong>zum Thema <strong>Entwicklertools </strong>– worum es sich bei VBA ja handelt.</p>



<p>In den <strong>Optionen </strong>hast Du die <strong>Möglichkeit</strong>, die <strong>Entwicklertools </strong>zum <strong>Menüband hinzuzufügen</strong>, sowie <strong>Einstellungen </strong>zu <strong>Makros</strong>, etc. zu treffen.</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-in-excel-oeffnen/">VBA in Excel öffnen</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vba-in-excel-oeffnen/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Excel Makro erstellen</title>
		<link>https://robbelroot.de/blog/excel-makro-erstellen/</link>
					<comments>https://robbelroot.de/blog/excel-makro-erstellen/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 23:32:56 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications Problemlösungen]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[aufzeichnen]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[cell]]></category>
		<category><![CDATA[column]]></category>
		<category><![CDATA[create]]></category>
		<category><![CDATA[erstellen]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[macro]]></category>
		<category><![CDATA[makro]]></category>
		<category><![CDATA[neu]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[record]]></category>
		<category><![CDATA[recording]]></category>
		<category><![CDATA[row]]></category>
		<category><![CDATA[spalte]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic for applications]]></category>
		<category><![CDATA[xls]]></category>
		<category><![CDATA[xlsm]]></category>
		<category><![CDATA[zeile]]></category>
		<category><![CDATA[zelle]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=5200</guid>

					<description><![CDATA[<p>Excel Makro erstellen Ein Excel Makro erstellen und damit eventuell deine Arbeit zu erleichtern, bzw. zu automatisieren ist Dein Ziel? Dann ist es schön, dass Du auf dem Weg deiner Recherche zu meinem heutigen Beitrag gefunden hast, denn genau darum geht es heute! Schaue gerne alternativ auch bei meinen anderen &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-makro-erstellen/">Excel Makro erstellen</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen-1024x536.png" alt="Excel Makro erstellen" class="wp-image-5202" title="Excel Makro erstellen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-erstellen.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>Excel Makro erstellen</figcaption></figure>






<h2 class="wp-block-heading">Excel Makro erstellen</h2>



<p>Ein <strong>Excel Makro erstellen</strong> <strong>und </strong>damit eventuell deine <strong>Arbeit</strong> zu <strong>erleichtern</strong>, bzw. zu <strong>automatisieren </strong>ist Dein <strong>Ziel</strong>?</p>



<p><strong>Dann </strong>ist es schön, dass Du auf dem Weg <strong>deiner Recherche</strong> zu meinem <strong>heutigen Beitrag </strong>gefunden hast, denn genau darum <strong>geht es </strong>heute!</p>



<p><strong>Schaue </strong>gerne <strong>alternativ </strong>auch bei meinen anderen <strong>VBA </strong>Excel <strong>Beiträgen </strong>wie: <strong><a href="https://robbelroot.de/blog/excel-makro-button/" target="_blank" rel="noreferrer noopener">Excel Makro Button</a></strong>, <strong><a href="https://robbelroot.de/blog/vba-for-schleife/" target="_blank" rel="noreferrer noopener">VBA For Schleife</a></strong> &amp; <strong><a href="https://robbelroot.de/blog/vba-range/" target="_blank" rel="noreferrer noopener">Range VBA</a></strong> vorbei.</p>



<h2 class="wp-block-heading">Was ist eigentlich ein Makro?</h2>



<p><strong>Ganz nach </strong>dem Motto &#8222;<strong>Back To The Roots</strong>&#8220; schauen wir uns erstmal die <strong>Bedeutung eines Makros </strong>an und <strong>wofür </strong>man es letztendlich <strong>verwendet</strong>.</p>



<p><strong>Makros </strong>sind <strong>vor allem </strong>im Bereich der <strong>Automatisierung </strong>von diversen <strong>Prozessen </strong>nicht wegzudenken, denn Sie <strong>können </strong>die <strong>alltägliche Arbeit </strong>erleichtern.</p>



<p>Sie sind <strong>für </strong>die <strong>Non-Programmierer</strong> vor allem aus dem Bereich <strong>Microsoft Excel und Co</strong>. bekannt und werden dort täglich eingesetzt.</p>



<p>Ein <strong>Makro </strong>ist letztendlich nichts Anderes als eine <strong>Sammlung von Anweisungen</strong>, praktisch also <strong>ein Zettel mit</strong> &#8222;Tu dies, tu jenes und danach dies &amp; das&#8220;.</p>



<h2 class="wp-block-heading">Ein Makro auslösen</h2>



<p><strong>Bevor </strong>wir uns der <strong>Erstellung </strong>des <strong>Makros </strong>widmen, <strong>schauen </strong>wir uns <strong>nochmal kurz </strong>vorher die <strong>Möglichkeiten zur Auslösung </strong>von Makros an.</p>



<p>Dazu können wir auf eher <strong>passive Ereignisse</strong>, bzw. Trigger warten, <strong>oder </strong>die <strong>aktive</strong> Varianten wie z. B. durch einen <strong>Button</strong>&#8211;<strong>Klick</strong>, oder <strong>Hotkey </strong>wählen.:</p>



<h3 class="wp-block-heading">Varianten</h3>



<ul class="wp-block-list"><li>auslösen durch <strong>Hotkeys</strong></li><li>im <strong>Ladevorgang </strong>der <strong>Projektmappe</strong></li><li>im <strong>Code </strong>durch den Visual Basic Editor (<strong>VBE</strong>)</li><li>und <strong>mehr</strong>..</li></ul>



<p>Mit diesen <strong>Ausgangspunkten </strong>können wir uns nun <strong>im nächsten Schritt</strong>, die <strong>Erstellung </strong>eines Makros <strong>anschauen</strong>.</p>



<h2 class="wp-block-heading">Vorbereitungen – Excel Makro erstellen</h2>



<p><strong>Oft </strong>bekommt man <strong>bei </strong>der <strong>ersten Arbeit </strong>mit Makros ein <strong>kleines </strong>&#8222;<strong>Problem</strong>&#8222;, Welches aber gar kein richtiges Problem, sondern eher ein <strong>Sicherheitsfeature </strong>ist.</p>



<p><strong>Zumeist </strong>ist die <strong>Verwendung</strong> <strong>von Makros </strong>in Microsoft Excel Tabellen <strong>standardmäßig </strong>mehr oder weniger <strong>deaktiviert</strong>.</p>



<p>Wir <strong>müssen </strong>die mögliche <strong>Nutzung von Makros </strong>also erstmal aktivieren und das machen wir <strong>über die Optionen</strong>.</p>



<h3 class="wp-block-heading">Makros aktivieren</h3>



<p><strong>Begebe </strong>Dich also <strong>nun </strong>unter den Punkt <strong>Datei->Optionen</strong> in die <strong>Optionen von Excel</strong>.</p>



<pre class="wp-block-verse"><strong>Achtung!</strong> Deine Optionen <strong>sehen eventuell anders aus</strong>, bei mir werden durch die <strong>Verwendung </strong>von <strong>Web-Office</strong> aktuell nur <strong>diese Optionen</strong> angezeigt.</pre>



<h4 class="wp-block-heading">Excel Optionen öffnen </h4>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen.png"><img loading="lazy" decoding="async" width="657" height="426" src="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen.png" alt="Microsoft Excel Optionen öffnen" class="wp-image-5217" title="Microsoft Excel Optionen öffnen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen.png 657w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen-300x195.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Optionen-oeffnen-332x215.png 332w" sizes="auto, (max-width: 657px) 100vw, 657px" /></a><figcaption>Microsoft Excel Optionen öffnen</figcaption></figure>



<h4 class="wp-block-heading">Trust-Center &amp; Einstellungen öffnen</h4>



<p>Gehe anschließend auf den Punkt &#8222;Trust-Center&#8220;, oder manchmal auch &#8222;Sicherheitseinstellungen&#8220; genannt.</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Trust-Center-Einstellungen.png"><img loading="lazy" decoding="async" width="694" height="290" src="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Trust-Center-Einstellungen.png" alt="Microsoft Excel Trust Center Einstellungen" class="wp-image-5220" title="Microsoft Excel Trust Center Einstellungen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Trust-Center-Einstellungen.png 694w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Trust-Center-Einstellungen-300x125.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Trust-Center-Einstellungen-332x139.png 332w" sizes="auto, (max-width: 694px) 100vw, 694px" /></a><figcaption>Microsoft Excel Trust Center Einstellungen</figcaption></figure>



<h4 class="wp-block-heading">Makroeinstellungen öffnen</h4>



<p>Klicke auf den farblich markierten Button und <strong>öffne </strong>somit die <strong>Einstellungen des Trust-Centers</strong>.</p>



<pre class="wp-block-verse"><strong>Beachte </strong>natürlich die <strong>Hinweise </strong>hinter den einzelnen Optionen und <strong>öffne nur </strong>Dateien, dessen <strong>Absender </strong>Du <strong>kennst</strong>, bzw. <strong>vertraust</strong>!</pre>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen.png"><img loading="lazy" decoding="async" width="781" height="297" src="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen.png" alt="Microsoft Excel Makroeinstellungen" class="wp-image-5221" title="Microsoft Excel Makroeinstellungen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen.png 781w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-300x114.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-768x292.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-700x266.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-Makroeinstellungen-332x126.png 332w" sizes="auto, (max-width: 781px) 100vw, 781px" /></a><figcaption>Microsoft Excel Makroeinstellungen</figcaption></figure>



<p><strong>Alternativ </strong>kannst Du zur gezeigten Methode auch für <strong>jede Mappe</strong> <strong>einzeln </strong>bestimmen, <strong>ob </strong>Du dessen <strong>Makros verwenden </strong>möchtest.</p>



<p>Diese Möglichkeit bietet Dir <strong>Excel eigentlich </strong>auch von <strong>selbst </strong>an, <strong>meist mit </strong>einem kleinen <strong>Popup</strong>.</p>



<p>Allerdings kann die bei <strong>häufiger Verwendung </strong>von Makros auch <strong>nervig </strong>werden, <strong>jedoch </strong>ist es die <strong>sicherere Variante</strong>.</p>



<h3 class="wp-block-heading">Entwicklertools einbinden</h3>



<p>Mit dem <strong>nächsten Schritt</strong> würde ich Dir auch gleichzeitig ans Herz legen, die <strong>Entwicklertools </strong>in dein <strong>Menüband </strong>von Excel <strong>einzubinden</strong>.</p>



<p>Auch hier erschaffst Du Dir so einen <strong>schnellen </strong>und <strong>einfachen Zugriff </strong>auf die eventuell <strong>notwendigen Tools</strong>.</p>



<p><strong>Öffne </strong>auch hierzu wieder die <strong>Optionen </strong>von Excel und klicke links außen auf &#8222;<strong>Menüband anpassen</strong>&#8222;.</p>



<p><strong>Danach </strong>kannst Du die <strong>Entwicklertools </strong>meist <strong>mit </strong>einer <strong>Checkbox </strong>auf der <strong>rechten Seite</strong> aktivieren.</p>



<h2 class="wp-block-heading">Excel Makro erstellen – Die Praxis</h2>



<p><strong>Nachdem </strong>Du im letzten Schritt eventuell die <strong>Entwicklertools aktivierst </strong>hast, <strong>oder </strong>bereits <strong>aktiviert hattest</strong>, nutzen wir Diese auch gleich.</p>



<p><strong>Klicke </strong>dafür in deinem <strong>Menüband </strong>auf die <strong>Entwicklertools </strong>und <strong>anschließend </strong>auf die Fläche namens <strong>Makros</strong>.</p>



<p><strong>Gebe </strong>nun einen <strong>Namen </strong>für dein neues Makro <strong>ein </strong>und bestätige Diesen danach.</p>



<p>Im <strong>nächsten Schritt </strong>wird sich dadurch der <strong>VBA-Editor öffnen</strong> und schon <strong>einige Zeilen </strong>an <strong>Code</strong> zeigen.</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1.png"><img loading="lazy" decoding="async" width="982" height="781" src="https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1.png" alt="Beispiel Makro 1" class="wp-image-5231" title="Beispiel Makro 1" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1.png 982w, https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1-300x239.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1-768x611.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1-700x557.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Beispiel-Makro-1-332x264.png 332w" sizes="auto, (max-width: 982px) 100vw, 982px" /></a><figcaption>Beispiel Makro 1 – Quelle: Microsoft Dokumentation</figcaption></figure>



<p><strong>Hier </strong>könntest Du nun den <strong>Code deines Makros </strong>eintragen und z. B. durch:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">MsgBox("Yay, mein eigenes Makro!")</pre>



<p>eine <strong>simple Messagebox anzeigen </strong>lassen.</p>



<p><strong>Detailliertere </strong>Informationen findest Du auch in der <strong><a href="https://docs.microsoft.com/de-de/office/vba/library-reference/concepts/getting-started-with-vba-in-office" target="_blank" rel="noreferrer noopener">offiziellen Dokumentation </a></strong>von Microsoft.</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-makro-erstellen/">Excel Makro erstellen</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/excel-makro-erstellen/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Excel Makro Button</title>
		<link>https://robbelroot.de/blog/excel-makro-button/</link>
					<comments>https://robbelroot.de/blog/excel-makro-button/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 16:01:21 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications Problemlösungen]]></category>
		<category><![CDATA[anweisung]]></category>
		<category><![CDATA[anweisungen]]></category>
		<category><![CDATA[ausführen]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[calculation]]></category>
		<category><![CDATA[chain]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[execute]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[kalkulationen]]></category>
		<category><![CDATA[kette]]></category>
		<category><![CDATA[knopf]]></category>
		<category><![CDATA[macro]]></category>
		<category><![CDATA[makro]]></category>
		<category><![CDATA[run]]></category>
		<category><![CDATA[starten]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[tabellen]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[tables]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual basic]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=5169</guid>

					<description><![CDATA[<p>Excel Makro Button Lasse mit einem Excel Makro Button eine vorgefertigte Kette von Anweisungen ausführen und deine Arbeit vereinfachen. Wie Du einen solchen Button erstellst, um ein definiertes Makro aufzurufen lernst Du in meinem heutigen Beitrag zum Thema Excel VBA. Vielleicht hast Du ja später noch Interesse an anderen Excel &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-makro-button/">Excel Makro Button</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button-1024x536.png" alt="Excel Makro Button" class="wp-image-5179" title="Excel Makro Button" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Makro-Button.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Excel Makro Button</figcaption></figure>






<h2 class="wp-block-heading">Excel Makro Button</h2>



<p>Lasse mit einem <strong>Excel Makro Button</strong> eine vorgefertigte <strong>Kette von Anweisungen</strong> <strong>ausführen </strong>und deine Arbeit vereinfachen.</p>



<p><strong>Wie </strong>Du einen <strong>solchen Button erstellst</strong>, um ein <strong>definiertes Makro aufzurufen </strong>lernst Du in meinem <strong>heutigen Beitrag </strong>zum Thema <strong>Excel VBA</strong>.</p>



<p><strong>Vielleicht </strong>hast Du ja <strong>später </strong>noch Interesse an <strong>anderen Excel VBA Beiträgen</strong>: <strong><a href="https://robbelroot.de/blog/vba-for-schleife/" target="_blank" rel="noreferrer noopener">VBA For Schleife</a></strong>, <strong><a href="https://robbelroot.de/blog/vba-msgbox/" target="_blank" rel="noreferrer noopener">MsgBox</a></strong>, <strong><a href="https://robbelroot.de/blog/vba-range/" target="_blank" rel="noreferrer noopener">Range</a></strong>.</p>



<pre class="wp-block-verse"><strong>Achtung</strong>! <strong>Bevor </strong>Du mit Makros <strong>durchstarten </strong>kannst, <strong>musst </strong>Du Sie vorher in Excel <strong>aktivieren</strong>!</pre>



<h2 class="wp-block-heading">Was sind Makros?</h2>



<p><strong>Nicht </strong>zu <strong>verwechseln mit </strong>dem slawischen, männlichen Vornamen &#8222;Marko&#8220;, <strong>ist </strong>ein <strong><a href="https://de.wikipedia.org/wiki/Makro" target="_blank" rel="noreferrer noopener">Makro</a></strong> eine <strong>Folge von Anweisungen</strong>.</p>



<p><strong>Besonders </strong>häufig, bzw. besonders <strong>beliebt </strong>sind <strong>Makros </strong>im <strong>Automatisierungsbereich </strong>in verschiedenen Kontexten.</p>



<p><strong>Speziell </strong>die <strong>Arbeit </strong>mit <strong>Tabellen </strong>aus z. B. <strong><a href="https://de.wikipedia.org/wiki/Microsoft_Excel" target="_blank" rel="noreferrer noopener">Microsoft Excel</a></strong> <strong>bietet </strong>die <strong>Erstellung </strong>und <strong>Verwendung </strong>solcher hilfreichen <strong>Makros </strong>an.</p>



<p><strong>Dabei </strong>wird dem Nutzer <strong>nicht nur </strong>vorhandene und zukünftige <strong>Arbeit abgenommen</strong>, die Arbeit kann dadurch auch wesentlich <strong>effizienter gestaltet</strong> werden!</p>



<h2 class="wp-block-heading">Makros ausführen</h2>



<p>Um bereits erstellte <strong>Makros auszuführen </strong>kannst Du <strong>verschiedene Methoden</strong> verwenden, darunter:</p>



<h3 class="wp-block-heading">Möglichkeiten</h3>



<ul class="wp-block-list">
<li>durch eine <strong>Tastenkombination</strong></li>



<li>beim <strong>Öffnen </strong>einer <strong>Projektmappe</strong></li>



<li><strong>aus </strong>dem Visual Basic Editor (<strong>VBE</strong>)</li>



<li>und <strong>mehr</strong>..</li>
</ul>



<p>In <strong>diesem</strong> <strong>Beitrag </strong>beschäftigen wir uns allerdings mit einem <strong>Button</strong>, <strong>also </strong>dem <strong>Ausführen </strong>eines <strong>Makros </strong>bei <strong>Klick auf </strong>einem Button.</p>



<h2 class="wp-block-heading">Methode 1: Button als Form einfügen</h2>



<p><strong>Damit </strong>wir einen <strong>Knopf verwenden </strong>können, um ein jeweiliges &#8222;auf Ihm&#8220; hinterlegtes <strong>Makro auszuführen</strong>, müssen wir diesen <strong>Knopf </strong>natürlich erst einmal <strong>hinzufügen</strong>.</p>



<pre class="wp-block-verse has-black-color has-text-color"><strong>Achtung!</strong> <strong>Je nach</strong> Excel <strong>Version kann </strong>sich die Menüführung <strong>unterschiedlich </strong>gestalten. Schaue auch ggf. in den <strong>Entwicklerwerkzeugen </strong>in Excel vorbei <strong>und prüfe </strong>vorher, <strong>ob </strong>du Diese <strong>aktiviert </strong>hast! Verwende für Excel-Sheets mit Makros auch die Dateiendung "<strong>.xlsm</strong>".</pre>



<h3 class="wp-block-heading">Einfügen Menü</h3>



<p>Gehe dazu in das <strong>obere Menü </strong>von Excel und <strong>suche </strong>den Punkt &#8222;<strong>Einfügen</strong>&#8222;:</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Menue-Einfuegen.png"><img loading="lazy" decoding="async" width="397" height="247" src="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Menue-Einfuegen.png" alt="Excel Menü Einfügen" class="wp-image-5183" title="Excel Menü Einfügen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Excel-Menue-Einfuegen.png 397w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Menue-Einfuegen-300x187.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-Menue-Einfuegen-332x207.png 332w" sizes="auto, (max-width: 397px) 100vw, 397px" /></a><figcaption class="wp-element-caption">Excel Menü Einfügen</figcaption></figure>



<h3 class="wp-block-heading">Abgerundetes Rechteck</h3>



<p>Wähle <strong>anschließend </strong>aus, dass Du eine <strong>Form </strong>wie z. B. das <strong>abgerundete Rechteck einfügen </strong>möchtest:</p>



<pre class="wp-block-verse"><strong>Achtung! </strong>Auch hier nochmal der <strong>Hinweis </strong>auf <strong>unterschiedliche </strong>Excel-<strong>Versionen </strong>– Falls Du nicht fündig wirst, <strong>schaue </strong>doch mal <strong>ins Menü </strong>"<strong>Entwickler</strong>" (es muss erst aktiviert werden!)</pre>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-einfuegen.png"><img loading="lazy" decoding="async" width="615" height="252" src="https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-einfuegen.png" alt="Excel abgerundetes Rechteck einfügen" class="wp-image-5185" title="Excel abgerundetes Rechteck einfügen" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-einfuegen.png 615w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-einfuegen-300x123.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-einfuegen-332x136.png 332w" sizes="auto, (max-width: 615px) 100vw, 615px" /></a><figcaption class="wp-element-caption">Excel abgerundetes Rechteck einfügen</figcaption></figure>



<h3 class="wp-block-heading">Button gestalten</h3>



<p><strong>Danach </strong>kannst Du deinen <strong>Button</strong>, bzw. dein abgerundetes Rechteck so <strong>gestalten </strong>wie Du magst:</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-Button.png"><img loading="lazy" decoding="async" width="418" height="229" src="https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-Button.png" alt="Excel abgerundetes Rechteck Button" class="wp-image-5188" title="Excel abgerundetes Rechteck Button" srcset="https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-Button.png 418w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-Button-300x164.png 300w, https://robbelroot.de/wp-content/uploads/2021/08/Excel-abgerundetes-Rechteck-Button-332x182.png 332w" sizes="auto, (max-width: 418px) 100vw, 418px" /></a><figcaption class="wp-element-caption">Excel abgerundetes Rechteck Button</figcaption></figure>



<h2 class="wp-block-heading">Makro an Button binden</h2>



<p>Nachdem wir im <strong>vorherigen </strong>Schritt den <strong>Button </strong>an sich mit <strong>Einfügen </strong>eines <strong>abgerundeten Rechtecks erledigt</strong> haben, können wir Diesem <strong>nun </strong>das <strong>Makro zuweisen</strong>.</p>



<p><strong>Klicke </strong>den <strong>Button </strong>dazu <strong>einfach </strong>mit der <strong>rechten Maustaste </strong>an und wähle &#8222;<strong>Makro zuweisen</strong>&#8220; – fertig!</p>



<p><strong>Nun </strong>kannst Du Dein <strong>definiertes</strong> <strong>Makro </strong>über den hinzugefügten und gestylten <strong>Button </strong>aufrufen!</p>



<h2 class="wp-block-heading">Methode 2: Schaltfläche über den Entwickler-Tab einfügen</h2>



<p>Die zweite &#8211; und oft bessere &#8211; Methode nutzt den Entwickler-Tab in Excel.<br>Damit erhältst Du eine echte Formular-Schaltfläche, bei der das Makro<br>direkt beim Erstellen zugewiesen wird.</p>



<h3 class="wp-block-heading">Schritt 1: Entwickler-Tab aktivieren</h3>



<p>Falls der Entwickler-Tab noch nicht sichtbar ist:<br>Datei → Optionen → Menüband anpassen → Entwicklertools aktivieren → OK.</p>



<h3 class="wp-block-heading">Schritt 2: Schaltfläche einfügen</h3>



<p>Wechsle in den Tab „Entwickler&#8220; und klicke auf „Einfügen&#8220;. Unter „Formularsteuerelemente&#8220; findest Du das Symbol für eine Schaltfläche (erstes Icon). Zeichne die Schaltfläche auf dem gewünschten Bereich im Sheet.</p>



<h3 class="wp-block-heading">Schritt 3: Makro direkt zuweisen</h3>



<p>Direkt nach dem Loslassen der Maus öffnet sich automatisch der Dialog &#8222;Makro zuweisen&#8220;. Wähle Dein Makro aus der Liste, oder erstelle ein neues direkt über &#8222;Neu&#8220;.</p>



<h2 class="wp-block-heading">Ein einfaches VBA-Makro als Beispiel</h2>



<p>Falls Du noch kein Makro hast, hier ein schnelles Beispiel zum Testen. Öffne den VBA-Editor mit Alt + F11, füge ein neues Modul ein und trage folgenden Code ein:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Sub MeinMakro()
    MsgBox "Makro wurde erfolgreich ausgeführt!", vbInformation, "Info"
End Sub</pre>



<p>Weise dieses Makro anschließend Deinem Button zu — fertig. Beim Klick auf den Button erscheint eine Meldung als Bestätigung.</p>



<h2 class="wp-block-heading">FAQ</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1774458690215"><strong class="schema-faq-question"><strong>Wie erstelle ich einen Excel Makro Button?</strong></strong> <p class="schema-faq-answer">Füge über Einfügen → Formen ein abgerundetes Rechteck ein, gestalte es als Button und weise per Rechtsklick → „Makro zuweisen&#8220; ein VBA-Makro zu. Alternativ: Entwickler-Tab → Einfügen → Formular-Schaltfläche.</p> </div> <div class="schema-faq-section" id="faq-question-1774458703011"><strong class="schema-faq-question"><strong>Wo finde ich den Entwickler-Tab in Excel?</strong></strong> <p class="schema-faq-answer">Er ist standardmäßig ausgeblendet. Aktivieren über: Datei → Optionen → Menüband anpassen → Häkchen bei „Entwicklertools&#8220; setzen → OK.</p> </div> <div class="schema-faq-section" id="faq-question-1774458709735"><strong class="schema-faq-question"><strong>Was ist der Unterschied zwischen Form-Button und Formular-Schaltfläche?</strong></strong> <p class="schema-faq-answer">Der Form-Button (abgerundetes Rechteck) ist flexibler gestaltbar. Die Formular-Schaltfläche aus dem Entwickler-Tab ist schlichter, aber direkter — das Makro wird beim Erstellen sofort zugewiesen.</p> </div> </div>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-makro-button/">Excel Makro Button</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/excel-makro-button/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>VBA For Schleife</title>
		<link>https://robbelroot.de/blog/vba-for-schleife/</link>
					<comments>https://robbelroot.de/blog/vba-for-schleife/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Mon, 19 Jul 2021 19:36:01 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications Problemlösungen]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[calculation]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[formel]]></category>
		<category><![CDATA[formeln]]></category>
		<category><![CDATA[formula]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[funktion]]></category>
		<category><![CDATA[funktionen]]></category>
		<category><![CDATA[fußgesteuert]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[kalkulationen]]></category>
		<category><![CDATA[kopfgesteuert]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[schleife]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[tabellen]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=4519</guid>

					<description><![CDATA[<p>VBA For Schleife Du möchtest die VBA For Schleife zum Durchlaufen von z. B. Zellen verwenden, oder verstehen, was Schleifen sind? Dann starte jetzt durch und lerne in meinem heutigen Beitrag alles Wissenswerte über das für die Programmierung essentielle Thema namens &#8222;Schleifen&#8222;. Vielleicht möchtest Du zu einem späteren Zeitpunkt auch &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-for-schleife/">VBA For Schleife</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife-1024x536.png" alt="VBA For Schleife" class="wp-image-4527" title="VBA For Schleife" srcset="https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-For-Schleife.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>VBA For Schleife</figcaption></figure>






<h2 class="wp-block-heading" id="vba-for-schleife">VBA For Schleife</h2>



<p>Du <strong>möchtest </strong>die <strong>VBA For Schleife</strong> zum <strong>Durchlaufen </strong>von z. B. <strong>Zellen </strong>verwenden, oder <strong>verstehen</strong>, was <strong>Schleifen </strong>sind?</p>



<p>Dann <strong>starte </strong>jetzt <strong>durch </strong>und <strong>lerne </strong>in meinem <strong>heutigen Beitrag </strong>alles <strong>Wissenswerte </strong>über das für die <strong>Programmierung </strong>essentielle <strong>Thema </strong>namens &#8222;<strong>Schleifen</strong>&#8222;.</p>



<p><strong>Vielleicht </strong>möchtest Du zu einem <strong>späteren Zeitpunkt </strong>auch in meine <strong>folgenden </strong>anderen <strong>Beiträge </strong>reinschauen: <strong><a href="/blog/vba-msgbox" target="_blank" rel="noreferrer noopener">MsgBox</a></strong>, <strong><a href="/blog/vba-range" target="_blank" rel="noreferrer noopener">Range</a></strong>, <strong><a href="/blog/excel-vb-array" target="_blank" rel="noreferrer noopener">VBA Array</a></strong>.</p>



<h2 class="wp-block-heading" id="ein-teil-der-infrastruktur">Ein Teil der Infrastruktur</h2>



<p><strong>Schleifen sind </strong>in der Programmierung ein <strong>essentieller Teil </strong>der <strong>Infrastruktur </strong>und somit <strong>so gut wie in jeder Sprache</strong> ein häufig genutzten <strong>Basis-Werkzeug</strong>.</p>



<p>Nicht umsonst ist das so, denn wir <strong>müssen </strong>an verschiedenen Stellen im Programmablauf gewisse <strong>Dinge wiederholen</strong>.</p>



<p>Die <strong>Konditionen</strong>, bzw. <strong>Bedingungen </strong>für diese Wiederholungen können unterschiedlicher Natur sein und <strong>können sich </strong>während des Programmablaufs <strong>verändern</strong>.</p>



<p><strong>Manchmal </strong>möchten wir <strong>Objekte durchlaufen</strong>, <strong>manchmal </strong>möchten wir Prozeduren und Sub-Prozeduren anhand einer <strong>gewissen Anzahl an Durchläufen </strong>wiederholen.</p>



<h2 class="wp-block-heading" id="nicht-aus-dem-luftverkehr">Nicht aus dem Luftverkehr</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/VBA-For-Schleife-–-Nicht-aus-dem-Luftraum.jpg"><img loading="lazy" decoding="async" width="640" height="360" src="https://robbelroot.de/wp-content/uploads/2021/08/VBA-For-Schleife-–-Nicht-aus-dem-Luftraum.jpg" alt="VBA For Schleife – Nicht aus dem Luftraum" class="wp-image-5828" title="VBA For Schleife – Nicht aus dem Luftraum"/></a><figcaption>VBA For Schleife – Nicht aus dem Luftraum</figcaption></figure>



<p><strong>Anders als </strong>man eventuell als <strong>Nicht-Entwickler</strong> <strong>denken </strong>könnte, haben <strong>Schleifen </strong>in der <strong>Softwareentwicklung </strong>nichts mit &#8222;<strong>eine Schleife fliegen</strong>&#8220; zu tun.</p>



<p><strong>Okay</strong>, zugegebenermaßen wiederholen <strong>Flugzeuge </strong>ja beim <strong>Schleifen</strong>&#8211;<strong>Ziehen </strong>auch vermutlich <strong>gewisse Muster </strong>– insofern ich das beurteilen kann..</p>



<p>Daher läuft es zumindest <strong>ähnlich bei </strong>einer <strong><a href="https://de.wikipedia.org/wiki/Schleife_(Programmierung)" target="_blank" rel="noreferrer noopener">Schleife</a> </strong>in der <strong>Softwareentwicklung</strong> ab, da auch dort <strong>gewisse Prozesse</strong> <strong>wiederholt</strong>, oder zumindest ähnlich abgearbeitet werden.</p>



<h2 class="wp-block-heading" id="denke-z-b-an-ein-kartenspiel">Denke z. B. an ein Kartenspiel</h2>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2022/02/Karten-mischen-und-austeilen2.gif"><img loading="lazy" decoding="async" width="480" height="270" src="https://robbelroot.de/wp-content/uploads/2022/02/Karten-mischen-und-austeilen2.gif" alt="Karten mischen und austeilen" class="wp-image-8405" title="Karten mischen und austeilen"/></a><figcaption>Karten mischen und austeilen – Quelle giphy/asmodeelive</figcaption></figure>



<p><strong>Stell</strong>&#8218; <strong>Dir </strong>mal <strong>ein </strong>gutes altes <strong>Kartenspiel </strong>wie z. B. <strong>Mau-Mau</strong>, oder auch <strong>Skip-Bo</strong> wenn Du möchtest <strong>vor</strong>.</p>



<p>Meistens <strong>werden </strong>in den gängigen Spielen aus einem <strong>vorhandenen Deck</strong> eine gewisse <strong>Anzahl </strong>an <strong>Karten gezogen</strong>.</p>



<p>Diese <strong>müssen </strong>natürlich einerseits <strong>aus </strong>dem <strong>Deck verschwinden und </strong>andererseits <strong>in </strong>Deine <strong>Hand aufgenommen </strong>werden.</p>



<p>So wie ich die Mau-Mau Regeln kenne, <strong>zieht jeder </strong>Spieler zu Beginn des Spiels <strong>7 Karten</strong> aus dem Deck <strong>und sortiert </strong>Diese <strong>wie </strong>Ihm <strong>beliebt</strong>.</p>



<p>Dabei haben wir auch schon ein <strong>wichtiges Kriterium </strong>a la &#8222;7 Karten&#8220; genannt, wir haben also eine Art <strong>Zähler</strong>.</p>



<p>Der <strong>Zähler gibt </strong>dabei <strong>an</strong>, <strong>wie oft </strong>der <strong>Inhalt </strong>der Schleife, also der &#8222;Zieh eine Karte&#8220;-Prozess <strong>wiederholt </strong>werden soll.</p>



<p>Dadurch <strong>wird </strong>der sogenannte <strong>Body </strong>(der Inhalt) der Schleife, anhand einer gewissen <strong>Anzahl von Wiederholungen ausgeführt</strong>.</p>



<h2 class="wp-block-heading" id="schleifen-arten">Schleifen-Arten</h2>



<p><strong>In </strong>der <strong>Programmierung unterscheiden </strong>wir <strong>gängigerweise zwischen zwei </strong>verschiedene <strong>Arten </strong>von Schleifen. Die <strong>Ausführung</strong>, bzw. die <strong>genauere Steuerung </strong>des Schleifeninhalts <strong>kann </strong>unter Umständen <strong>variieren</strong>.</p>



<p><strong>In einigen Fällen </strong>müssen wir eventuell erst ein <strong>bestimmtes Kriterium </strong>überprüfen <strong>und </strong>anschließend den <strong>Inhalt </strong>der Schleife <strong>ausführen</strong>.</p>



<p>In <strong>anderen Fällen </strong>müssen wir hingegen <strong>eventuell </strong>die <strong>Prüfung </strong>für die Ausführung <strong>an </strong>das <strong>Ende </strong>der Schleife <strong>verlagern</strong>.</p>



<p><strong>Siehe </strong>Dir dazu das folgende <strong>Bild </strong>genauer <strong>an</strong>:</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Kopfgesteuerte-und-Fussgesteuerte-Schleifen.png"><img loading="lazy" decoding="async" width="1038" height="666" src="https://robbelroot.de/wp-content/uploads/2021/08/Kopfgesteuerte-und-Fussgesteuerte-Schleifen.png" alt="Kopfgesteuerte und Fußgesteuerte Schleifen" class="wp-image-5837" title="Kopfgesteuerte und Fußgesteuerte Schleifen"/></a></figure>



<p><strong>Wie </strong>in dem Teil hier drüber <strong>bereits angeschnitten</strong>, gibt es einerseits die <strong>zählergesteuerte Schleife</strong>. Die <strong>Anzahl der Wiederholungen </strong>einer zählergesteuerten Schleife <strong>wird anhand </strong>eines <strong>Zählers festgelegt</strong>. Der <strong>Zähler kann </strong>dabei natürlich <strong>aus unterschiedlichen Quellen </strong>wie z. B. einer Variable, oder eines Zellenwertes <strong>kommen</strong>.</p>



<h3 class="wp-block-heading" id="kopfgesteuerte-schleifen">Kopfgesteuerte Schleifen</h3>



<p><strong>Bei </strong>den <strong>Kopfgesteuerten Schleifen </strong>handelt es sich um ein Schleifenkonstrukt, Welches die <strong>Bedingung zur Ausführung im Kopf </strong>prüft.</p>



<p><strong>Falls </strong>und auch nur wenn die Bedingung <strong>erfüllt </strong>ist, <strong>wird </strong>der <strong>Body</strong>, also der Inhalt der Schleife <strong>ausgeführt </strong>und <strong>anschließend </strong>wieder <strong>zum Kopf </strong>gesprungen.</p>



<p><strong>Danach </strong>folgt eine <strong>erneute Prüfung </strong>und eine <strong>eventuelle neue Durchführung </strong>– eine Schleife ist geboren!</p>



<h3 class="wp-block-heading" id="fussgesteuerte-schleifen">Fußgesteuerte Schleifen</h3>



<p>Der nächste Schleifen-Typ wäre die <strong>fußgesteuerte Schleife</strong>, Welche analog zur obigen funktioniert.</p>



<p>Hierbei wird <strong>allerdings </strong>die <strong>Überprüfung </strong>der Bedingung erst <strong>im Fuß </strong>durchgeführt.</p>



<p>Das <strong>hat </strong>dann zur <strong>Folge</strong>, <strong>dass </strong>der <strong>Body </strong>der Schleife <strong>zuerst </strong>ausgeführt wird <strong>und </strong>erst <strong>im Fuß</strong> eine <strong>erneute Ausführung</strong> <strong>erörtert </strong>wird.</p>



<h2 class="wp-block-heading" id="der-bezug-zum-code-vba-for-schleife">Der Bezug zum Code – VBA For Schleife</h2>



<figure class="wp-block-image size-full is-resized"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-1.png"><img decoding="async" src="https://robbelroot.de/wp-content/uploads/2021/08/Microsoft-Excel-1.png" alt="Microsoft Excel" class="wp-image-5854" width="480" title="Microsoft Excel"/></a><figcaption>Microsoft Excel</figcaption></figure>



<p><strong>Fangen </strong>wir <strong>nun </strong>einmal <strong>an</strong>, mit dem folgenden Beispiel den konkreten <strong>Bezug</strong> <strong>zum Code </strong>herzustellen. Dabei ist es wichtig zu verstehen, in welchem Kontext die Schleifen arbeiten. Andererseits sollte man diverse gängige Fehler durch die Verwendung von Schleifen vermeiden.</p>



<h3 class="wp-block-heading" id="prozesse-bzw-unterprozesse-aufrufen">Prozesse, bzw. Unterprozesse aufrufen</h3>



<p><strong>Viele anfängliche </strong>Excel-<strong>Programmierer verwenden Code wie </strong>gleich <strong>demonstriert</strong>. Sei es <strong>aus welchen Beweggründen auch immer</strong>: Unwissen, Unsicherheit, etc. <strong>Leider </strong>ist die dann entstehende <strong>Vorgehensweise </strong>wie wir gleich sehen werden, <strong>aus </strong>diversen <strong>Gründen nicht </strong>sehr <strong>vorteilhaft</strong>.</p>



<p><strong>Stellen wir </strong>uns dafür vor, dass wir folgende <strong>3 Unterprozesse</strong> haben, die <strong>zusammen </strong>letztendlich z. B. eine Email  versenden sollen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">' Deck prüfen
' HandPrüfen
' das Karten ziehen selbst</pre>



<h3 class="wp-block-heading" id="manuell-mehrfach-aufrufen">Manuell mehrfach aufrufen</h3>



<p>Falls man bisher noch keine Berührungspunkte mit Schleifen hatte, könnte man in die bekannteste Versuchung kommen (nicht seit es Schokolade gibt – wer die Werbung noch kennt!).</p>



<p>Dieser <strong>jemand würde </strong>also die obigen <strong>drei Schritte </strong>– hier einfach nur als Kommentare dargestellt – <strong>ggf. so aufrufen</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">' Deck prüfen
' HandPrüfen
' das Karten ziehen selbst

' Deck prüfen
' HandPrüfen
' das Karten ziehen selbst

' .... pro Spieler wiederholen</pre>



<h3 class="wp-block-heading" id="die-nachteile-bitte-nicht-machen">Die Nachteile – bitte nicht machen!</h3>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/08/Vorsicht.jpg"><img loading="lazy" decoding="async" width="640" height="375" src="https://robbelroot.de/wp-content/uploads/2021/08/Vorsicht.jpg" alt="Vorsicht Zeichen" class="wp-image-5851" title="Vorsicht"/></a><figcaption>Vorsicht</figcaption></figure>



<p>Die dabei <strong>auftretenden Probleme </strong>stechen einem <strong>unerfahrenen </strong>Programmierer häufig <strong>nicht </strong>direkt ins <strong>Auge</strong>.</p>



<h4 class="wp-block-heading" id="folgeanderungen">Folgeänderungen</h4>



<p><strong>Früher </strong>oder später wird man <strong>allerdings </strong>z. B. <strong>auf </strong>das <strong>Problem </strong>stoßen, dass Änderungen an Schritt 2 alle 5 Code-Blöcke betreffen.</p>



<p>Man <strong>müsste </strong>also um <strong>praktisch </strong>eine <strong>Sache </strong>zu <strong>ändern</strong>, 5 Punkte anpassen und <strong>je nachdem</strong> <strong>wie groß </strong>der jeweilige Punkt ist, hat man auch den <strong>Aufwand </strong>– würg!</p>



<p>Dieses Problem <strong>könnte </strong>natürlich <strong>durch </strong>den <strong>Bau</strong> <strong>einer Sub gelöst</strong> werden. Konzentriere dich hierbei bitte nicht zu sehr auf eine Art Implementierung, also die Vorgehensweise selbst. Versuche nach Möglichkeit den abstrakten Weg dahinter zu verstehen. Die konkrete Ausführung des Ziehens selbst ist hier eher irrelevant, viel mehr spielt die Struktur eine Rolle!</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Sub KartenZiehen(anzahlKarten As Integer, spieler As Integer)
  ' Deck prüfen
  ' HandPrüfen
  ' das Karten ziehen selbst
  For i As Integer = 1 To anzahlKarten
    ' realisiere das Ziehen der Karten..
  Next
End Sub</pre>



<p>Der <strong>Aufruf </strong>würde dann durch die Verwendung der Sub <strong>so </strong>aussehen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">KartenZiehen(7, 1)
KartenZiehen(7, 2)</pre>



<p><strong>Das </strong>ist <strong>natürlich </strong>auch <strong>nicht </strong>wirklich <strong>besser</strong>, wenn wir an das Beispiel <strong>mit </strong>dem <strong>Kartenspiel </strong>denken, denn <strong>allein </strong>die <strong>Formulierung macht </strong>es <strong>aus</strong>:</p>



<pre class="wp-block-verse">"..beim Start des Spiels, zieht <strong>jeder Spieler</strong> X Karten"</pre>



<h4 class="wp-block-heading" id="duplicated-code">Duplicated Code</h4>



<p>Ein <strong>weiteres Problem</strong>, Welches der <strong>obige Code </strong>ganz klar an den Tag legt, ist das <strong>Vorhandensein </strong>von &#8222;<strong>Duplicated Code</strong>&#8222;.</p>



<p>Wir <strong>wiederholen </strong>also <strong>bestehenden Code</strong>, <strong>statt </strong>ihn korrekterweise <strong>in </strong>einer <strong>Schleife aufzurufen</strong>.</p>



<p><strong>Jedes Mal</strong>, <strong>wenn </strong>man z. B. die <strong>Bezeichnung </strong>der Sub <strong>ändern </strong>würde, <strong>müsste </strong>man <strong>im schlimmsten Fall </strong>alle <strong>anderen Vorkommnisse </strong>manuell <strong>ändern</strong>.</p>



<p><strong>Natürlich </strong>gibt es auch <strong>Funktionen </strong>der <strong>Entwicklungsumgebung</strong>, <strong>Welche </strong>uns dabei <strong>helfen könnten</strong>, <strong>allerdings </strong>ist das ja <strong>nicht das Ziel </strong>des Ganzen.</p>



<h2 class="wp-block-heading" id="vba-for-schleife-selbst-zahlergesteuert">VBA For Schleife selbst (zählergesteuert)</h2>



<p>Kommen wir <strong>nun </strong>zur <strong>For</strong>&#8211;<strong>Schleife </strong>bezogen auf das <strong>Beispiel </strong>selbst, womit wir die <strong>obigen Probleme vermeiden</strong>. Auch wenn es hier vermutlich besser wäre eine &#8222;For Each&#8220;-Schleife zu verwenden.. Das Thema hier ist ja schließlich die For- also eine Zählergesteuerte Schleife!</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim startHandKartenZahl As Integer
startHandKartenAnzahl = 7
Dim spielerNr As Integer
For spielerNr = 1 To 2
    KartenZiehen(7, spielerNr)
Next</pre>



<p>Diese <strong>Schleifen-Art</strong> <strong>nennt </strong>man auch <strong>zählergesteuerte </strong>und <strong>kopfgesteuerte Schleife</strong>, denn Sie <strong>benutzt </strong>eine <strong>Zähler</strong>&#8211;<strong>Variable </strong>namens &#8222;spielerNr&#8220;.</p>



<p><strong>Ebenso </strong>verwendet die Schleife die <strong>Bedingung </strong>zur Ausführung im Kopf, dass heißt, dass die <strong>Schleife nur ausgeführt </strong>wird, <strong>solange und </strong>nur <strong>wenn </strong>die Bedingung im Kopf &#8222;True&#8220; ergibt.</p>



<h2 class="wp-block-heading" id="vba-for-schleife-zahlergesteuert-ruckwarts">VBA For Schleife (zählergesteuert) rückwärts</h2>



<p><strong>Besonders </strong>cool ist <strong>auch </strong>die <strong>Möglichkeit </strong>die <strong>Schleife </strong>mit wenig Aufwand einfach <strong>rückwärts laufen </strong>zu lassen. In diesem Fall würde also statt der Spieler 1, der Spieler 2 seine Karten zuerst bekommen.</p>



<p>Es kann ja nicht immer nur Mario an Platz 1 sein, sondern auch mal Luigi!</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For spielerNr = 2 To 1 Step -1
    KartenZiehen(7, spielerNr)
Next</pre>



<h2 class="wp-block-heading" id="ein-weiteres-vba-for-schleife-beispiel-objektgesteuert">Ein weiteres VBA For Schleife Beispiel (objektgesteuert)</h2>



<p>Ein <strong>weiteres </strong>nützliches <strong>Beispiel </strong>für eine VBA For Schleife <strong>wäre </strong>– ich nenne es mal – das <strong>objektgesteuerte Beispiel</strong>.</p>



<p><strong>Statt </strong>wie oben <strong>mit </strong>einer <strong>Zähler</strong>-Variable zu arbeiten, <strong>verwendet </strong>man <strong>hierbei </strong>die tatsächlichen <strong>Objekte </strong>an sich <strong>als Iterationsmöglichkeit</strong>.</p>



<p>Eine <strong>einfache Erklärung </strong>könnte z. B. die gute alte <strong>Chipstüte </strong>bieten, klingt zwar komisch, ist aber so!</p>



<figure class="wp-block-image size-full"><a href="https://robbelroot.de/wp-content/uploads/2021/09/chips.jpg"><img loading="lazy" decoding="async" width="640" height="415" src="https://robbelroot.de/wp-content/uploads/2021/09/chips.jpg" alt="Eine leckere Schale mit Chips aus der Tüte – VBA For Schleife" class="wp-image-5970" title="Eine leckere Schale mit Chips aus der Tüte – VBA For Schleife"/></a><figcaption>Eine leckere Schale mit Chips aus der Tüte – VBA For Schleife</figcaption></figure>



<p>Ich glaube jeder stand schon mal, bzw. steht immer wieder vor dem &#8222;Problem&#8220; <strong>nicht aufhören </strong>zu <strong>können</strong>.</p>



<p><strong>Statt nach </strong>einer kleinen <strong>Portion </strong>bereits <strong>aufzuhören </strong>– was vermutlich auch dem ein oder anderen Fettpölsterchen gut täte – wird <strong>immer weiter </strong>gefuttert.</p>



<p>So könnte man auch bei einer &#8222;<strong>objektgesteuerten</strong>&#8220; For Schleife verfahren, <strong>wörtlich gesprochen </strong>wie folgt:</p>



<ul class="wp-block-list"><li>&#8222;<strong>Für</strong>&#8220; <strong>jeden </strong>einzelnen <strong>Chip</strong></li><li><strong>Nehme </strong>den Chip <strong>in </strong>die <strong>Hand</strong></li><li><strong>Führe </strong>den Chip <strong>in </strong>den <strong>Mund </strong>(öffnen und schließen lasse ich jetzt mal weg..)<br><br>..Du <strong>merkst </strong>vermutlich <strong>worauf </strong>das hier <strong>hinausläuft</strong>.</li></ul>



<p>Der <strong>letztendlich </strong>für das Dein Verständnis <strong>relevante Part </strong>ist hier das &#8222;Für jeden einzelnen Chip..&#8220;.</p>



<h3 class="wp-block-heading" id="alle-chips-in-der-tute-essen-yummy">Alle Chips in der Tüte essen – yummy</h3>



<p>Siehe Dir <strong>folgendes Beispiel </strong>einer VBA Schleife an, um zu verstehen wie ich <strong>obigen Pseudocode </strong>meine.</p>



<p><strong>Beachte </strong>jedoch, dass ich hier die <strong>Deklarationen</strong>, bzw. <strong>Initialisierungen </strong>der Variablen erstmal <strong>weglasse</strong>..</p>



<p>Die &#8222;chips&#8220;-<strong>Auflistung kann </strong>z. B. <strong>auch durch </strong>den Aufruf, also als Rückgabewert einer <strong>Funktion zustande kommen</strong>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For Each chip In chips
    Person.Essen(chip)
Next</pre>



<h3 class="wp-block-heading" id="alle-strings-eines-arrays-durchlaufen">Alle Strings eines Arrays durchlaufen</h3>



<p>Ich denke, es ist <strong>noch einfacher</strong>, oder eher näher am Code, <strong>wenn </strong>Du das <strong>folgende Beispiel </strong>siehst:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">' deklariere ein neues Array der Größe 3
Dim namen(0 To 2) As String

' befülle das Array mit Namen
namen(0) = "Robert"
namen(1) = "John"
namen(2) = "Debbie"

For Each name In namen
    ' mach irgendwas mit dem Namen
    ' in der Variable "name"
Next</pre>



<p><strong>Natürlich </strong>funktioniert diese Vorgehensweise <strong>auch </strong>mit <strong>anderen </strong>primitiven <strong>Datentypen </strong>wie z. B. Integern, oder Dates.</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-for-schleife/">VBA For Schleife</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vba-for-schleife/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>VBA MsgBox</title>
		<link>https://robbelroot.de/blog/vba-msgbox/</link>
					<comments>https://robbelroot.de/blog/vba-msgbox/#respond</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Mon, 19 Jul 2021 07:16:35 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications Problemlösungen]]></category>
		<category><![CDATA[anzeigen]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[confirm]]></category>
		<category><![CDATA[dialog]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[fenster]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[message]]></category>
		<category><![CDATA[msgbox]]></category>
		<category><![CDATA[nachricht]]></category>
		<category><![CDATA[popup]]></category>
		<category><![CDATA[popupfenster]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[window]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=4478</guid>

					<description><![CDATA[<p>VBA MsgBox Du hast vor eine VBA MsgBox in deiner &#8222;Excel VBA&#8222;-Anwendung anzuzeigen und möchtest deinem Nutzer darüber Informationen unterbreiten? Dann freut es mich Dir alles Notwendige über die MsgBox-Funktion der Visual Basic for Applications Programmiersprache näher zu bringen. Schaue doch später auch gerne mal bei meinen anderen Beiträgen vorbei: &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-msgbox/">VBA MsgBox</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-1024x536.png" alt="VBA MsgBox" class="wp-image-4481" title="VBA MsgBox" srcset="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>VBA MsgBox</figcaption></figure>






<h2 class="wp-block-heading">VBA MsgBox</h2>



<p>Du hast vor eine <strong>VBA MsgBox</strong> in deiner &#8222;<strong>Excel VBA</strong>&#8222;-Anwendung <strong>anzuzeigen</strong> und möchtest deinem <strong>Nutzer</strong> darüber <strong>Informationen unterbreiten</strong>?</p>



<p>Dann <strong>freut </strong>es <strong>mich </strong>Dir alles <strong>Notwendige </strong>über die <strong>MsgBox</strong>-Funktion der <strong>Visual Basic for Applications</strong> <strong>Programmiersprache </strong>näher zu bringen.</p>



<p>Schaue doch <strong>später </strong>auch <strong>gerne </strong>mal bei meinen <strong>anderen Beiträgen </strong>vorbei: <strong><a href="/blog/vba-range" target="_blank" rel="noreferrer noopener">VBA Range</a></strong>, <strong><a href="/blog/vba-instr" target="_blank" rel="noreferrer noopener">InStr</a></strong>, <strong><a href="/blog/excel-vb-array" target="_blank" rel="noreferrer noopener">Array</a></strong>.</p>



<h2 class="wp-block-heading">Hintergrund-Story – VBA MsgBox</h2>



<p>Egal ob <strong>Dialogbox</strong>, <strong>Dialog</strong>, <strong>Dialogfenster</strong>, oder <strong>Dialogfeld</strong>, für gewöhnlich sind das alles Synonyme für ein und das Selbe.</p>



<p>Alle das <strong>Selbe meinend</strong>, bieten <strong>Messageboxen </strong>– Nachrichtendialoge – die <strong>Möglichkeit</strong>, Nutzern Informationen <strong>kontextuell </strong>aufbereitet <strong>darzustellen</strong>.</p>



<p><strong>Neben</strong> der dadurch <strong>abgebildeten Informationen</strong>, ermöglicht es ein solcher Dialog <strong>gängigerweise </strong>eine Art <strong>Antwort</strong> <strong>durch </strong>den <strong>Nutzer </strong>an <strong>die Software</strong>.</p>



<h2 class="wp-block-heading">Design &amp; funktionale Möglichkeiten</h2>



<p><strong>Viele Wege </strong>führen nach Rom, ein <strong>Spruch, </strong>den fast jeder kennt, <strong>allerdings </strong>ist auch besonders in der <strong>Softwareentwicklung</strong> Wahrheit dahinter.</p>



<p>Vom <strong>allgemeinen</strong> &#8222;OK&#8220;-<strong>Dialog</strong>, bis <strong>komplexen</strong> <strong>Eingabemöglichkeiten</strong> in Form von diversen Inputs <strong>und</strong> Buttons.</p>



<p><strong>Neben</strong> dem Fokus in diesem Beitrag auf die <strong>einfache MsgBox</strong>, kann sich auch wie so oft ein <strong>Blick </strong>nach <strong>links </strong>und <strong>rechts </strong>rentieren.</p>



<h2 class="wp-block-heading">Sperren, oder nicht sperren?</h2>



<p>Größtenteils <strong>sperren </strong>Dialoge den <strong>die übrige Anwendung</strong>, um <strong>die Aufmerksamkeit des Nutzers</strong> bei sich zu halten, man betitelt diese Dialog auch <strong>als modale Dialoge</strong>.</p>



<p>Es gibt jedoch <strong>vermutlich auch Aufgabengebiete</strong>, in denen es <strong>durchaus sinn </strong>macht, so genannte <strong>non-modale Dialoge</strong> zu verwenden, Welche die <strong>Anwendung nicht sperren</strong>.</p>



<p>Eine <strong>gängige</strong> Anwendungsmöglichkeit eine <strong>nicht-modalen Dialogs </strong>wäre eventuell die Eingabe eines <strong>Termins</strong>.</p>



<h2 class="wp-block-heading">Designer &amp; Tools</h2>



<p><strong>Durch </strong>das <strong>Folgen </strong>der Designer-Tools <strong>bestimmter Standards</strong>, sollen sich Nutzer möglichst <strong>schnell </strong>und <strong>intuitiv </strong>in den Oberflächen <strong>zurechtfinden</strong>.</p>



<p>Meistens befinden sich in der <strong>Mitte </strong>der Dialoge die <strong>Eingabefelder</strong>, Welche <strong>durch </strong>passende <strong>Beschriftungen gekennzeichnet </strong>sind.</p>



<p>Die Eingabefelder werden <strong>gängigerweise durch Designer</strong>-Toolkits <strong>zusammengestellt</strong> und optimal <strong>angeordnet</strong>.</p>



<p>Am unteren Ende des Dialogs befinden sich die <strong>primären Handlungen</strong>, darunter meist das <strong>Bestätigen</strong>, <strong>oder </strong>das <strong>Abbrechen </strong>des <strong>Dialoges</strong>. </p>



<h2 class="wp-block-heading">Gängige Dialogfenster</h2>



<p><strong>Als </strong>Anwender<strong> kennt </strong>man <strong>meist</strong> schon <strong>viele Dialogfenster</strong>, <strong>hier </strong>siehst Du ein paar <strong>Beispiele</strong>:</p>



<ul class="wp-block-list"><li><strong>Informationsdialoge</strong> – Stellen <strong>Nachrichten</strong> und <strong>Knöpfe</strong> für die mögliche Antwort ans Programm dar. </li><li><strong>Eingabedialoge</strong> – <strong>Einfache Text</strong>-erfassende <strong>Dialogfenster</strong>.</li><li><strong>Datums-Dialoge</strong> – Fenster zur <strong>Auswahl</strong> eines Datums, oder auch kompletten <strong>Zeiträumen</strong>.</li><li><strong>Dateidialoge </strong>– Bieten die Option der <strong>Auswahl </strong>von <strong>Dateien</strong>, oder auch <strong>Verzeichnissen</strong>.</li><li><strong>Farbdialoge</strong> –<strong> Geben </strong>die <strong>Option </strong>zur <strong>Eingabe</strong> ein oder mehrerer <strong>Farben</strong>.</li></ul>



<h2 class="wp-block-heading">Code – VBA MsgBox</h2>



<p><strong>Schauen</strong> wir uns nun einmal <strong>konkrete Beispiele</strong> an:</p>



<h3 class="wp-block-heading">Die Schreibweise alias Grammatik</h3>



<p>Die <strong>übliche Schreibweise</strong> sieht <strong>wie hier drunter</strong> aus:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">MsgBox &lt;InhaltDesDialoges>, &lt;KnöpfeUndIcons>, &lt;TitelDesDialoges></pre>



<h3 class="wp-block-heading">Schnelles, easy Beispiel</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">MsgBox "Die Nachricht des Dialoges", VBOKOnly, "Der Titel des Dialoges"</pre>



<p>Dieses einfache <strong>Beispiel sieht </strong>als ausgeführtes Skript <strong>wie sofort folgend aus</strong> (Text geändert).</p>



<p>Du <strong>bekommst</strong> ein <strong>Dialogfenster mit </strong>dem gewählten <strong>Titel</strong>, dem angegebenen <strong>Inhalt und </strong>dem &#8222;<strong>OK&#8220;-Button</strong> dargestellt.</p>



<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-Nachricht-Beispiel.png"><img loading="lazy" decoding="async" width="185" height="138" src="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-Nachricht-Beispiel.png" alt="VBA MsgBox Nachricht Beispiel" class="wp-image-4507" title="VBA MsgBox Nachricht Beispiel"/></a><figcaption>VBA MsgBox Nachricht Beispiel</figcaption></figure>



<h3 class="wp-block-heading">Die Schnell-Form</h3>



<p>Die <strong>Schnell-Form mit </strong>Auslassen der optionalen <strong>Parameter </strong>wie z. B. die &#8222;Knöpfe&#8220; und den &#8222;Titel&#8220;, <strong>sieht </strong>das Beispiel <strong>wie hier aus</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">MsgBox "VBA MsgBox Nachricht hier :)"</pre>



<h3 class="wp-block-heading">Kombination der Konstanten</h3>



<p>Hier nutzen wir nun einmal den &#8222;<strong>OR-Operator</strong>&#8222;, um die beiden <strong>Konstanten</strong> &#8222;vbYesNo&#8220; &amp; &#8222;vbQuestion&#8220; zu <strong>verknüpfen</strong>.</p>



<p>Somit können <strong>mehrere Informationen </strong>auf einmal <strong>übergeben </strong>und der Dialog <strong>besser gestaltet</strong> werden.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">MsgBox "Der Inhalt der Nachrichtenbox", vbYesNo OR vbQuestion, "Dialogtitel"</pre>



<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-Nachricht-Beispiel-2.png"><img loading="lazy" decoding="async" width="254" height="156" src="https://robbelroot.de/wp-content/uploads/2021/07/VBA-MsgBox-Nachricht-Beispiel-2.png" alt="VBA MsgBox Beispiel mit Icon und zwei Buttons" class="wp-image-4513" title="VBA MsgBox Beispiel mit Icon und zwei Buttons"/></a><figcaption>VBA MsgBox Beispiel mit Icon und zwei Buttons</figcaption></figure>



<h3 class="wp-block-heading">Die Antwort verarbeiten</h3>



<p>Damit Du die <strong>erhaltene </strong>&#8222;<strong>Antwort</strong>&#8220; des Dialoges <strong>verarbeiten </strong>kannst, kannst Du <strong>wie folgt </strong>vorgehen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim x
x = MsgBox ("Der Inhalt der Nachrichtenbox", vbYesNo OR vbQuestion, "Dialogtitel")
If x = vbYes Then MsgBox "Der JA-Knopf wurde geklickt!"</pre>



<p>In meiner kleinen <strong>Tabelle </strong>findest Du passende <strong>Button</strong>&#8211;<strong>Konstanten </strong>der <strong>VBA</strong> <strong>MsgBox</strong>.</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Konstante</strong></td><td><strong>Wert</strong></td><td><strong>Beschreibung</strong></td></tr><tr><td>vbOKOnly</td><td>0</td><td>&#8222;OK&#8220; wird dargestellt</td></tr><tr><td>vbOKCancel</td><td>1</td><td>&#8222;OK&#8220; und &#8222;Abbrechen&#8220; werden dargestellt</td></tr><tr><td>vbAbortRetryIgnore</td><td>2</td><td>&#8222;Abbrechen&#8220;, &#8222;Wiederholen&#8220; und &#8222;Ignorieren&#8220; werden dargestellt</td></tr><tr><td>vbYesNoCancel</td><td>3</td><td>&#8222;Ja&#8220;, &#8222;Nein&#8220; und &#8222;Abbrechen&#8220; werden dargestellt</td></tr><tr><td>vbYesNo</td><td>4</td><td>&#8222;Ja&#8220; und &#8222;Nein&#8220; werden dargestellt</td></tr><tr><td>vbRetryCancel</td><td>5</td><td>&#8222;Wiederholen&#8220; und &#8222;Abbrechen&#8220; werden dargestellt</td></tr><tr><td>vbCritical</td><td>16</td><td>Das typische &#8222;X&#8220; mit dem Windows Error-Sound werden dargestellt</td></tr><tr><td>vbQuestion</td><td>32</td><td>Die gängige Windows-Sprechblase und dem nachfragenden Windows-Sound werden dargestellt</td></tr><tr><td>vbExclamation</td><td>48</td><td>Ein gelbes Warndreieck und der Windows-Sound &#8222;Warnung&#8220; wird dargestellt</td></tr><tr><td>vbInformation</td><td>64</td><td>Eine Sprechblase mit Ausrufezeichen wird dargestellt und der Benachrichtigungs-Sound abgespielt</td></tr><tr><td>vbDefaultButton1</td><td>0</td><td>Selektiert den ersten Knopf ist bei Darstellung</td></tr><tr><td>vbDefaultButton2</td><td>256</td><td>Selektiert den zweiten Knopf ist bei Anzeige</td></tr><tr><td>vbDefaultButton3</td><td>512</td><td>Selektiert den dritten Button Darstellung bei Anzeige</td></tr><tr><td>vbDefaultButton4</td><td>768</td><td>Wählt den vierten Knopf bei Anzeige automatisch aus</td></tr><tr><td>vbApplicationModal</td><td>0</td><td>Eine Möglichkeit um das Dialogfenster als &#8222;modal&#8220; zu konfigurieren</td></tr><tr><td>vbSystemModal</td><td>4096</td><td>Stoppt weitere Prozesse bis das Fenster beantwortet wurde</td></tr><tr><td>vbMsgBoxHelpButton</td><td>16384</td><td>Fügt einen Hilfs-Button zur Box hinzu</td></tr><tr><td>VbMsgBoxSetForeground</td><td>65536</td><td>Lässt das Dialogfeld in den Vordergrund rücken</td></tr><tr><td>vbMsgBoxRight</td><td>524288</td><td>Der Text wird rechtsbündig dargestellt</td></tr><tr><td>vbMsgBoxRtlReading</td><td>1048576</td><td>Lässt den Text von rechts nach links dargestellt werden</td></tr></tbody></table><figcaption>VBA MsgBox Button-Konstanten</figcaption></figure>



<h3 class="wp-block-heading">Rückgabewerte der VBA MsgBox</h3>



<p>Hier siehst Du eine <strong>Tabelle</strong>, <strong>Die</strong> die einzelnen <strong>Rückgabewerte </strong>der MsgBox <strong>zeigt</strong>.</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Konstante</strong></td><td><strong>Wert</strong></td><td><strong>Button</strong></td></tr><tr><td>vbOK</td><td>1</td><td>OK</td></tr><tr><td>vbCancel</td><td>2</td><td>Abbrechen</td></tr><tr><td>vbAbort</td><td>3</td><td>Abbrechen</td></tr><tr><td>vbRetry</td><td>4</td><td>Wiederholen</td></tr><tr><td>vbIgnore</td><td>5</td><td>Ignorieren</td></tr><tr><td>vbYes</td><td>6</td><td>Ja</td></tr><tr><td>vbNo</td><td>7</td><td>Nein</td></tr></tbody></table><figcaption>Übersicht VBA MsgBox-Konstanten</figcaption></figure>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-msgbox/">VBA MsgBox</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vba-msgbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VBA Range</title>
		<link>https://robbelroot.de/blog/vba-range/</link>
					<comments>https://robbelroot.de/blog/vba-range/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Sun, 18 Jul 2021 18:34:35 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications Problemlösungen]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[bereich]]></category>
		<category><![CDATA[calculation]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[excel vba]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[kalkulieren]]></category>
		<category><![CDATA[range]]></category>
		<category><![CDATA[reichweite]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[tabellen]]></category>
		<category><![CDATA[tables]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[zeile]]></category>
		<category><![CDATA[zelle]]></category>
		<category><![CDATA[zellen]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=4449</guid>

					<description><![CDATA[<p>VBA Range Du möchtest mit der VBA Range und somit mit einen ganzen Bereich in Excel arbeiten? Lerne in diesem Beitrag, wie Du mit der VBA Range Funktion ganze Bereiche erfassen und verarbeiten kannst. Vielleicht interessieren Dich zu einem anderen Zeitpunkt noch folgende Beiträge: VBA InStr, Array, Array Length. Was &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-range/">VBA Range</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-1024x536.png" alt="VBA Range" class="wp-image-4451" title="VBA Range" srcset="https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>VBA Range</figcaption></figure>






<h2 class="wp-block-heading">VBA Range</h2>



<p>Du <strong>möchtest </strong>mit der <strong>VBA Range</strong> und <strong>somit </strong>mit einen ganzen Bereich in <strong>Excel </strong>arbeiten?</p>



<p><strong>Lerne </strong>in diesem Beitrag, <strong>wie </strong>Du mit der <strong>VBA Range Funktion</strong> ganze <strong>Bereiche erfassen </strong>und <strong>verarbeiten </strong>kannst.</p>



<p><strong>Vielleicht interessieren </strong>Dich zu einem <strong>anderen Zeitpunkt </strong>noch <strong>folgende Beiträge</strong>: <strong><a href="/blog/vba-instr" target="_blank" rel="noreferrer noopener">VBA InStr</a></strong>, <strong><a href="/blog/excel-vb-array" target="_blank" rel="noreferrer noopener">Array</a></strong>, <strong><a href="/blog/array-length-vb" target="_blank" rel="noreferrer noopener">Array Length</a></strong>.</p>



<h2 class="wp-block-heading">Was ist eine VBA Range</h2>



<p>Eine <strong>Range </strong>in <strong>VBA</strong>, bzw. in <strong><a href="https://www.microsoft.com/de-de/microsoft-365/excel" target="_blank" rel="noreferrer noopener">Microsoft Excel</a></strong>, ist – übersetzt gesehen – eine <strong>Reichweite </strong>von mehreren <strong>Zellen </strong>einer <strong>Tabelle</strong>.</p>



<p><strong>Wie Du </strong>Dir sicher <strong>vorstellen </strong>kannst, können wir so <strong>diverse Zeilen </strong>und <strong>Spalten </strong>abbilden und letztendlich durchlaufen.</p>



<p><strong>Damit </strong>können wir unter anderem <strong>Summierungen</strong>, oder andere <strong>eigene Arbeitsschritte </strong>anwenden.</p>



<h2 class="wp-block-heading">Die Qual der Wahl</h2>



<p>Naja ganz so schlimm ist es nicht &#x1f602;, jedoch gibt es <strong>2 tolle Auswahlmöglichkeiten </strong>für die <strong>Ranges</strong>.</p>



<p>Die <strong>erste Möglichkeit </strong>auf die <strong>VBA Ranges</strong> zuzugreifen ist es, den <strong>User </strong>ganz <strong>einfach </strong>wie bekannt seine <strong>eigene Auswahl treffen </strong>zu <strong>lassen </strong>und dann im Code <strong>auf </strong>die <strong>Auswahl zuzugreifen</strong>.</p>



<p>Bei der <strong>zweiten Möglichkeit </strong>handelt es sich mehr oder weniger um eine <strong>manuelle</strong> Methode, wo wir – wie <strong>aus Excel bekannt </strong>– die <strong>Ranges mit </strong>ich nenne es mal &#8222;<strong>Selektoren</strong>&#8220; <strong>bestimmen</strong>.</p>



<h2 class="wp-block-heading">Manuelle Auswahl des Nutzers – VBA Range</h2>



<p><strong>Stell </strong>Dir <strong>vor</strong>, der <strong>Nutzer </strong>deiner Anwendung <strong>markiert </strong>die <strong>Zellen </strong>z. B. wie folgt:</p>



<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-Excel-Beispiel-Auswahl.png"><img loading="lazy" decoding="async" width="553" height="138" src="https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-Excel-Beispiel-Auswahl.png" alt="VBA Range Excel Beispiel Auswahl" class="wp-image-4464" title="VBA Range Excel Beispiel Auswahl" srcset="https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-Excel-Beispiel-Auswahl.png 553w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-Excel-Beispiel-Auswahl-300x75.png 300w, https://robbelroot.de/wp-content/uploads/2021/07/VBA-Range-Excel-Beispiel-Auswahl-332x83.png 332w" sizes="auto, (max-width: 553px) 100vw, 553px" /></a><figcaption>VBA Range Excel Beispiel Auswahl</figcaption></figure>



<p><strong>Er hat </strong>also praktisch die &#8222;Koordinaten&#8220; <strong>A1, A2 und A3</strong> in dieser <strong>Tabelle</strong>, bzw. diesem Tabellenblatt <strong>markiert</strong>.</p>



<p><strong>Anders formuliert</strong>, <strong>könnte </strong>man diese &#8222;Range&#8220; auch in &#8222;<strong>Excel-Sprache</strong>&#8220; ausdrücken, <strong>was </strong>dann <strong>als </strong>&#8222;A1:A3&#8220; <strong>bezeichnet </strong>werden würde.</p>



<p>Diese <strong>Range können </strong>wir im Grunde <strong>genauso in </strong>unserem <strong>VBA </strong>Skript <strong>verwenden</strong>, <strong>um </strong>die z. B. die Daten aus den respektiven <strong>Zellen </strong>abzurufen.</p>



<h2 class="wp-block-heading">Auswahl via Code – VBA Range</h2>



<p>Doch <strong>bevor </strong>wir <strong>mit </strong>dem <strong>tatsächlichen Abrufen </strong>von Werten, bzw. <strong>Iterieren </strong>von <strong>Zellen beginnen</strong>, <strong>werfen </strong>wir nochmal einen <strong>Blick auf </strong>die Auswahl der <strong>Range </strong>via Code.</p>



<p>Wie <strong>oben </strong>schon <strong>angesprochen </strong>verwenden wir dafür einen <strong>Ausdruck</strong>, Welchen ich als <strong>Selektor </strong>bezeichne und <strong>übergeben </strong>Diesen der <strong>Range-Funktion </strong>aus Excel.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim area
area = Range("A1:A3")</pre>



<p>Im <strong>Code deklarieren </strong>wir dazu erstmal eine <strong>Variable </strong>namens &#8222;area&#8220; <strong>und weisen </strong>Ihr anschließend den <strong>Rückgabewert der Range</strong>&#8211;<strong>Funktion </strong>zu.</p>



<p><strong>Danach </strong>haben wir endlich die <strong>Möglichkeit</strong>, die einzelnen Zellen, <strong>Welche </strong>hier durch die <strong>Range widergespiegelt </strong>werden zu <strong>durchlaufen</strong>.</p>



<h2 class="wp-block-heading">Zellen der Range durchlaufen</h2>



<p>Um durch die <strong>einzelnen Zellen </strong>der Range zu iterieren <strong>nutzen </strong>wir im folgenden Beispiel die &#8222;<strong>For Each</strong>&#8222;-<strong>Schleife</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For Each cell in area
    ' do something
Next</pre>



<p><strong>Nun </strong>können wir <strong>innerhalb </strong>der einzelnen Schleifen-<strong>Durchläufe </strong>auf die jeweilige Zelle zugreifen.</p>



<p>Wir haben dadurch die <strong>Möglichkeit </strong>einerseits die <strong>hinter </strong>den <strong>Zellen </strong>steckenden <strong>Werte abgreifen </strong>und setzen, sowie die <strong>Formeln </strong>der Zellen <strong>verändern</strong>.</p>



<h2 class="wp-block-heading">Werte der Zellen abrufen und verändern</h2>



<p><strong>Hier </strong>zeige ich Dir, wie Du einzelne <strong>Werte aus </strong>den <strong>Zellen abrufen und setzen </strong>kannst:</p>



<h3 class="wp-block-heading">Werte abrufen</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For Each cell in area
    Dim value = cell.Value
    ' so something with the value
Next</pre>



<h3 class="wp-block-heading">Werte setzen</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For Each cell in area
    cell.Value = "The new Value!"
Next</pre>



<h2 class="wp-block-heading">Mit Formeln arbeiten</h2>



<p>Im <strong>nächsten Abschnitt </strong>kümmern wir uns um das <strong>Setzen und Abrufen </strong>der Formeln.</p>



<h3 class="wp-block-heading">Formel setzen</h3>



<p>Wir haben die <strong>Möglichkeit </strong>die <strong>Formeln </strong>einer <strong>Range </strong>direkt zu setzen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Range("A1:A3").Formula = "=Rand()"</pre>



<p>Oder <strong>wie </strong>im obigen Beispiel <strong>mit </strong>Hilfe einer <strong>Schleife</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For Each cell in area
    cell.Formula = "=Rand()"
Next</pre>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-range/">VBA Range</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vba-range/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>VBA InStr</title>
		<link>https://robbelroot.de/blog/vba-instr/</link>
					<comments>https://robbelroot.de/blog/vba-instr/#comments</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Sat, 17 Jul 2021 10:27:27 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications Problemlösungen]]></category>
		<category><![CDATA[365]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[calculation]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[excel vba]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[ms]]></category>
		<category><![CDATA[msft]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[tabellen]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[visual basic for applications]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=4431</guid>

					<description><![CDATA[<p>VBA InStr Du möchtest die VBA InStr Funktion lernen und anwenden können und damit überprüfen, ob ein String innerhalb eines Anderen ist? Dann freut es mich, Dir in diesem Beitrag die passende InStr-Funktion vorzustellen! Eventuell hast Du zu einem späteren Zeitpunkt auch Interesse an einem der folgenden Beiträge: Excel VBA &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-instr/">VBA InStr</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr-1024x536.png" alt="VBA InStr" class="wp-image-4156" title="VBA InStr" srcset="https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/07/VBScript-InStr.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>VBA InStr</figcaption></figure>






<h2 class="wp-block-heading">VBA InStr</h2>



<p>Du <strong>möchtest </strong>die <strong>VBA InStr</strong> <strong>Funktion lernen </strong>und <strong>anwenden </strong>können und damit <strong>überprüfen</strong>, <strong>ob </strong>ein <strong>String innerhalb </strong>eines <strong>Anderen </strong>ist?</p>



<p>Dann <strong>freut</strong> es <strong>mich,</strong> Dir in diesem Beitrag die passende <strong>InStr-Funktion</strong> <strong>vorzustellen</strong>!</p>



<p><strong>Eventuell</strong> hast Du zu einem späteren Zeitpunkt auch <strong>Interesse an </strong>einem der folgenden <strong>Beiträge</strong>: <strong><a href="/blog/excel-vb-array" target="_blank" rel="noreferrer noopener">Excel VBA Array</a></strong>, <strong><a href="/blog/vba-instr" target="_blank" rel="noreferrer noopener">InStr</a></strong>, <strong><a href="/blog/vba-range" target="_blank" rel="noreferrer noopener">Excel Range</a></strong>.</p>



<h2 class="wp-block-heading">Tabellen-Arbeit – VBA InStr</h2>



<p>Du bist in <strong>Excel VBA</strong> (Visual Basic for Applications) unterwegs und musst in einer <strong>Tabelle </strong>gewisse <strong>Prüfungen durchführen</strong>.</p>



<p>Durch <strong>einzelne Zellen navigierst </strong>Du, nimmst deren <strong>Wert </strong>entgegen und Du müsstest nun <strong>prüfen</strong>, <strong>ob </strong>sich <strong>dort </strong>ein gewisser <strong>Wert im String </strong>befindet?</p>



<p><strong>Je nach </strong>deinem <strong>Ziel </strong>ist es <strong>mehr oder weniger </strong>von <strong>Wichtigkeit</strong>, an <strong>welcher </strong>genauen <strong>Position </strong>sich der <strong>String innerhalb </strong>des anderen <strong>Strings </strong>befindet.</p>



<p><strong>Da </strong>wir <strong>in</strong> <strong>VBA </strong>die aus dem <strong>.NET</strong> bekannte <a style="font-weight: bold;" href="https://docs.microsoft.com/de-de/dotnet/api/system.string.contains?view=net-5.0" target="_blank" rel="noreferrer noopener">Contains-Funktion</a>, leider <strong>nicht verfügbar </strong>ist, müssen wir uns <strong>anders helfen</strong>.</p>



<p><strong>Keine Panik,</strong> <strong>auch </strong>in <strong>VBA </strong>können wir uns wie fast immer mit gängigen Funktionen <strong>helfen</strong>, <strong>jedenfalls </strong>insofern Sie uns <strong>bekannt sind</strong>.</p>



<h2 class="wp-block-heading">Strings durchforsten</h2>



<p>Eine <strong>in VBA befindliche Funktion</strong>, Welche wir für unsere <strong>genannten Ziele </strong>verwenden können, ist die <strong>InStr-Funktion</strong>.</p>



<p>Die <strong>Funktion durchforstet </strong>die <strong>überlieferte Zeichenfolge </strong>und <strong>schaut</strong>, an <strong>Welcher Position </strong>Sie die <strong>Ziel</strong>&#8211;<strong>Zeichenfolge </strong>finden kann.</p>



<p><strong>Falls </strong>Sie die <strong>Zeichenfolge </strong>des Begehrens <strong>nicht finden </strong>kann, gibt Diese als <strong>Rückgabewert </strong>eine <strong>Zahl 0</strong> zurück.</p>



<p>Für den <strong>Vergleich selbst</strong>, haben wir die <strong>Option</strong>, den <strong>Vergleichs</strong>&#8211;<strong>Modus </strong>angeben zu können, wo wir <strong>letztendlich </strong>aus <strong>4 Werten</strong> auswählen können.</p>



<h2 class="wp-block-heading">Die VBA InStr Funktionalität</h2>



<p><strong>Bevor </strong>wir <strong>tiefer ins Geschehen </strong>huschen, <strong>schauen </strong>wir uns wie fast immer vorher einmal die <strong>Aufrufmöglichkeiten </strong>der Funktion <strong>an</strong>.</p>



<h3 class="wp-block-heading">Parameterliste</h3>



<h4 class="wp-block-heading">[Optional] start [Integer]</h4>



<p>Der start-Parameter spezifiziert die <strong>Position</strong>, ab der die Suche <strong>gestartet </strong>wird.</p>



<p>Da der <strong>Parameter </strong>als <strong>optional </strong>gekennzeichnet ist, wird bei <strong>Nicht-Angabe</strong> die <strong>Suche </strong>automatisch <strong>ab Anfang</strong> gestartet.</p>



<h4 class="wp-block-heading">string1 [String]</h4>



<p>Dieser String, ist <strong>sozusagen </strong>das <strong>Subjekt</strong>, also das &#8222;Ding&#8220;, <strong>worin gesucht </strong>wird.</p>



<h4 class="wp-block-heading">string2 [String]</h4>



<p><strong>Hierbei </strong>handelt es sich sozusagen um die <strong>Nadel</strong>, die <strong>im Heuhaufen </strong>– oder Subjekt – <strong>gesucht werden </strong>soll.</p>



<h4 class="wp-block-heading">[Optional] compare [Integer]</h4>



<p>Mit diesem Parameter haben wir die <strong>Möglichkeit </strong>1 der folgenden <strong>Vergleichs-Methoden</strong> zu <strong>konfigurieren</strong>:</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th class="has-text-align-left" data-align="left"><strong>Name</strong></th><th class="has-text-align-left" data-align="left"><strong>Wert</strong></th><th class="has-text-align-left" data-align="left"><strong>Beschreibung</strong></th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left"><strong>vbUseCompareOption</strong></td><td class="has-text-align-left" data-align="left">-1</td><td class="has-text-align-left" data-align="left">Der Vergleich wird mit der Option Compare-Anweisung ausgeführt.</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>vbBinaryCompare</strong></td><td class="has-text-align-left" data-align="left">0</td><td class="has-text-align-left" data-align="left">Wendet den binären Vergleich an</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>vbTextCompare</strong></td><td class="has-text-align-left" data-align="left">1</td><td class="has-text-align-left" data-align="left">Der Textvergleich wird verwendet</td></tr><tr><td class="has-text-align-left" data-align="left"><strong>vbDatabaseCompare</strong></td><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left">Nutzt den Microsoft Access Datenbankvergleich</td></tr></tbody></table><figcaption>VBA InStr Compare Optionen</figcaption></figure>



<p><strong>Wenn </strong>man diesen <strong>Parameter überspringt</strong>, wird die <strong>binäre Vergleichs</strong>-Methode verwendet.</p>



<p>Ich denke die für uns relevanten <strong>Vergleichs-Arten sind</strong>: <strong>vbBinaryCompare</strong> &amp; <strong><strong>vbTextCompare</strong></strong>.</p>



<p>Der <strong>binäre Vergleich</strong>, also die <strong>vbBinaryCompare</strong> Option gibt an, dass die <strong>Zeichen exakt übereinstimmen</strong> müssen.</p>



<p>Die Option <strong>vbTextCompare</strong> hingegen nutzt den <strong>textbasierten Vergleich</strong>, dabei spielen <strong>Groß</strong>&#8211; und <strong>Kleinschreibung keine Rolle</strong>.</p>



<h2 class="wp-block-heading">Code – VBA InStr</h2>



<p>In <strong>diesem Abschnitt </strong>schauen wir uns <strong>Beispiele </strong>an:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim text
text = "Excel is a great tool!"
Dim needle
needle = "great"
Dim result
result = InStr(1, text, needle)
MsgBox(result)</pre>



<p><strong>Zuerst deklarieren </strong>wir eine Variable &#8222;<strong>text</strong>&#8220; und <strong>weisen </strong>ihr danach den Wert &#8222;<strong>Excel is a great tool</strong>!&#8220; <strong>zu</strong>, dies bildet unseren <strong>zu durchsuchenden Text</strong>.</p>



<p>Danach <strong>kommt ein weiterer String</strong> namens &#8222;<strong>needle</strong>&#8220; hinzu, Welche im wahrsten Sinne des Wortes unsere <strong>Nadel im Heuhaufen</strong> darstellt.</p>



<p>Danach <strong>speichern </strong>wir das <strong>Ergebnis </strong>unserer Suche in der &#8222;result&#8220;-Variable <strong>zwischen und geben </strong>Dieses <strong>aus</strong>!</p>



<p><strong>Wenn Du </strong>das Beispiel <strong>ausführst</strong>, <strong>bekommst </strong>Du den <strong>Wert </strong>&#8222;<strong>12</strong>&#8220; angezeigt, <strong>da </strong>sich unser <strong>gesuchtes Wort </strong>&#8222;great&#8220; <strong>an </strong>der <strong>12 Position</strong> im String befindet.</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/vba-instr/">VBA InStr</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/vba-instr/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Excel VB Array</title>
		<link>https://robbelroot.de/blog/excel-vb-array/</link>
					<comments>https://robbelroot.de/blog/excel-vb-array/#respond</comments>
		
		<dc:creator><![CDATA[Robert Skibbe]]></dc:creator>
		<pubDate>Sat, 17 Jul 2021 05:27:11 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Visual Basic for Applications lernen]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[arraylist]]></category>
		<category><![CDATA[datenfeld]]></category>
		<category><![CDATA[datenfelder]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[feld]]></category>
		<category><![CDATA[felder]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[kalkulation]]></category>
		<category><![CDATA[liste]]></category>
		<category><![CDATA[listen]]></category>
		<category><![CDATA[lotto]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[spiel]]></category>
		<category><![CDATA[super6]]></category>
		<category><![CDATA[tabelle]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[visual basic for applications]]></category>
		<guid isPermaLink="false">https://robbelroot.de/?p=4364</guid>

					<description><![CDATA[<p>Excel VB Array Du möchtest mit dem Excel VB Array arbeiten und lernen, bzw. verstehen wie das Array funktioniert? Dann lege jetzt in meinem heutigen Beitrag los und wende das Array anschließend erfolgreich in Excel VB an! Vielleicht hast Du auch noch an anderen Beiträgen Interesse: Email senden, Tastendruck simulieren, &#8230;</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-vb-array/">Excel VB Array</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array.png"><img loading="lazy" decoding="async" width="1024" height="536" src="https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array-1024x536.png" alt="Excel VB Array" class="wp-image-4371" title="Excel VB Array" srcset="https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array-1024x536.png 1024w, https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array-300x157.png 300w, https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array-768x402.png 768w, https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array-700x366.png 700w, https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array-332x174.png 332w, https://robbelroot.de/wp-content/uploads/2021/07/Excel-VB-Array.png 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>Excel VB Array</figcaption></figure>






<h2 class="wp-block-heading">Excel VB Array</h2>



<p>Du <strong>möchtest </strong>mit dem <strong>Excel VB Array</strong> arbeiten und lernen, bzw. <strong>verstehen wie </strong>das Array <strong>funktioniert</strong>?</p>



<p>Dann <strong>lege </strong>jetzt in meinem heutigen Beitrag <strong>los </strong>und <strong>wende </strong>das <strong>Array anschließend </strong>erfolgreich in Excel VB <strong>an</strong>!</p>



<p><strong>Vielleicht </strong>hast Du auch noch an <strong>anderen Beiträgen </strong>Interesse: <strong><a href="/blog/vbscript-email-senden" target="_blank" rel="noreferrer noopener">Email senden</a></strong>, <strong><a href="/blog/vbs-send-key" target="_blank" rel="noreferrer noopener">Tastendruck simulieren</a></strong>, <strong><a href="/blog/vbscript-select-case" target="_blank" rel="noreferrer noopener">Select Case</a></strong>.</p>



<h2 class="wp-block-heading">Dieser Weg.. zum Array</h2>



<p>Ein <strong>Array </strong>ist erstmals vielleicht <strong>nicht </strong>der <strong>vorherrschende Sinnesgedanke</strong>, <strong>wenn </strong>man tatsächlich das <strong>erste Mal </strong>auf Diese <strong>stolpert</strong>.</p>



<p>Ich <strong>denke</strong>, dass es <strong>einfach </strong>nur eine <strong>Weiterentwicklung </strong>aus Not heraus ist, <strong>weil </strong>man an die <strong>Grenzen </strong>der <strong>bisherigen Werkzeuge </strong>gestoßen ist.</p>



<p><strong>Sobald man versteht</strong>, dass <strong>Variablen </strong>nur <strong>einen Wert </strong>speichern können, wird man durch <strong>Suchen wie</strong>: &#8222;<strong>Mehrere Strings</strong> zwischenspeichern&#8220;, &#8222;<strong>Integer</strong> durchlaufen&#8220;, etc. irgendwann <strong>auf Arrays stoßen</strong>.</p>



<h2 class="wp-block-heading">Multiple Zahlenwerte speichern – Excel VB Array</h2>



<p><strong>Stellen wir </strong>uns an dieser Stelle mal eine gute alte <strong>Lottospiel </strong>Runde vor.</p>



<p>Ich <strong>empfinde </strong>es so für unser Beispiel <strong>wesentlich einfacher</strong>, <strong>da </strong>man sich so etwas <strong>Konkretes </strong>vorstellen <strong>und </strong>damit <strong>besser arbeiten </strong>kann.</p>



<p>Bei unserem kleinen <strong>Lotto-Versuch</strong> dachte ich an das <strong>einfache </strong>&#8222;<strong>Super 6</strong>&#8222;-<strong>Spiel</strong>, wo wir den Nutzer <strong>6 Zahlen zwischen 1 und 9</strong> aussuchen lassen.</p>



<h2 class="wp-block-heading">Karte ziehen</h2>



<p><strong>Bevor </strong>wir mit unserer <strong>kleinen Partie </strong>beginnen können, müssen wir <strong>überlegen</strong>, <strong>wie </strong>der Nutzer eine <strong>Zahl wählen </strong>kann <strong>und </strong>wie wir Diese dann <strong>in </strong>ein <strong>Array </strong>bekommen.</p>



<p><strong>Ich </strong>denke hier <strong>würde </strong>sich eine <strong>InputBox</strong> mit &#8222;Ja/Nein&#8220; durchaus <strong>anbieten</strong>, daher <strong>verwenden </strong>wir <strong>Diese</strong>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim number
number = InputBox("Enter your number please!")</pre>



<p>Da wir <strong>nun eine Zahl </strong>der 6 Zahlen für unser Lotto erhalten haben, wäre vermutlich der nächste Gedanke, <strong>wie </strong>man die Nummer nun <strong>in </strong>ein <strong>Array</strong> <strong>speichert</strong>.</p>



<h2 class="wp-block-heading">6 Zahlen, ein Array – Excel VB Array</h2>



<p>Im <strong>obigen, Beispiel </strong>konntest Du sehen, <strong>wie </strong>Du eine <strong>Zahl für </strong>unser <strong>Lottospiel</strong> in eine <strong>Variable</strong> legen kannst.</p>



<p>Eine <strong>Variable </strong>ist im <strong>ersten Sinne </strong>dazu da, <strong>einen Wert </strong>zu speichern, <strong>mehr </strong>kann Sie auch <strong>nicht </strong>aufnehmen.</p>



<p><strong>Auch wenn </strong>Dieser Wert z. B. <strong>ein Objekt</strong> einer eigenen <strong>Klasse</strong> ist passt in eine <strong>Variable nur Eines </strong>davon.</p>



<p>Oft hat man als Neuling ein <strong>Problem</strong>, wenn man das erste Mal statt eines Datenelements, <strong>Mehrere zwischenspeichern </strong>soll.</p>



<p><strong>Für gewöhnlich </strong>hat man am Anfang seine <strong>Probleme </strong>damit, <strong>mehrere Daten speichern </strong>zu müssen, oder zu wollen.</p>



<p>Nun ist der <strong>beste Zeitpunkt </strong>die <strong>Excel VB Arrays</strong> ins – im wahrsten Sinne des Wortes – Spiel kommen zu lassen.</p>



<h2 class="wp-block-heading">So nicht!</h2>



<p>Beim <strong>Arbeiten </strong>mit <strong>Quellcode </strong>und den dort <strong>auftretenden Problemen </strong>kommt man immer wieder zur Recherche nach diversen Themen.</p>



<p><strong>Aller Probleme </strong>nach gibt es auch sehr <strong>viele nicht </strong>so <strong>prickelnde Beispiele</strong>, ich denke das <strong>Folgende </strong>dürfte für unser Beispiel <strong>passen</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim number1 As Integer
Dim number2 As Integer
Dim number3 As Integer
Dim number4 As Integer
Dim number5 As Integer
Dim number6 As Integer</pre>



<p><strong>Sehr oft</strong> habe ich diese blöde Variante bei den verschiedensten &#8222;Programmierern&#8220; <strong>im Quellcode </strong>gefunden, natürlich speziell <strong>bei Grünschnäbeln #nooffense!</strong></p>



<p><strong>Auch wenn </strong>man diese <strong>Herangehensweise </strong>natürlich <strong>häufiger bei </strong>noch <strong>nicht </strong>so <strong>erfahrenen Entwicklern </strong>sieht, habe ich es <strong>auch </strong>schon <strong>bei Fortgeschrittenen </strong>gesehen.</p>



<p><strong>Dieser Stil</strong> wird häufig wegen der <strong>augenscheinlichen Einfachheit</strong>, statt passender <strong>Datentypen verwendet</strong>.</p>



<p>Ich denke das <strong>hauptsächliche Problem wird </strong>Dir <strong>bewusst</strong>, <strong>wenn </strong>ich Dich <strong>bitten </strong>würde, die <strong>Variablen </strong>zu <strong>durchlaufen</strong>, <strong>denn so </strong>ist das <strong>schwierig</strong>.</p>



<h2 class="wp-block-heading">Warum ein Etui statt eines Kartons? – Excel VB Array</h2>



<p><strong>Wieso</strong> sollte man eine <strong>Lottokugel </strong>in ein <strong>einzelnes Etui </strong>stecken, <strong>wenn alle Kugeln direkt in </strong>einem kleinen<strong> Karton </strong>gemeinsam untergebracht werden könnten?</p>



<p><strong>Der Karton</strong> dient hier als Analogie zum <strong>Excel VB Array</strong>, wo man eben <strong>mehrere Elemente</strong> hineinspeichern kann.</p>



<p>Als nächstes zeige ich, wie Du ein <strong>Array deklarieren, bzw. initialisieren</strong> und danach <strong>verwenden</strong> könntest.</p>



<h2 class="wp-block-heading">Zahlen in Array speichern – Excel VB Array</h2>



<p>Hier zeige ich Dir, wie das <strong>Array</strong> <strong>erstellst </strong>und danach mit den <strong>Lottozahlen bestücken </strong>kannst.</p>



<p><strong>Denke immer daran</strong>, <strong>dass </strong>die <strong>Arrays </strong>in der Programmierung generell <strong>bei 0</strong> zu zählen anfangen.</p>



<h3 class="wp-block-heading">Deklaration</h3>



<h4 class="wp-block-heading">Ohne Fassungsvermögen</h4>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim numbers()</pre>



<h4 class="wp-block-heading">Mit Fassungsvermögen</h4>



<p><strong>Hier </strong>ist ein Beispiel einer Deklaration <strong>mit festgelegtem Fassungsvermögen</strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim numbers(3)</pre>



<h3 class="wp-block-heading">Initialisierung</h3>



<p><strong>Neben </strong>den hier drüber gezeigten Deklarationen, kannst Du mit den folgenden Zeilen ein <strong>Array initialisieren</strong>, <strong>sprich </strong>direkt mit Werten <strong>bestücken</strong>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim numbers
numbers= Array(3, 7, 4)</pre>



<h3 class="wp-block-heading">Direkter Zugriff auf Elemente</h3>



<p>Hier <strong>greifen </strong>wir <strong>händisch</strong>, bzw. manuell <strong>auf </strong>das jeweilige <strong>Element </strong>zu, indem wir den <strong>Index direkt </strong>angeben:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim numbers(2)
numbers(0) = 5
numbers(1) = 9
numbers(2) = 3</pre>



<h3 class="wp-block-heading">Jede Zahl mit Schleife durchlaufen</h3>



<p>Nun <strong>gehen </strong>wir jeden einzelnen Index unseres <strong><strong>Excel VB Array</strong></strong> mit einer Schleife durch und können die einzelnen <strong>Werte </strong>setzen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">For i = LBound(numbers) To UBound(numbers)
    numbers(i) = ' a value!
Next</pre>



<h2 class="wp-block-heading">Zahlen nachträglich hinzufügen – Excel VB Array</h2>



<p><strong>Auch wenn </strong>wir in unserem &#8222;Super 6&#8220;-Lottospiel die <strong>genaue Anzahl </strong>an Zahlen <strong>kennen</strong>, muss man vermutlich irgendwann weitere Elemente hinzufügen.</p>



<p>Dazu können wir das <strong><a href="https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/redim-statement" target="_blank" rel="noreferrer noopener">ReDim-Statement</a></strong> zusammen mit dem <strong>Preserve-Schlüsselwort</strong> nutzen.</p>



<p>Damit wir die <strong>Größe</strong> des <strong>Arrays zu neu festegelegt</strong> und die bisherigen <strong>Daten</strong> darin erhalten.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim numbers
numbers = Array(3, 5)
ReDim Preserve numbers(2)
numbers(2) = 7</pre>



<p><strong>Nach Ausführung</strong> befinden sich die Zahlen 3, 5 und 7 im <strong>Array</strong>.</p>



<h2 class="wp-block-heading">Das Lottobeispiel selbst</h2>



<p>In diesem Abschnitt <strong>fragen </strong>wir den <strong>Nutzer </strong>einfach <strong>nach 6 Zahlen</strong> <strong>und sammeln </strong>Diese <strong>im </strong>Excel VB <strong>Array</strong>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="visualbasic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Dim numbers
numbers = Array()
Dim number
Dim newBounds
For i = 1 To 6
    newBounds = UBound(numbers) + 1
    ReDim Preserve numbers(newBounds)
    number = CInt(InputBox("Please provide number " &amp; i))
    numbers(newBounds) = number
Next</pre>



<p><strong>Danach </strong>könnte man noch hingehen und eine <strong>Überprüfung </strong>einbauen, <strong>ob </strong>der Nutzer die <strong>Zahlen </strong>tatsächlich <strong>erraten </strong>hat, aber das überlasse ich dann Dir &#x1f609;!</p>
<p>Der Beitrag <a href="https://robbelroot.de/blog/excel-vb-array/">Excel VB Array</a> erschien zuerst auf <a href="https://robbelroot.de">Robert Skibbe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robbelroot.de/blog/excel-vb-array/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
