VBA“如果<然后”function无法正常工作
我有一个总结时间值一个星期(dblTotal)的macros,这个总数然后被添加到一周最后一天的列“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? ..
请让我知道,如果我在这里错过了一些愚蠢的东西,我已经尝试使用值的格式,但感觉好像我在黑暗中拍摄。
发生此问题的原因是VBA将0.0972222222222222
修改为9.72222222222222E-02
(相等),但是当您将此值与string( "1.875"
)进行比较时,您的dblTotal
将转换为string。 所以,当你比较两个string: "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