作者foolkids (翼をください)
看板Office
標題[算表] VBA比較運算子問題
時間Wed Sep 3 10:10:56 2014
軟體: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 的寫法來快速變更設定時間
所以才會想要從這邊了解,如果可以得到答案就能夠更準確的對應,
不然最後可能也就是多設定個變數先算出秒數再來比較了吧...
希望有前輩不吝指點,謝謝!!
--
┌─────────────────────────────┐
│
就這樣,終於到了啟程的日子。 │
│
和來機場送行的朋友們說著玩笑話,其實內心恍恍惚惚像在作夢。│
│
也似乎是因為,為了走到「出發」這一步,耗盡了全部心力。 │
└─────────────────
石田裕輔《不去會死!》─┘
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.249.136
※ 文章網址: http://www.ptt.cc/bbs/Office/M.1409710260.A.3CE.html
→ foolkids: 結果剛剛設定變數 A = 12 * 60 * 60 也是溢位... Why? 09/03 10:14
→ foolkids: 補充:有先 Dim A as Long 09/03 10:15
→ soyoso: 改12# * 60 * 60試試 09/03 10:16
→ foolkids: 謝謝蘇大! 方便告訴我問題所在嗎? 這問題好詭異呀~~~ 09/03 10:17
→ soyoso: 原因因就是提供算式它判斷為integer,因此超過32767時就溢 09/03 10:42
→ soyoso: 位 09/03 10:42
→ foolkids: 謝謝蘇大~~~~ 09/03 10:57