Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Loopvariable nach Schleifenende

Loopvariable nach Schleifenende
11.11.2020 19:50:59
Dieter
Ein kaum nachvollziehbares Verhalten einer For - Next Schleife
macht mir in einem größeren Projekt ernste Probleme. Unten
Codebeispiele und die jeweiligen Ergebnisse in der MsgBox:
Dim test As Double
For test = 1 To 10
Next test
MsgBox (test) Ergebnis: 11
Dim test As Double
For test = 1 To 10 Step 1
Next test
MsgBox (test) Ergebnis: 11
Dim test As Double
For test = 1 To 10 Step 2
Next test
MsgBox (test) Ergebnis: 11
Dim test As Double
For test = 1 To 10 Step 0.5
Next test
MsgBox (test) Ergebnis: 10.5
Dim test As Double
For test = 1 To 10 Step 3
Next test
MsgBox (test) Ergebnis: 13
Ich kann keine Gesetzmäßigkeit finden, um den Fehler zu kompensieren. Ähnlich scheint sich Excel zu verhalten, wenn die Schleife vorzeitig beendet wird.
Bin auf eine Erklärung neugierig und bedanke mich schon jetzt.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Loopvariable nach Schleifenende
11.11.2020 19:58:41
Nepumuk
Hallo Dieter,
die Schleife steigt aus sobald die Schleifenvariable "test" über den Grenzwert liegt. Was ist daran unlogisch?
Gruß
Nepumuk
AW: Loopvariable nach Schleifenende
11.11.2020 20:08:41
Dieter
Moin Nepomuk,
das ist mit wohl bekannt, aber in diesem Fall muss ich noch einmal auf die Loopvariable nach Schleifenende noch einmal zugreifen. Die Erklärung warum ich das machen will, würde zu weit führen.
Aber wenn das so ist, wie Du schreibst, und VBA beendet die Schleifen mit einem undefinierten
Endwert der Loopvariablen, dann muss ich mein Projekt umbauen.
Danke
AW: Loopvariable nach Schleifenende
11.11.2020 20:17:04
Daniel
Hi
eine For-Next-Schleife macht im Prinzip folgendes, wenn man sie als Do-Loop umschreibt
Test = 1
Do Until Test > 10
Test = Test + 3 'Step
Loop
genau so arbeitet auch For-Next.
vielleicht hilft dir das, besser zu verstehen warum der Schleifenzähler nach Ende der Schleife einen bestimmten Wert hat und wie dieser zustande kommt.
Gruß Daniel
Anzeige
AW: Loopvariable nach Schleifenende
12.11.2020 11:33:26
Edmund
Oder anders ausgedrückt:
Das NEXT zählt zu deiner Variablen Test immer 1 dazu (oder auch mehr, je nachdem welchen Step du angegeben hast.
Heißt am Ende wird aus der Test = 10 ein Test = 11.
Das FOR stellt fest, hoppla, jetzt bin ich über der 10 und die Schleife wird nicht weiter ausgeführt.
Die Variable bleibt aber bei 11.
Das ist die Gesetzmäßigkeit
Abhilfe:
nach der FOR NEXT Schleife:
test = test - 1 (bzw. den Step abziehen)
oder in der Schleife einen Zähler mitlaufen lassen

Dim test As Double
Dim z as double
z = 0
For test = 1 To 10
z = z + 1
Next test
test = z
MsgBox (test) Ergebnis: 10

Gruß
Edmund
Anzeige
AW: Loopvariable nach Schleifenende
12.11.2020 11:59:49
Daniel
ergänzend:
da man Schleifen auch mit Exit For vorzeitig abbrechen kann, ist die Tatsache, dass der Schleifenzähler größer ist als der Schleifenendwert immer ein Indikator, dass die Schleife vollständig durchgelaufen ist.
wäre nach dem Schleifendurchlauf der Zähler gleich dem Endwert, wäre es nicht mehr möglich zu unterscheiden, ob die Schleife vollständig durchgelaufen ist oder der vorzeitige Abbruch beim letzten Umlauf erfolgt ist.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige