Ich habe ein Benutzerformular mit 3 Textfeldern. txtCurrentSum
, txtTargetVal
und txtDelta
. Ich habe Textfeldwerte initialisiert, als das Formular geöffnet wurde.Excel VBA - Textformatierung des Benutzerformulars verursacht Rundungsfehler
delta
sollte Null sein, aber die txtDelta
Textbox ist 4,99999999999545E-03
zeigt Wie kann ich diese stiuation umgehen?
'Variable Definitions
Private originalSum As Double
Private targetSum As Double
Private precision As Integer
Private delta As Double
Private Sub UserForm_Initialize()
originalSum = 311.135
targetSum = originalSum
delta = targetSum - originalSum
precision = 2
txtCurrentSum.Text = Format(Hammer.originalSum, "#,##0.00")
txtTargetVal.Text = Format(targetSum, "#,##0.00")
txtDelta.Text = Format(delta, "#,##0.00")
End Sub
habe ich nicht die Nummer Formatierung in der Object/Eigenschaften des Formulars, weil ich sie programmaticaly ändern würde.
Das Problem wurde in einem anderen Unterprogramm gefunden. Anscheinend Sub txtTargetVal_AfterUpdate()
Ereignis wird ausgelöst, wenn ich die Textfelder initialisiere. delta
wurde in diesem Sub aktualisiert. Ich füge round
hier hinzu, um das Problem zu beheben.
' Target Value Changed
'
Private Sub txtTargetVal_AfterUpdate()
targetSum = CDbl(txtTargetVal.Text)
txtDelta.Text = targetSum - originalSum
End Sub
Hier änderte ich txtDelta.Text = targetSum - originalSum
mit txtDelta.Text = Round(targetSum - originalSum, precision)
Ihnen sehr danken. Ich habe die Ursache des Problems in einem anderen Sub gefunden, aber mit Ihrer Methode behoben. Ich füge die fraglichen Details hinzu. – wizofwor