Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1008to1012
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

Rechenfehler?

Rechenfehler?
23.09.2008 10:30:48
Gordon
Moin,
ich habe hier irgendwo einen Denkfehler. Und zwar habe ich ein Makro hier, dass dass beim Auslösen einen Wert aus einer Zelle nimmt (z.B. A2) und diesen Wert in eine andere Zelle (z.B. A1) addiert! Vor der Rechnung stand in A1 der Wert null.
Wenn man das Makro ein zweites mal ausführt, wird der Wert wieder abgezogen, der eben noch addiert wurde. Heißt also, dass wieder null in Zelle A1 stehen müßte. Aber da steht dann statt dessen der Wert "-1,45519152283669E-11".
Woran kann das liegen bzw. wo könnte der Fehler liegen?
Hier mal das Makro für die Berechnung:

Sub Gesamt(x As Integer)
Dim kalk
Dim planfix
Dim planfc
kalk = 0
planfix = 0
planfc = 0
With Worksheets("Neu")
For z = 8 To 253
Select Case z
Case 8 To 12, 15 To 19, 22 To 31, 38 To 48, 50 To 64, 67, 69 To 79, 81 To 89, 91,  _
92, 94 To 99, 101, 103, _
106 To 111, 113 To 120, 124 To 142, 145, 147, 148, 150, 154 To 156, 159, 161, 163,  _
164, 168 To 170, _
172 To 174, 178 To 181, 183 To 185, 187, 189, 190, 194 To 218, 220 To 229, 231 To  _
234, 240 To 246, 249 To 253
kalk = kalk + .Cells(z, (x * 4) + 5).Value
planfix = planfix + .Cells(z, (x * 4) + 6).Value
planfc = planfc + .Cells(z, (x * 4) + 7).Value
If .OLEObjects("CheckBox" & x).Object.Value = True Then
.Range("I" & z) = .Range("I" & z) + kalk
.Range("J" & z) = .Range("J" & z) + planfix
.Range("K" & z) = .Range("K" & z) + planfc
ElseIf .OLEObjects("CheckBox" & x).Object.Value = False Then
.Range("I" & z) = .Range("I" & z) - kalk
.Range("J" & z) = .Range("J" & z) - planfix
.Range("K" & z) = .Range("K" & z) - planfc
End If
Case Else
End Select
kalk = 0
planfix = 0
planfc = 0
Next z
End With
End Sub


Kann es an den Variablen liegen?
Gruß
Gordon

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rechenfehler?
23.09.2008 10:38:00
Uduuh
Hallo,
das liegt an der Rechengenauigkeit von Excel bzw. an der Umwandlung binär-dezimal.
Abhilfe: Runden auf z.b. 10 Stellen
Gruß aus’m Pott
Udo

AW: Rechenfehler?
23.09.2008 10:40:00
Gordon
Danke schon mal für den Hinweis.
Wie baue ich das denn in den Code am besten ein?
AW: Rechenfehler?
23.09.2008 11:27:00
Gordon
Ok,
hab es gerade selber mit '=Format(kalk, "0.00")" hinbekommen.
Gruß
Gordon
AW: Rechenfehler?
23.09.2008 11:31:00
Uduuh
Hallo,
das wandelt deine Zahl aber in einen String um.
Siehe Funktion Round
Gruß aus’m Pott
Udo

AW: Rechenfehler?
23.09.2008 11:41:44
Gordon
Meinst du etwa so:
kalk=Round(kalk, 2)
Anzeige
AW: Rechenfehler?
23.09.2008 12:26:00
Uduuh
Hallo,
waum fragst du? Probier's aus!
Gruß aus’m Pott
Udo

AW: Rechenfehler?
23.09.2008 12:41:00
Gordon
Ich frage,
weil ich optisch keinen Unterschied zwischen Format und Round auf meinem Tabellenblatt sehe. Natürlich ist mir klar, dass es etwas anderes ist, wenn ich Format benutze Round. Da ich aber mit Round noch nie gearbeitet habe und du mit deinem letzten Posting mich nur verunsichert hast, kann ich doch wohl nachfragen, ob du das meintest. Finde die Frage daher sehr gerechtfertigt!
Gruß aus Hamburg
Gordon
AW: Rechenfehler?
23.09.2008 13:30:00
Uduuh
Hallo,
sorry, aber hast du keine Hilfe?
Du solltest dir das https://www.herber.de/forum/checklist.htm auch mal durchlesen.
Gruß aus’m Pott
Udo

Anzeige
AW: Rechenfehler?
23.09.2008 13:48:37
Gordon
Die Excel/VBA-Hilfe ist wie so oft für mich nichts sagend - wenn ich da mal etwas finde.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige