2014-02-06 319 views
2

我想使用公式或VGA在Excel工作表中獲取單元格的背景顏色。 我發現這個UDF:獲取Excel單元格背景顏色十六進制值

Public Function BColor(r As Range) As Long 
BColor = r(1).Interior.ColorIndex 
End Function 

它可以用於像這樣的小區:=BColor(A1) 我不熟悉VGA,它返回一些長期價值,我不知道是否有可能獲得十六進制值直。謝謝!

+0

爲什麼要投票? :-s –

+1

可能會導致只用不到10秒就可以找到您的問題的答案使用谷歌 – 2014-02-06 08:54:49

+0

我沒有downvote你,但我想這是因爲缺乏研究。你有沒有搜索谷歌如何在VBA中將Long Value轉換爲Hex?有很多例子。 –

回答

5

試試這個

Function HexCode(Cell As Range) As String 
    HexCode = Right("000000" & Hex(Cell.Interior.Color), 6) 
End Function 
3

我想上面的代碼,但它返回的BGR值(建議)

但是,此代碼返回一個RGB十六進制值。 我只是不能讓它自動更新。

Public Function HexCodeRGB(cell As Range) As String 
HexCodeBGR = Right("000000" & Hex(cell.Interior.Color), 6) 
HexCodeRGB = Right(HexCodeBGR, 2) & Mid(HexCodeBGR, 3, 2) & Left(HexCodeBGR, 2) 
End Function 

好運

0

基於最佳投答案,這裏是一個真實的案例,我的情況的一個例子。 我提供它作爲一個宏和一個截圖。我希望這可以幫助別人。

VBA宏很簡單,但我會粘貼在這裏。如果你看看附件,你會看到,我已重複該列西班牙語清除顏色名稱和列標題爲「色」時,我並運行此宏:

Sub printHEXBGColor() 
Set r = Range("myRange") 
Dim HEXcolor As String 
Dim i As Long 

For i = 1 To r.Rows.Count 
    r.Cells(i, 1).Activate 
    HEXcolor = "#" + Right("000000" & Hex(ActiveCell.Interior.Color), 6) 
    ActiveCell = HEXcolor 
Next i 
End Sub 

Screenshot of the result

相關問題