Hallo zusammen,
ich programmiere mir gerade ein einfaches Buchhaltungstool und Teil davon ist ein kleines Makro, das Buchhaltungsdaten des Steuerberaters etwas sortiert. Das ist ziemlich simpel, wie Ihr unten seht.
Jetzt ist ein verrücktes Problem aufgetreten:
Bei dem Vergleich "If TempNumber1 + TempNumber3 = TempNumber2", der sich drei Werte aus der Excel schnappt, einen absoluten Wert jeweils daraus bildet und in eine Double packt (also TempNumber1 etc.) passiert Folgendes:
TempNumber1 = 183,17
TempNumber2 = 271,97
TempNumber3 = 88,8
Die "Debug.Print" gibt diese drei Werte auch aus.
"Debug.Print TempNumber2 - TempNumber1 - TempNumber3" hingegen gibt folgenden Wert aus: "4,2632564145606E-14"
Ich habe noch einmal sichergestellt, dass die Zahlen in den drei relevanten Zellen wirklich Zahlen sind (hier konkret formatiert als Währung, aber auch andere Formatierungen ausprobiert) und ich habe dieselbe Rechnung in Excel selbst probiert (hier wäre das konkret =ABS(F63)-ABS(R77)-ABS(R78)) und das Ergebnis ist, wie es richtig sein sollte = 0.
Ich bin völlig verwirrt und zweifle gerade etwas an mir selbst xD.
Hat jemand eine Idee, wo das Problem liegen könnte?
VG
Benjamin
Hier der Code (der bis zu dieser Stelle perfekt funktioniert), falls das hilft:
Private Sub CommandButton1_Click()
Dim Counter As Long
Dim SecCounter As Long
Dim RowsCount As Long
Dim TempNumber1 As Double
Dim TempNumber2 As Double
Dim TempNumber3 As Double
With ActiveSheet
SecCounter = 5
RowsCount = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For Counter = 5 To RowsCount
TempNumber1 = Abs(.Cells(SecCounter, 18).Value)
TempNumber2 = Abs(.Cells(Counter, 6).Value)
TempNumber3 = Abs(.Cells(SecCounter + 1, 18).Value)
If TempNumber1 = TempNumber2 Then
.Cells(Counter, 10) = .Cells(SecCounter, 18).Value
.Cells(Counter, 11) = .Cells(SecCounter, 16).Value
.Cells(Counter, 12) = .Cells(SecCounter, 17).Value
Else
If TempNumber1 + TempNumber3 = TempNumber2 Then
.Cells(Counter, 10) = .Cells(SecCounter, 18).Value
.Cells(Counter, 11) = .Cells(SecCounter, 16).Value
.Cells(Counter, 12) = .Cells(SecCounter, 17).Value
.Cells(Counter, 13) = .Cells(SecCounter + 1, 18).Value
.Cells(Counter, 14) = .Cells(SecCounter + 1, 16).Value
.Cells(Counter, 15) = .Cells(SecCounter + 1, 17).Value
SecCounter = SecCounter + 1
Else
Debug.Print TempNumber1
Debug.Print TempNumber2
Debug.Print TempNumber3
Debug.Print TempNumber2 - TempNumber1 - TempNumber3
.Cells(Counter + 8, 11) = TempNumber1
.Cells(Counter + 8, 12) = TempNumber2
.Cells(Counter + 8, 13) = TempNumber3
.Cells(Counter + 8, 14) = TempNumber2 - TempNumber1 - TempNumber3
'MsgBox ("Hauptwert = " & TempNumber2 & " Teilwert 1 = " & TempNumber3 & " Teilwert 2 = " & TempNumber1 & " Differenz Hauptwert minus Teilwerte = " & TempNumber2 - TempNumber3 - TempNumber1)
Exit For
End If
End If
SecCounter = SecCounter + 1
Next
End With
End Sub
|