excel - 为什么(&HFFFF00 和 &HFF00)= &HFFFF00?

标签 excel vba hex

我正在调查 VBA 函数中的错误,并发现 (&HFFFF00 And &HFF00) = &HFFFF00

我期望得到不同的结果:(&HFFFF00 And &HFF00) = &HFF00

我错过了什么?

最佳答案

我明白了。

  • 第一个值 &HFFFF00 太大,无法容纳 16 位,因此它自动为 Long
  • 第二个值&HFF00确实适合16位,因此它是一个Integer,即有符号整数

尝试Debug.Print &HFF00, &HFF00&,您将看到-256 65280。第一个值是有符号整数,第二个值通过 & 后缀强制为(有符号)long。

显然,VBA 在可能的情况下将值存储为 16 位,并在表达式求值期间转换为 32 位时将它们删除,从而造成了困惑。

为了使操作正常工作,您需要使用 & 后缀强制常量变长。

关于excel - 为什么(&HFFFF00 和 &HFF00)= &HFFFF00?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57718221/

相关文章:

python - 将 pandas dataframe 列从十六进制字符串转换为 int

excel - 对大数使用 DEC2BIN()

excel - 基于Excel工作表中的单元格颜色和文本颜色子集数据框

VBA - 内存优化的类与类型

c++ - 如何使格式标志在 C++ 中不绑定(bind)?

linux - 具有自动更新功能的 Linux 十六进制编辑器

python - 写入 xlsx 在一个单元格中创建重复行

excel - 仅当当前月份时如何在单元格中显示值

vba - VBA中具有多个非连续列的范围索引

vba - 简报 VBA : Clearing shape color