VBA“如果< Then”功能无法正常工作

时间:2014-01-13 15:12:04

标签: excel vba

我有一个宏,它将一周的时间值(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? ..

如果我在这里遗漏了一些傻话,请告诉我,我已尝试在数值上使用格式,但感觉好像我在黑暗中拍摄。

1 个答案:

答案 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