[算表] VBA 大數值位元運算溢位問題

看板Office作者 (不睡覺先生)時間8年前 (2016/01/10 21:37), 編輯推噓2(2012)
留言14則, 3人參與, 最新討論串1/1
軟體: Excel 版本: 2010 用 VBA 做大數值的位元運算時,一直遇到溢位的問題, 產生溢位的數值如下: dim lngLeft as long dim lngRight as long lngLeft = 859001186 lngRight = 858989328 lngLeft = lngLeft Xor (lngRight * 4) 此時就會發生溢位, 用 python 跑出來的結果會是 lngLeft = 4294958370 請問各位大大有沒有好的方法可以解這個問題,感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.98.62 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1452433076.A.290.html

01/10 21:52, , 1F
宣告變數的時候把As Long改成As Varient
01/10 21:52, 1F

01/10 21:53, , 2F
如果不是非常清楚變數型別就不要宣告或設定成Varient
01/10 21:53, 2F

01/10 21:56, , 3F
改成variant後還是發生溢位的問題
01/10 21:56, 3F

01/10 22:35, , 4F
先將lngleft和lngright數值轉二進位
01/10 22:35, 4F

01/10 22:35, , 5F
測試可導出原文的結果
01/10 22:35, 5F

01/10 23:08, , 6F
我在Excel 2013把兩變數都宣告成LongLong可以直接執行
01/10 23:08, 6F

01/10 23:22, , 7F
溢位,測試版本2016
01/10 23:22, 7F

01/10 23:22, , 8F
32位元
01/10 23:22, 8F

01/10 23:28, , 9F
另測試了2003,2007,2010,32位元版本都產生溢位了
01/10 23:28, 9F

01/11 01:08, , 10F
感謝soyoso大大,看來只能用字串硬上了,感謝提供 code
01/11 01:08, 10F

01/11 01:10, , 11F
to lilyhu:2010沒有LongLong,即使改成Currency還是溢位了
01/11 01:10, 11F

01/11 08:33, , 12F
longlong於2010版本有,但限64位元版本
01/11 08:33, 12F

01/11 08:35, , 13F
01/11 08:35, 13F

01/11 08:38, , 14F
剛測試了office2010 64位元,http://imgur.com/MjcFNAf
01/11 08:38, 14F
文章代碼(AID): #1MabwqAG (Office)