我有一个宏,它将一周的时间值(dblTotal)相加,然后将该总数添加到一周中最后一天的“H”列中。
然而,对于其中一周,周时间值仅总计为“0.0972222222222222”(02:20:00)
dblTotal = "0.0972222222222222"
下面这段代码令我头疼:
If dblTotal > "1.875" Then
Range("I" & (i - 1)).Value = dblTotal - "1.875"
Range("H" & (i - 1)).Value = "1.875" - preTotal
Else
Range("H" & (i - 1)).Value = dblTotal - preTotal
End If
运行时显示dblTotal大于1.875? ..
如果我在这里遗漏了一些傻话,请告诉我,我已尝试在数值上使用格式,但感觉好像我在黑暗中拍摄。
答案 0 :(得分:6)
出现此问题是因为VBA会将0.0972222222222222
修改为9.72222222222222E-02
(相同),但是当您将此值与字符串("1.875"
)进行比较时,您的dblTotal
会转换为字符串也是。因此,当您比较两个字符串:"9.72222222222222E-02"
和"1.875"
时,第一个字符串会更大。
尝试通过转换为Double
并将"1.875"
更改为1.875
来修改您的代码:
If CDbl(dblTotal) > 1.875 Then
Range("I" & (i - 1)).Value = dblTotal - 1.875
Range("H" & (i - 1)).Value = 1.875 - preTotal
Else
Range("H" & (i - 1)).Value = dblTotal - preTotal
End If