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