Excel 将形状颜色设置为单元格颜色
我正试图在Excel仪表板上创建破布级的“交通灯”。我在背景中有一个有条件格式化的单元格,设置为从绿色到红色的三色刻度。我希望我的仪表板上的“红绿灯”形状随着单元格颜色的变化而变化 到目前为止,我有以下代码:Excel 将形状颜色设置为单元格颜色,excel,vba,Excel,Vba,我正试图在Excel仪表板上创建破布级的“交通灯”。我在背景中有一个有条件格式化的单元格,设置为从绿色到红色的三色刻度。我希望我的仪表板上的“红绿灯”形状随着单元格颜色的变化而变化 到目前为止,我有以下代码: Sub ChangeTrafficLights() Dim light As Shape Dim colour As Range Set light = Worksheets(3).Shapes.Range(Array("Light1")) Set colour = Wor
Sub ChangeTrafficLights()
Dim light As Shape
Dim colour As Range
Set light = Worksheets(3).Shapes.Range(Array("Light1"))
Set colour = Worksheets(2).Range("D95")
light.Fill.ForeColor.RGB = colour.DisplayFormat.Interior.Color
End Sub
第4行出现了一个类型不匹配错误
我走错方向了吗?可以链接颜色吗?您需要将
灯光
变量设置为对象
而不是形状
即,您的代码将是:
Dim light As Object
Dim colour As Range
...
然后,您可以将变量设置为形状数组/范围。有关更多信息,请参见此处:您需要将
灯光
变量设置为对象
而不是形状
即,您的代码将是:
Dim light As Object
Dim colour As Range
...
然后,您可以将变量设置为形状数组/范围。有关更多信息,请参见此处:按如下方式设置形状对象:
Set light = thisWorkbook.Worksheets(3).Shapes("The Name of your Shape")
现在,属性.Interior.Color
不会返回RGB格式的值。要设置形状的.RGB
属性,需要RGB格式的颜色,例如(255255255)
所以,您需要的是以RGB格式获取D95
单元格的颜色。不幸的是,据我所知,这是不容易获得的
然而,你可以参考和
当获得所需的3个值时,可以如下设置形状的颜色:
light.Fill.ForeColor.RGB =RGB(R,G,B)
TL;DR
Sub trafficLight()
Dim sht As Worksheet
Dim colour As Range
Dim light As Shape
Dim C As Long
Dim R As Long
Dim G As Long
Dim B As Long
Set sht = ThisWorkbook.Worksheets("The Name of your Worksheet")
Set colour = sht.Range("D95")
Set light = sht.Shapes("The name of your shape")
'''''''''''''Credits to Mr. Allen Wyatt''''''''''''''''''
C = colour.DisplayFormat.Interior.Color '
R = C Mod 256 '
G = C \ 256 Mod 256 '
B = C \ 65536 Mod 256 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
light.Fill.ForeColor.RGB = RGB(R, G, B)
End Sub
在输出示例下方,其中形状的颜色跟随第一个单元格的颜色
将形状对象设置为:
Set light = thisWorkbook.Worksheets(3).Shapes("The Name of your Shape")
现在,属性.Interior.Color
不会返回RGB格式的值。要设置形状的.RGB
属性,需要RGB格式的颜色,例如(255255255)
所以,您需要的是以RGB格式获取D95
单元格的颜色。不幸的是,据我所知,这是不容易获得的
然而,你可以参考和
当获得所需的3个值时,可以如下设置形状的颜色:
light.Fill.ForeColor.RGB =RGB(R,G,B)
TL;DR
Sub trafficLight()
Dim sht As Worksheet
Dim colour As Range
Dim light As Shape
Dim C As Long
Dim R As Long
Dim G As Long
Dim B As Long
Set sht = ThisWorkbook.Worksheets("The Name of your Worksheet")
Set colour = sht.Range("D95")
Set light = sht.Shapes("The name of your shape")
'''''''''''''Credits to Mr. Allen Wyatt''''''''''''''''''
C = colour.DisplayFormat.Interior.Color '
R = C Mod 256 '
G = C \ 256 Mod 256 '
B = C \ 65536 Mod 256 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
light.Fill.ForeColor.RGB = RGB(R, G, B)
End Sub
在输出示例下方,其中形状的颜色跟随第一个单元格的颜色
尝试此选项:
将灯光作为对象变暗
尝试此选项:将灯光作为对象变暗