小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【VBA研究】關(guān)于單元格顏色值的十六進(jìn)制賦值

 株野 2022-06-22 發(fā)布于陜西

作者:iamlaosong

1、單元格顏色的設(shè)置

背景顏色用屬性Interior,字體顏色用屬性Font。顏色的值,可以用Colorindex,這種方法只有Excel規(guī)定的56中顏色,如下圖所示:

也可以用RGB()函數(shù),這樣就可以設(shè)置成任何顏色。RGB()函數(shù)函數(shù)實(shí)際是返回一個(gè)顏色值,因此,也可以直接賦值,只是這個(gè)值不直觀而已。其實(shí)這個(gè)值就是RGB()函數(shù)的值,用十進(jìn)制表示:

RGB(R,G,B)=B*256*256+G*256+R

其中R、G、B是紅綠藍(lán)三種顏色十進(jìn)制值。

用十六進(jìn)制表示顏色值就非常直觀了,最低兩位表示紅色,最高兩位表示藍(lán)色,中間兩位表示綠色,就是上圖表格中十六進(jìn)制值,只是紅藍(lán)調(diào)換一下位置,即:

&HBBGGRR,其中RR、GG、BB是紅綠藍(lán)三種顏色十六進(jìn)制值。

如紅色(ColorIndex=3)即RGB(255,0,0)可以用16進(jìn)制數(shù)表示為&H0000FF

2、顏色設(shè)置方法

改變單元格的背景色用:     range.Interior.ColorIndex=
改變單元格的字體的顏色:   range.font.ColorIndex=

3、顏色設(shè)置代碼和效果

  1. '設(shè)置單元格背景顏色
  2. Sub setColor()
  3. '黑色
  4. Range("A1") = "黑色"
  5. Range("A2").Interior.ColorIndex = 1
  6. Range("A3").Interior.Color = RGB(0, 0, 0)
  7. Range("A4").Interior.Color = 0
  8. Range("A5").Interior.Color = &H0
  9. '紅色
  10. Range("B1") = "紅色"
  11. Range("B2").Interior.ColorIndex = 3
  12. Range("B3").Interior.Color = RGB(255, 0, 0)
  13. Range("B4").Interior.Color = 255
  14. Range("B5").Interior.Color = &HFF
  15. '綠色
  16. Range("C1") = "綠色"
  17. Range("C2").Interior.ColorIndex = 4
  18. Range("C3").Interior.Color = RGB(0, 255, 0)
  19. Range("C4").Interior.Color = 65280 '255*256=65280
  20. Range("C5").Interior.Color = &HFF00
  21. '藍(lán)色
  22. Range("D1") = "藍(lán)色"
  23. Range("D2").Interior.ColorIndex = 5
  24. Range("D3").Interior.Color = RGB(0, 0, 255)
  25. Range("D4").Interior.Color = 16711680 '255*256*256=16711680
  26. Range("D5").Interior.Color = &HFF0000
  27. End Sub

這個(gè)C5單元格顏色有點(diǎn)奇怪,明明設(shè)置的是綠色(用十六進(jìn)制值&HFF00) ,結(jié)果卻是這個(gè)顏色。設(shè)置完畢,再測(cè)試這個(gè)單元格的顏色值,居然是8號(hào)顏色,十六進(jìn)制值&HFFFF00,如下圖:

這是什么情況?難道16進(jìn)制表示有什么問(wèn)題嗎?將該語(yǔ)句換成:

Range("C5").Interior.Color = &HFFFF00

 效果完全相同。

之所以這樣,應(yīng)該和十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換有關(guān)系,&HFF00被系統(tǒng)認(rèn)為是整型(整型數(shù)據(jù)范圍: -32768 ~ 32767,16bit),但是為負(fù)數(shù)(-256),按補(bǔ)碼規(guī)則,擴(kuò)充到長(zhǎng)整型時(shí)(長(zhǎng)整型數(shù)據(jù)范圍:-2147483648 ~ 2147483647,32bit)時(shí)高位補(bǔ)1,我試了一下用&HFFFF賦值,結(jié)果是白色,和&HFFFFFF完全相同。我想用&H00FF00賦值,但是開(kāi)發(fā)環(huán)境立即優(yōu)化,去掉前面的00,看來(lái)用十六進(jìn)制表示顏色值是不保險(xiǎn)的(十進(jìn)制沒(méi)有問(wèn)題但不直觀),還是用RGB()函數(shù)吧。

那么有沒(méi)有解決辦法呢?辦法還是有的,既然開(kāi)發(fā)環(huán)境會(huì)優(yōu)化掉數(shù)字前面的00,那么只要不寫(xiě)00就行了,所以,只要將語(yǔ)句改成下面的形式就行了(后6位是顏色值):

Range("C5").Interior.Color = &H100FF00 - &H1000000

進(jìn)一步研究發(fā)現(xiàn),后面的H1000000減不減效果是一樣的,也就是說(shuō),顏色賦值,只關(guān)心后面的24bit,高位是什么內(nèi)容,沒(méi)有關(guān)系。

VBA沒(méi)有無(wú)符號(hào)整數(shù),所以用VBA處理無(wú)符號(hào)整數(shù)(比如移位),會(huì)碰到與上面類似的問(wèn)題,這一點(diǎn)要注意。真要處理,就用Byte類型吧。

最后,完整的看下效果吧。為了統(tǒng)一并防止出錯(cuò),十六進(jìn)制值都用CC開(kāi)頭,后跟6位顏色代碼(用什么十六進(jìn)制數(shù)開(kāi)頭都可以,只要不是0就行,用CC是因?yàn)轭伾挠⑽氖荂開(kāi)頭)。代碼如下:

  1. Sub setColor()
  2. '黑色
  3. Range("A1") = "黑色"
  4. Range("A2").Interior.ColorIndex = 1
  5. Range("A3").Interior.Color = RGB(0, 0, 0)
  6. Range("A4").Interior.Color = 0
  7. Range("A5").Interior.Color = &HCC000000
  8. '紅色
  9. Range("B1") = "紅色"
  10. Range("B2").Interior.ColorIndex = 3
  11. Range("B3").Interior.Color = RGB(255, 0, 0)
  12. Range("B4").Interior.Color = 255
  13. Range("B5").Interior.Color = &HCC0000FF
  14. '綠色
  15. Range("C1") = "綠色"
  16. Range("C2").Interior.ColorIndex = 4
  17. Range("C3").Interior.Color = RGB(0, 255, 0)
  18. Range("C4").Interior.Color = 65280 '255*256
  19. Range("C5").Interior.Color = &HCC00FF00
  20. '藍(lán)色
  21. Range("D1") = "藍(lán)色"
  22. Range("D2").Interior.ColorIndex = 5
  23. Range("D3").Interior.Color = RGB(0, 0, 255)
  24. Range("D4").Interior.Color = 16711680 '255*256*256
  25. Range("D5").Interior.Color = &HCCFF0000
  26. '黃色
  27. Range("E1") = "黃色"
  28. Range("E2").Interior.ColorIndex = 6
  29. Range("E3").Interior.Color = RGB(255, 255, 0)
  30. Range("E4").Interior.Color = 65535 '255*256+255
  31. Range("E5").Interior.Color = &HCC00FFFF
  32. '金色
  33. Range("F1") = "金色"
  34. Range("F2").Interior.ColorIndex = 44
  35. Range("F3").Interior.Color = RGB(255, 204, 0)
  36. Range("F4").Interior.Color = 52479 '204*256+255
  37. Range("F5").Interior.Color = &HCC00CCFF
  38. End Sub

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多