从单元格中读取颜色为图表上色

在vba中,我想从工作表中的单元格中读取颜色,以在条形图中为特定的条形着色。 我的问题是,我有4F9F92格式的颜色,但阅读它makro我需要使用从单元格的Excel颜色代码4076202。 有没有办法在vba代码中转换两种格式…? 我知道在眼前的窗口我可以做到

?rgb(170,50,62) 

这导致

 4076202 

在vba代码中,我使用以下命令读取颜色

 ser.Points(p).Interior.Color = arr(s, p) 

其中s和p是通过具有不同颜色代码的arrays运行的两个运行variables。

有没有什么机会,我可以设置一个函数,每个单元格,我input一个值,如4F9F92自动转换为格式4076202,这样的makro可以阅读它?

实际上rgb(170,50,62)hex等价为AA323E ,转换为Long的值为4076202

1) RGB函数采用红色,绿色,蓝色分量,它们是0-255范围内的Decimal numbers ,可以从HEX值中剥离

2)将这些剥离值传递给RGB function以获得表示RGB颜色值的Long whole number

 Function Hex2RGB(hex As String) As String Red = Val("&H" & Mid(hex, 1, 2)) Green = Val("&H" & Mid(hex, 3, 2)) Blue = Val("&H" & Mid(hex, 5, 2)) Debug.Print RGB(Red, Green, Blue) Hex2RGB = RGB(Red, Green, Blue) End Function 

并在你的macros中使用它如下,假设你在Cell A1AA323E

 Sub ColorMe() Range("B1").Interior.Color = Hex2RGB(Range("A1")) End Sub 

如果c是其中有hex颜色代码的单元格,格式为#FFFFFF

以下在Excel中的VBA可以直接将其转换为RGB

 RGB(Application.WorksheetFunction.Hex2Dec(Mid(c.Value, 2, 2)), Application.WorksheetFunction.Hex2Dec(Mid(c.Value, 4, 2)), Application.WorksheetFunction.Hex2Dec(Mid(c.Value, 6, 2))) 

我使用工作表函数Hex2Dec,将hex代码的三个组成部分转换为十进制,并使用RGB函数返回您可以使用的长/ rgb颜色代码。

更新 – 用法示例:

 Sub ColorSwatch() Dim c As Range for each c in selection c.Interior.Color = RGB(Application.WorksheetFunction.Hex2Dec(Mid(c.Value, 2, 2)), Application.WorksheetFunction.Hex2Dec(Mid(c.Value, 4, 2)), Application.WorksheetFunction.Hex2Dec(Mid(c.Value, 6, 2))) next End Sub