Excel VBA - Userform文本框格式导致舍入错误

时间:2017-03-20 14:12:51

标签: excel-vba vba excel

我有一个包含3个文本文件的用户表单。 txtCurrentSumtxtTargetValtxtDelta。我在窗体打开时初始化了文本框值。

delta应为零,但txtDelta文本框显示4,99999999999545E-03

我如何规避这种侮辱?

'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

我没有在表单的objectView / Properties中设置数字格式,因为我会以编程方式更改它们。

在其他子程序中发现问题。当我初始化文本框时,显然会触发Sub txtTargetVal_AfterUpdate()事件。 {sub} {}已更新delta。我在这里添加round来解决问题。

' Target Value Changed
'
Private Sub txtTargetVal_AfterUpdate()
    targetSum = CDbl(txtTargetVal.Text)
    txtDelta.Text = targetSum - originalSum
End Sub

此处我使用txtDelta.Text = targetSum - originalSum

更改了txtDelta.Text = Round(targetSum - originalSum, precision)

1 个答案:

答案 0 :(得分:2)

由于输出需要两位小数,请写

txtDelta.Text = Format(Round(delta, 2), "#,##0.00")

而不是txtDelta.Text = Format(delta, "#,##0.00")