圆角值未正确插入Excel

时间:2013-09-30 17:27:34

标签: excel vba ms-access access-vba

我有一个Access数据库,其中有一些数据通过vba代码转储到Excel工作簿中。有些值有一个很长的小数,我想要舍入到最接近的十分之一。如果它是一个整数,我不希望将值四舍五入到十分之一(即,我不希望45舍入到45.0),所以我使用以下代码:

If Fix(rstTmpRegularAndOvertimeHours!regularhours) = rstTmpRegularAndOvertimeHours!regularhours Then
      objWS.cells(intRowCount, 6).Value = rstTmpRegularAndOvertimeHours!regularhours
    Else
      objWS.cells(intRowCount, 6).Value = Round(rstTmpRegularAndOvertimeHours!regularhours, 1)
    End If

舍入值显示在单元格中,但输入的实际值是未舍入值。例如,值为4.19999980926513,运行此代码时,单元格中将显示值4.2,但如果单击单元格,则会看到实际值仍为4.19999980926513。当以下代码行运行时:

With objWS.PageSetup
    .Orientation = 2
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

单元格展开以显示整个值并再次显示4.19999980926513。我在其他地方使用类似的代码,并在电子表格中插入正确的舍入值。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

二进制系统的十进制分数很有挑战性。

Round()返回双精度浮点数。但4.2不能将完全存储为double。所以相反,double值是4.2的近似,它是你用双精度得到的最接近的值。

那么您在Excel中看到的是实际的双倍值。如果要使用单个小数位显示它---然后根据该值调整列宽度 - 将Excel列格式更改为“数字”,将“小数位”属性更改为1。