获取Excel单元格背景颜色十六进制值

时间:2014-02-06 08:37:24

标签: excel vba excel-vba

我想使用UDF公式或VBA获取Excel工作表中单元格的背景颜色。 我找到了这个UDF:

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

它可以在单元格中使用:=BColor(A1) 我不熟悉VBA,这会返回一些长值,我想知道是否可以直接获取十六进制值。谢谢!

3 个答案:

答案 0 :(得分:5)

试试这个

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

答案 1 :(得分:3)

我尝试了上面的代码,但它返回了一个BGR值(如建议的那样)

但是,此代码返回RGB Hex值。 我无法让它自动更新。

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
祝你好运

答案 2 :(得分:0)

基于最佳投票答案,这是一个真实案例,我的案例。 我提供它作为宏和截图。我希望这可以帮助别人。

VBA宏很简单,但我会在这里粘贴它。如果您查看附件,您将看到我已复制该列并清除了西班牙语中的颜色名称并标题为“#34; color"”列,我确实运行了此宏:

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