<?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>funktionen Archive - Robert Skibbe</title>
	<atom:link href="https://robbelroot.de/blog/tag/funktionen/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>alias RobbelRoot – Freelance Full Stack Developer .NET</description>
	<lastBuildDate>Fri, 04 Feb 2022 02:36:43 +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>funktionen Archive - Robert Skibbe</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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="(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 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 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>
