iT邦幫忙

0

請教 Excel VBA 時間無法正確比較的問題

Sub 巨集1()
    Dim a1 As Date
    Dim a2 As Date
    
    '測試1
    a1 = "07:00:00"
    a2 = "07:30:00"
    a1 = DateAdd("n", 30, a1) 'a1 = 07:30:00 am
    Debug.Print (a1 = a2) '結果示:True
    
    '測試2
    a1 = "06:30:00"
    a2 = "07:30:00"
    a1 = DateAdd("n", 30, a1) 'a1 = 07:00:00 am
    a1 = DateAdd("n", 30, a1) 'a1 = 07:30:00 am
    Debug.Print (a1 = a2) '結果顯示:False
End Sub

請教各位高手,為何在測式2的結果不如預期?謝謝。

2 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2019-08-12 10:05:31
最佳解答

因為你做了這動作兩次
a1 = DateAdd("n", 30, a1)
如果你只做一次,像這樣
a1 = DateAdd("n", 60, a1)
(加兩次30分鐘,換成加一次60分鐘)
答案就會是 true 了

至於為什麼會這樣
我也不知道
/images/emoticon/emoticon06.gif

5
paicheng0111
iT邦高手 1 級 ‧ 2019-08-12 10:24:11

rounding error

Sub 巨集1()
    Dim a1 As Date
    Dim a2 As Date
    
       
    '測試2
    a1 = "06:30:00"
    a2 = "07:30:00"
    a1 = DateAdd("n", 30, a1) 'a1 = 07:00:00 am
    a1 = DateAdd("n", 30, a1) 'a1 = 07:30:00 am
    
    Debug.Print CDbl(a2) - CDbl(a1)
End Sub

兩者差了 5.55111512312578E-17

佩服佩服
/images/emoticon/emoticon42.gif

小魚 iT邦大師 1 級 ‧ 2019-08-12 10:39:48 檢舉

ㄎㄎ,
我也在想會不會是誤差的問題,
就算是C#的double也會有誤差的問題,
這個水就很深了,
ㄎㄎ...

我要發表回答

立即登入回答