[英]Read colour from cell to colour a chart excel
在vba中,我想从工作表中的单元格中读取颜色,以对条形图中的特定条形进行着色。 我的问题是我有4F9F92格式的颜色,但是要在makro中读取它,我需要使用单元格中的excel颜色代码4076202。 有没有办法在vba代码中转换两种格式...? 我知道在即时窗口中我可以做
?rgb(170,50,62)
这导致
4076202
在vba代码中,我使用以下命令读取颜色
ser.Points(p).Interior.Color = arr(s, p)
其中s和p是通过不同颜色代码在数组中运行的两个运行变量。
我是否可以为每个单元格设置一个函数,在其中输入诸如4F9F92之类的值以将其自动转换为格式4076202,以便该makro可以读取它?
实际上rgb(170,50,62)
十六进制等效值为AA323E
,它转换为Long值4076202
1) RGB函数接受红色,绿色,蓝色分量,它们是0-255范围内的Decimal numbers
,可以从十六进制值中去除
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
并按如下所示在宏中使用它,假定Cell A1
有AA323E
Sub ColorMe()
Range("B1").Interior.Color = Hex2RGB(Range("A1"))
End Sub
如果c是其中包含十六进制颜色代码的单元格,则格式为#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将十六进制代码的3个组成部分转换为十进制,并使用RGB函数返回可以使用的long / 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.