Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1116to1120
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
For-Next Schleife
Micha
Hey,
hat einer von Euch ne Ahnung, warum mir in der folgenden Prozedur eine 3,3,5,5 ausgegeben wird ? - sollte m.E. nach eine 3,4,5,6 sein.
Sub Test5()
Repetition = 0
For i = 0.03 To 0.05 Step 0.01
Repetition = Repetition + 1
Next
Cells(3, 14) = Repetition
Repetition = 0
For i = 0.03 To 0.06 Step 0.01
Repetition = Repetition + 1
Next
Cells(4, 14) = Repetition
Repetition = 0
For i = 0.03 To 0.07 Step 0.01
Repetition = Repetition + 1
Next
Cells(5, 14) = Repetition
Repetition = 0
For i = 0.03 To 0.08 Step 0.01
Repetition = Repetition + 1
Next
Cells(6, 14) = Repetition
End Sub
?
Grüße

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: For-Next Schleife
12.11.2009 11:29:23
Luschi
Hallo Micha,
wenn Du folgende 3 Anweisungen ausführst:
MsgBox 0.03 + 0.01 = 0.04
MsgBox 0.04 + 0.01 = 0.05
MsgBox 0.05 + 0.01 = 0.06
wirst Du feststellen, daß die letzte Anweisung 'Falsch' ergibt und deshalb der letzte Schritt in der Forschleife nicht mehr ausgeführt wird.
Es ist sinnvoll, als Schleifenzähler nur ganzzahlige Ausdrücke zu verwenden.
Gruß von Luschi
aus klein-Paris
AW: For-Next Schleife
12.11.2009 12:02:47
Micha
Hi Luschi,
vielen Dank für die Info !!!
Grüße,
Micha :)
Schleife über Dezimalbrüche
12.11.2009 11:29:58
Erich
Hi Micha,
so ein PC kann prinzipiell mit gebrochenen Dezimalzahlen oft nicht genau rechnen.
Bei der Umwandlung vom Dezimal- ins Binärsystem passieren - bei endlich vielen Stellen - zwangsläufig Ungenauigkeiten.
In deinem Beispiel führt das in zwei Fällen zum Vorzeitigen Verlassen der Schleife, weil wohl z. B. bei
For i = 0.03 To 0.06 Step 0.01
die Schleife für i=0.06 nicht mehr ausgeführt wird, weil der Schleifenzähler
mit i = i+0.01 die 0.06 überschreiten würde. Er könnte z. B. 0.06000000001 sein.
Probier mal

Sub add01()
Dim dblX As Double
For ii = 1 To 100
dblx = dblx + 0.07
Next
Cells(1, 1) = dblx
End Sub
Das Ergebnis ist nicht wie in A1 angezeigt genau 7,
sondern - siehe Bearbeitungsleiste - 7,00000000000001.
Eine Schleife, die bis 7 gehen soll, würde dann nicht mehr ausgeführt.
Fazit: Schleifen über Dezimalbrüche möglichst vermeiden!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Verwendest du eigentlich nicht "Option Explicit"?
Anzeige
AW: Schleife über Dezimalbrüche
12.11.2009 12:01:47
Micha
Hi,
vielen Dank für die Info !
Dann muss ich wohl um die dezimal For..Next drumherum manövrieren :)
Option Explicit verwende ich erst zum Schluss zum überprüfen, welche Variablen ich noch deklarieren muss...
Grüße,
Micha
AW: Schleife über Dezimalbrüche
12.11.2009 13:50:59
Luschi
Hallo Micha,
das sollte etwas zu spät sein, für die explicite Definition von Variablen. Wenn es dann noch ein paar 'On Error' - Anweisungen gibt, die bei vorhandenen Fehlern auf andere Verzweigungen verweisen, ist viel Programmieraufwand passiert, ohne das eigentliche Problem tatsächlich zu erfassen/behandeln.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Schleife über Dezimalbrüche
12.11.2009 17:59:24
elMike
Hi Luschi,
Danke für den Tip !
Mal eine andere Frage - wenn ich aus einer Liste eine Pivot Tabelle erstelle, dann wird die Formatierung nur für die Zeilen-Werte, nicht aber für die Daten-Werte übernommen. Weiß hier jemand, wie ich die Formatierung der Listen-Werte für die Daten-Werte übernehme ?
Grüße

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige