我有一个宏,它将一周的时间值(dblTotal)相加,然后将该总数添加到一周的最后一天的"H"列中.
然而,对于其中一周,周数时间值仅总计为"0.0972222222222222"(02:20:00)
dblTotal = "0.0972222222222222"
Run Code Online (Sandbox Code Playgroud)
以下代码让我头疼:
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
Run Code Online (Sandbox Code Playgroud)
运行时,它显示dblTotal大于1.875?..
如果我在这里遗漏了一些愚蠢的东西,请告诉我.我已经尝试过对值进行格式化,但感觉好像我在黑暗中拍摄.
出现此问题是因为VBA修改0.0972222222222222为9.72222222222222E-02(相等),但是当您将此值与string("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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1150 次 |
| 最近记录: |