2014-01-13 61 views
1

我有一個總結一週的時間值(dblTotal)的宏,這個總數然後在一週的最後一天添加到列'H'。VBA「如果<然後」功能無法正常工作

不過,對於週週時間值累計只爲「0.0972222222222222」之一(2時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? ..

請讓我知道,如果我在這裏錯過了一些愚蠢的東西,我已經嘗試在值上使用格式,但感覺好像我在黑暗中拍攝一樣。發生

回答

6

的問題,因爲VBA修改0.09722222222222229.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 
+1

謝謝,學到了一些東西今天新的:) – Morallis