<?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>kalkulationen Archive - Robert Skibbe</title>
	<atom:link href="https://robbelroot.de/blog/tag/kalkulationen/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>kalkulationen Archive - Robert Skibbe</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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="(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 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="(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 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="(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>
	</channel>
</rss>
