用变量改变形状颜色

时间:2017-10-27 15:08:58

标签: excel vba rgb

我在改变形状的颜色方面遇到了问题。我有这个颜色数据库

BK = RGB(0, 0, 0) 'Black
BN = RGB(140, 78, 2) 'Brown
RD = RGB(239, 2, 2) 'Red
OG = RGB(255, 192, 0) 'Orange
YE = RGB(255, 255, 0) 'Yellow
GN = RGB(0, 176, 80) 'Green
BU = RGB(0, 176, 240) 'Blue
VT = RGB(112, 48, 160) 'Violet
GY = RGB(113, 113, 113) 'Grey
WH = RGB(255, 255, 255) 'White

这段代码读取单元格中的一些数据并返回前两个字符串成员。

color_value1 = .Range("D9").Value
wire_color1 = Mid(color_value1, 1, 2)

wire_color1返回WH,GY,VT等文本,我想根据wire_color1返回的内容主动更改形状的颜色。问题是:

m.Shapes("wire_1").Fill.ForeColor.RGB = wire_color1 

不起作用,我不知道还能做什么

谢谢你!

1 个答案:

答案 0 :(得分:1)

您不能使用表示其名称的字符串来引用变量。您需要构建一个函数(可能使用Select Case),它将字符串(例如)“BK”映射到RGB值。

m.Shapes("wire_1").Fill.ForeColor.RGB = MyRGB(wire_color1)

功能:

Function MyRGB(clr as String)

    Select Case clr
        Case "BK": MyRGB = RGB(0, 0, 0) 'Black
        Case "BN": MyRGB  = RGB(140, 78, 2) 'Brown
        Case "RD": MyRGB  = RGB(239, 2, 2) 'Red
        'etc...
    End Select

End function