因此,我正在尝试编写代码以根据单元格值更改多种形状的颜色。
我使用的是一种简单的方法,如果我运行代码,并且形状名称与单元格中写入的名称匹配,则会突出显示该名称,否则它将变灰。我已经按国家/地区获得了形状名称(基本上是像“中国”,“德国”,“英国”等名称一样的形状);我正在使用的代码如下:
Sub Box_Colour()
Dim Shape_Name As String
Shape_Name = ActiveSheet.Range("N8").Value
ActiveSheets.Shapes(Shape_Name).Fill.ForeColor.RGB = RGB(237, 125, 49)
ActiveSheets.Shapes(Shape_Name).Fill.ForeColor.RGB = RGB(166, 166, 166)
End Sub
但是我得到的错误是“需要对象”;你能帮我吗?
PS-目前,我正在逐页进行操作,但是有什么办法可以一次为所有工作表运行此代码?就像每张纸上的形状名称一样;因此N8的值在德国表中为“德国”,在中国表中为“中国”。也让我知道:)预先感谢!
答案 0 :(得分:0)
在工作表和每个工作表的Shapes
集合上遍历:
Sub Box_Colour()
Dim ws As Worksheet, shp As Shape, nm As String
For Each ws In ThisWorkbook.Worksheets
nm = ws.Range("N8").Value
For Each shp In ws.Shapes
shp.Fill.ForeColor.RGB = _
IIf(shp.Name = nm, RGB(237, 125, 49), RGB(166, 166, 166))
Next shp
Next ws
End Sub