This function, which converts a color value into a string suitable for HTML, formats an RGB color value, palette index, or system color constant. You accomplish this by breaking out the individual color values for red, green, and blue, then recombining them in the opposite order Windows likes, so HTML renderers will provide the correct color. The call to OleTranslateColor ensures you’re using an actual color reference, by dereferencing system color constants or palette indices:
Public Function HtmlHexColor(ByVal ColorValue As _ Long) As String Dim r As Byte Dim g As Byte Dim b As Byte ' convert color if needed Call OleTranslateColor( _ ColorValue, 0&, ColorValue) ' break out color bytes r = (ColorValue Mod &H100) g = (ColorValue &H100) Mod &H100 b = (ColorValue &H10000) Mod &H10000 ' format the return string HtmlHexColor = "#" & _ Right$("0" & Hex$(r), 2) & _ Right$("0" & Hex$(g), 2) & _ Right$("0" & Hex$(b), 2)End Function