Visual Basic Excel字体颜色

时间:2015-01-11 01:42:56

标签: excel excel-vba vba

我想确定当前单元格的颜色。 当我

Debug.Print ActiveCell.Font.Color

我找回了一个号码。在这种情况下24832
如果我只有这个数字,我如何确定这种颜色的正确RGB值?
是否有一些函数将int转换为RGB(0,0,0)?

2 个答案:

答案 0 :(得分:4)

没有内置的VBA转换为RGB,您需要自己编写。

试试这个

Function ColorToRgb(Color As Variant) As Variant
    ' return #Value Error for invalid colors
    If Color < 0 Or Color > 16777215 Then
        ColorToRgb = CVErr(xlErrValue)
    End If

    ReDim Res(1 To 3) As Variant
    ' Treating Color as a 24 bit number
    Res(1) = Color Mod 256          ' Red value: left most 8 bits
    Res(2) = Color \ 256 Mod 256    ' Green value: middle 8 bits
    Res(3) = Color \ 65536 Mod 256  ' Blue value: right most 8 bits

    ColorToRgb = Res
End Function

答案 1 :(得分:1)

这是RGB组件的更快的位掩码:

Function RGBComp(Clr As Variant) As Variant
    If Clr >= 0 Or Clr <= 16777215 Then
        RGBComp = Array(Clr And &HFF, (Clr And &HFF00&) \ &H100&, (Clr And &HFF0000) \ &H10000)
    Else
        RGBComp = CVErr(xlErrValue)
    End If
End Function