Thema Datum  Von Nutzer Rating
Antwort
Rot Kurioses Rechenproblem VBA
30.06.2021 18:52:22 Benjamin
NotSolved
30.06.2021 19:17:39 RPP63
NotSolved
30.06.2021 19:54:06 Gast83127
NotSolved
30.06.2021 20:00:56 Gast8802
NotSolved
30.06.2021 20:54:21 RPP63
NotSolved
30.06.2021 23:14:16 Gast7357
NotSolved
01.07.2021 12:09:41 Gast37381
NotSolved
01.07.2021 12:23:34 Gast96369
NotSolved
01.07.2021 15:06:21 Der Steuerfuzzi
Solved

Ansicht des Beitrags:
Von:
Benjamin
Datum:
30.06.2021 18:52:22
Views:
797
Rating: Antwort:
  Ja
Thema:
Kurioses Rechenproblem VBA

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Kurioses Rechenproblem VBA
30.06.2021 18:52:22 Benjamin
NotSolved
30.06.2021 19:17:39 RPP63
NotSolved
30.06.2021 19:54:06 Gast83127
NotSolved
30.06.2021 20:00:56 Gast8802
NotSolved
30.06.2021 20:54:21 RPP63
NotSolved
30.06.2021 23:14:16 Gast7357
NotSolved
01.07.2021 12:09:41 Gast37381
NotSolved
01.07.2021 12:23:34 Gast96369
NotSolved
01.07.2021 15:06:21 Der Steuerfuzzi
Solved