Установите объект формы следующим образом:
Set light = thisWorkbook.Worksheets(3).Shapes("The Name of your Shape")
Теперь свойство .Interior.Color
не возвращает значение в формате RGB. Чтобы установить свойство .RGB
фигуры, вам нужен цвет в формате RGB, например. (255,255,255)
.
Итак, вам нужно получить D95
цвет ячейки в формате RGB. К сожалению, насколько я знаю, это недоступно.
Однако вы можете сослаться здесь и здесь .
Когда вы получите 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
Ниже выходного образца, где цвет фигуры соответствует цвету первой ячейки.
![enter image description here](https://i.stack.imgur.com/aF4FJ.png)