2014-06-10 82 views
8

我試圖逐漸將單元格的背景顏色更改爲黑色,並且我發現Range.Interior.Color方法返回一個Long,它是看似任意。查看MSDN上的文檔,幾乎沒有關於這個數字代表什麼。有沒有辦法從這麼長時間內返回RGB值?我實際上需要與RGB(紅,綠,藍)功能相反的功能。從Range.Interior.Color(或任何其他顏色屬性)返回RGB值

回答

12

答案很簡單:

沒有內置的功能,這。你必須編寫你自己的功能。

龍答:

長是從Interior.Color屬性返回的是,我們是用來在HTML例如看到了顏色的典型十六進制數字的十進制轉換「66FF66」。此外,可以傳遞常量xlNone(-4142)以將單元格設置爲在背景中不具有顏色,但此類單元格從Get屬性標記爲白色RGB(255, 255, 255)。知道這一點,我們可以編寫一個函數返回一個或所有適當的RGB值。

幸運的是,艾倫懷亞特先生在這裏已經做到了!

Determining the RGB Value of a Color

26

即 「任意」 數目是RGB值(R * 256^2 + G * 256 + B)和十六進制顏色值的爲十進制數的變換(底座16的數學組合以10爲底),具體取決於您想要查看的方式。只是不同的基地。以下是我在爲Excel編寫的XLAM插件文件中使用的方法。這種方法已經派上用場了很多次了。我已將文檔包含在我的插件文件中。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
' Function   Color 
' Purpose    Determine the Background Color Of a Cell 
' @Param rng   Range to Determine Background Color of 
' @Param formatType Default Value = 0 
'      0 Integer 
'      1 Hex 
'      2 RGB 
'      3 Excel Color Index 
' Usage    Color(A1)  --> 9507341 
'      Color(A1, 0) --> 9507341 
'      Color(A1, 1) --> 91120D 
'      Color(A1, 2) --> 13, 18, 145 
'      Color(A1, 3) --> 6 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
Function Color(rng As Range, Optional formatType As Integer = 0)  As Variant 
    Dim colorVal As Variant 
    colorVal = Cells(rng.Row, rng.Column).Interior.Color 
    Select Case formatType 
     Case 1 
      Color = Hex(colorVal) 
     Case 2 
      Color = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536) 
     Case 3 
      Color = Cells(rng.Row, rng.Column).Interior.ColorIndex 
     Case Else 
      Color = colorVal 
    End Select 
End Function 
10

高興地看到,悅先生使用顏色的快速方法爲RGB

R = C Mod 256 
G = C \ 256 Mod 256 
B = C \ 65536 Mod 256 

這是許多時候,比使用十六進制海峽與更快的左邊中旬右 一些建議

2

另一個答案不適合我。我發現:

R = C And 255 
G = C \ 256 And 255 
B = C \ 256^2 And 255 

它工作正常。

+0

你和哈利都工作。 F.i. RGB(50,100,200)= RGB(50,100,200)Mod 256的紅色值和RGB的紅色值(50,100,200)= RGB(50,100,200)和255' – Mill

相關問題