在运行Office 2003 Excel VBA的32位PC上,使用以下代码
Debug.Print ""
Debug.Print Hex(&HFF00000 And &HF00000)
Debug.Print Hex(&HFF0000 And &HF0000)
Debug.Print Hex(&HFF000 And &HF000)
Debug.Print Hex(&HFF00 And &HF00)
Debug.Print Hex(&HFF0 And &HF0)
Debug.Print Hex(&HFF And &HF)
给出以下输出
F00000
F0000
FF000 '<- Here's the Anomaly
F00
F0
F
只有十六进制值“F”才会出现这种情况;即将所有“F”替换为任何其他十六进制数字,输出将按预期进行
看起来像16位处理中的一些宿醉
我的世界被粉碎了
我想知道是否;
1)这真的是异常(或者我疯了?)
如果是;
2)是否与其他Office版本一起出现
3)它是否发生在64位PC上
4)什么是最优雅的解决方法
任何线索都将不胜感激
答案 0 :(得分:8)
对于VBA中的大十六进制数,您需要附加&
(长类型字符)以确保它被正确存储为long。
E.g。试试这个
Debug.Print &HF000, &HF000&