可能的VBA和运算符异常

mik*_*inz 3 excel vba excel-vba defects logical-operators

在我的32位PC上,运行Office 2003 Excel VBA,以下代码

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)
Run Code Online (Sandbox Code Playgroud)

给出以下输出

F00000
F0000
FF000   '<- Here's the Anomaly 
F00
F0
F
Run Code Online (Sandbox Code Playgroud)

只有Hex值"F"才会出现这种情况; 即用所有其他十六进制数字替换所有"F",输出将如预期的那样

看起来像16位处理的一些宿醉

我的世界被打破了

我想知道是否;

1)这真的是异常(或者我疯了吗?)

如果是;

2)是否与其他Office版本一起出现

3)它是否发生在64位PC上

4)什么是最优雅的解决方案

任何线索将不胜感激

Tim*_*ams 8

对于VBA中的大十六进制数,您需要追加&(长类型字符)以确保它被正确存储为long.

试试这个

Debug.Print &HF000, &HF000&
Run Code Online (Sandbox Code Playgroud)