用于比较2个数字的VBA代码给出不同的结果

时间:2015-03-23 14:46:02

标签: excel vba

我的最后一行包含上述单元格的总和(7,6)。这是一个这样的公式:=SUM(E6:E26)

此外,只要有效值不等于7.6,我会将一些vba编码为红色。奇怪的是有时SUM值不被认为是7,6,即使它是。然后有时它是红色的,应该是黑色的。

enter image description here

以下是代码:

            If (Cells(TABLE_TOTAL_ROW, curCol).Value = 7.6) Then
                ''' Set text in black (automatic)
                With Cells(TABLE_TOTAL_ROW, curCol).Font
                    .ColorIndex = xlAutomatic
                    .TintAndShade = 0
                End With
            Else
                ''' Set text in red
                With Cells(TABLE_TOTAL_ROW, curCol).Font
                    .Color = -16776961
                    .TintAndShade = 0
                End With
            End If

下面:我设置一个断点:在立即窗口中,我得到7,6的值。在那之下,我比较并返回false

enter image description here

对我来说很奇怪。

1 个答案:

答案 0 :(得分:1)

不要将浮点值与等值进行比较,因为某些值无法准确表示。

7.6 is probably 7.5999999 (or similar)

不匹配的7.6正在显示四舍五入。

改为使用容差:

if Abs(x - y) < tolerance

其中公差是一个像0.000001

的值