[算表] VBA比較運算子問題

作者: foolkids (翼をください)   2014-09-03 10:10:56
軟體:Office Excel
版本:2010
我想要用時間來進行條件判斷,因為時間資料來源是Timer(自午夜迄今的秒數)
我想設定中午12點開始 於是寫了─
If 12 * 60 * 60 < Timer then
.
..
...
(以下省略)
End If
但是執行的時候會產生錯誤訊息"溢位"
於是我進一步測試下列運算─
MsgBox 12 * 60 * 60 = 43200
結果還是顯示"溢位",但是改成─
MsgBox 43200 = 43200 '(把12*60*60的運算直接算出來=43200)
結果是正確的,這是怎麼回事呢?
進一步試驗,如果是 11.999999 * 60 * 60 就不會產生溢位錯誤
難道比較運算子有內定的資料格式,導致我的乘法運算產生錯誤?
因為上面提到的需求,我需要一個 小時 * 60 * 60 的寫法來快速變更設定時間
所以才會想要從這邊了解,如果可以得到答案就能夠更準確的對應,
不然最後可能也就是多設定個變數先算出秒數再來比較了吧...
希望有前輩不吝指點,謝謝!!
作者: foolkids (翼をください)   2014-09-03 10:14:00
結果剛剛設定變數 A = 12 * 60 * 60 也是溢位... Why?補充:有先 Dim A as Long
作者: soyoso (我是耀宗)   2014-09-03 10:16:00
改12# * 60 * 60試試
作者: foolkids (翼をください)   2014-09-03 10:17:00
謝謝蘇大! 方便告訴我問題所在嗎? 這問題好詭異呀~~~
作者: soyoso (我是耀宗)   2014-09-03 10:40:00
http://goo.gl/VJqIsh 請看網頁下方網友回覆原因因就是提供算式它判斷為integer,因此超過32767時就溢位
作者: foolkids (翼をください)   2014-09-03 10:57:00
謝謝蘇大~~~~

Links booklink

Contact Us: admin [ a t ] ucptt.com