颜色RGB到html颜色值

时间:2013-11-14 17:07:47

标签: vba colors

我想获取Color的十六进制值。问题是在vba中,值.Font.Color.RGB以十进制形式出现,当我将该值更改为十六进制时,我得不到我需要的值。

例如:

vba中的颜色蓝紫色为14822282。 在html中,值为#8A2BE2 但是当我使用Hex(14822282)方法时,我得到了E22B8A。

如何获得正确的数字?

2 个答案:

答案 0 :(得分:1)

它无法工作的原因是因为您需要使用按位运算将该十进制值拆分为3个组件(R,G,B),然后将每个组件分别转换为十六进制。然后,您可以将十六进制值连接在一起,这将获得HTML十六进制值。

以下是一个例子:

要获得绿色组件,你会做一点这样的转变:

14822282 >> 8

只取字节值并将其转换为十六进制,这将为您提供0x2B,这是RGB的G分量。

要获得红色分量,请向右移16位:

14822282 >> 16

这将为您提供十六进制的0xE2。

要获得蓝色分量,请向右除掉远8位以外的所有位。你会得到0x8A。

这就是#E22B8A。

答案 1 :(得分:1)

试试这个

Sub Sample()
    Dim hexCode

    hexCode = Hex(14822282)

    For Index = 1 To Len(hexCode)
        If InStr("01234567890ABCDEF", Mid$(hexCode, Index, 1)) = 0 Then
            MsgBox "Not a valid hex color code"
            Exit Sub
        End If
    Next

    If Len(hexCode) = 6 Then _
    Debug.Print "&H00" & Right(hexCode, 2) & _
    Mid$(hexCode, 3, 2) & Left(hexCode, 2) & "&"
End Sub

enter image description here