如果我在单元格中输入一个值,它会按预期存储它,但如果我通过 VBA 代码设置该值,它会错误地存储它。更具体地说,我计算了某个物体的高度,结果值为 1.15。数字显示正确,但当我单击单元格时,实际存储的数字是 1.14999997615814。另一个单元格根据条件使用此数字或另一个数字。该单元格始终显示实际存储的数字(1.14999997615814),这是不正确的。这是一份由政府工程师审查的技术文件,因此即使是微小的偏差也会导致该文件被拒绝。我尝试将数字存储为文本(没有区别)、在存储之前对其进行四舍五入(没有区别)、在存储之前将其计算为单精度或双精度,同样,Excel 的操作没有区别。并非所有值都会发生这种情况,但当计算结果为 1.15 时,它会出现这种行为。唯一能正确存储数字的方法是手动输入,这违背了计算值的整个目的。有谁知道发生了什么,以及我如何强制、胁迫或贿赂 Excel 使其正常运行?
短暂性脑缺血。
答案1
我仍然不知道问题究竟出在哪里。我不会用实现结果的代码来烦你——简而言之,它只是找到要添加的数字并将它们相加。这些值为 (0.0747*2)+(0.25*2)+.05006,等于 1.15。唯一有效的解决方法是将结果作为文本分配给单元格,然后转换为数字,如下所示:
ws.Range("L24").Value = "'" & JobSettings.BrgHeight
ws.Range("L24").Select
Selection.NumberFormat = "General"