gpt4 book ai didi

vba - 设置十六进制和十进制颜色的行为不同

转载 作者:行者123 更新时间:2023-12-01 18:19:06 24 4
gpt4 key购买 nike

我尝试通过以下方式设置橙色:

WorkSheet.Range("A1:A5").Interior.color = 49407

WorkSheet.Range("A1:A5").Interior.color = &HC0FF 'Hex value of 49407

这两个不是应该完全等价的吗?设置的颜色不同。

最佳答案

不,这些值并不相等:&HC0FF 是 -16129,而 &HC0FF& 是 49407。

VBA 是一种相当古老的语言,默认情况下使用 16 位整数。在当今时代,您几乎总是想要长整型而不是整型,但您必须向 VBA 询问它们。

&HC0FF 是一个定义十六进制 16 位常量的结构。因为当解释为 16 位值时,该值中的符号位被设置为(开,负),因此转换为 -16129。我们可能会认为这很糟糕,但这不是一个错误!当您以 32 位形式使用 -16129(作为有符号整数)时,1 将传播到整个前 16 位,结果是蓝色值 255。

这里您真正想要的是一个 32 位十六进制常量:&HC0FF&。末尾额外的 & 告诉 VBA 这是一个 long 常量而不是 int。以 32 位解释,这是一个正值,因此请给出您要查找的十进制等效值。

简而言之,请求带有尾随 & 的长十六进制常量。

顺便说一句,当使用十进制常量时,VBA 对 16 位的这种倾向也会让我们感到困扰,例如在表达式 16000 * 16000 中,这将溢出 16 位算术。因此,有时也需要在十进制常量上使用尾随 & (或将一个分配给长第一个)。

关于vba - 设置十六进制和十进制颜色的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12644456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com