You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA十六进制值相乘溢出问题咨询:&H100*&HBB报错而十进制运算正常

问题原因解析
  • 十六进制字面量的默认类型限制:VBA中,&H开头的十六进制字面量,只要值在16位Integer的范围(-32768 ~ 32767)内,就会被默认解析为Integer类型。&H100(256)和&HBB(187)都符合这个范围,所以二者都是Integer。当两个Integer相乘时,VBA会用Integer类型进行运算,而结果256*187=47872超过了Integer的最大值32767,直接触发溢出错误。
  • 十进制表达式的类型提升逻辑:十进制写法里的^是幂运算符,VBA对幂运算会自动将操作数提升为Double类型计算,16^2得到的是Double类型的256.0。后续和187相乘时,187会被自动转为Double类型参与运算,结果47872.0在Double的极大范围内,自然不会溢出。
解决方法(保留十六进制可读性)

如果要继续用十六进制写且避免溢出,有两种简单方式:

  • 给十六进制字面量加&后缀,强制指定为Long类型(32位,范围足够容纳结果):
    &H100& * &HBB&
    
  • 用类型转换函数显式转换:
    CLng(&H100) * CLng(&HBB)
    

内容的提问来源于stack exchange,提问作者pdtcaskey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:25:57