VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 1934|回复: 8

这个算不算 Excel VBA 的 bug?

[复制链接]
发表于 2015-5-8 08:39:27 | 显示全部楼层 |阅读模式
cells(1,1).interior.color=RGB(0,255,0)
cells(1,1).interior.color=65280
都成功设置为绿色;
cells(1,1).interior.color=&HFF00
得到的却是和&HFFFF00一样的颜色,但
cells(1,1).interior.color=&H01FF00 又正确设置为了RGB(0,255,1)。。。无语。。。

点评

有吗?请举例说明  发表于 2015-5-11 13:23
这个问题你问了无数次了。。。。。  发表于 2015-5-9 23:17
 楼主| 发表于 2015-5-8 08:41:41 | 显示全部楼层
不知道用 OD 对设置颜色的Windows API设断点能不能找到 65280 和 &HFF00 的不同?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-8 09:06:24 | 显示全部楼层
本帖最后由 VBProFan 于 2015-5-8 09:07 编辑

cells(1,1).interior.color=&HFF00& 就可以了。补码问题,我一时脑残了。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-8 09:14:55 | 显示全部楼层
设置颜色的 API 函数的参数是 Long 类型,4字节,&HFF00 把 00 FF FF FF 压栈传参,&H01FF00 却把 00 FF 01 00  压栈传参。唉,还是对 VB的 十六进制表示不够熟悉啊~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-8 09:21:37 | 显示全部楼层
所以VB6的颜色属性对话框里都是以&结尾的,就是为了转成 Long 类型,另外RGB 只用了三字节,Long是四字节,VB就把最高字节的最高位置1作为系统颜色空间。
回复 支持 反对

使用道具 举报

发表于 2015-5-8 10:00:23 | 显示全部楼层
看OFFICE版本的。拿个03来讲问题就呵呵了。换个2013试试

点评

我是 2007 版本的,其实我试了2003和2010都这样  发表于 2015-5-11 13:23
回复 支持 反对

使用道具 举报

发表于 2015-5-8 11:15:50 | 显示全部楼层
还是顶一下,各位大师威武。
回复 支持 反对

使用道具 举报

发表于 2015-5-8 16:26:14 | 显示全部楼层
        C = &HFF00&
回复 支持 反对

使用道具 举报

发表于 2015-5-8 19:18:04 | 显示全部楼层
用变量测试一下就知道问题出现在哪里!
dim a as long
a = &HFF00
MsgBox a 'a=-256

a = &HFF00&
MsgBox a 'a=65280
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-5 11:10

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表