乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

      作者:iamlaosong

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

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

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

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

      其中R、G、B是紅綠藍三種顏色十進制值。

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

      &HBBGGRR,其中RR、GG、BB是紅綠藍三種顏色十六進制值。

      如紅色(ColorIndex=3)即RGB(255,0,0)可以用16進制數(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. '藍色
      22. Range("D1") = "藍色"
      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

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

      這是什么情況?難道16進制表示有什么問題嗎?將該語句換成:

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

       效果完全相同。

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

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

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

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

      VBA沒有無符號整數(shù),所以用VBA處理無符號整數(shù)(比如移位),會碰到與上面類似的問題,這一點要注意。真要處理,就用Byte類型吧。

      最后,完整的看下效果吧。為了統(tǒng)一并防止出錯,十六進制值都用CC開頭,后跟6位顏色代碼(用什么十六進制數(shù)開頭都可以,只要不是0就行,用CC是因為顏色的英文是C開頭)。代碼如下:

      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. '藍色
      21. Range("D1") = "藍色"
      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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多