我想使用UDF公式或VBA获取Excel工作表中单元格的背景颜色。 我找到了这个UDF:
Public Function BColor(r As Range) As Long
BColor = r(1).Interior.ColorIndex
End Function
它可以在单元格中使用:=BColor(A1)
我不熟悉VBA,这会返回一些长值,我想知道是否可以直接获取十六进制值。谢谢!
答案 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