根据单元格值为工作表中的多种形状着色

时间:2020-06-29 14:46:46

标签: excel vba

因此,我正在尝试编写代码以根据单元格值更改多种形状的颜色。

我使用的是一种简单的方法,如果我运行代码,并且形状名称与单元格中写入的名称匹配,则会突出显示该名称,否则它将变灰。我已经按国家/地区获得了形状名称(基本上是像“中国”,“德国”,“英国”等名称一样的形状);我正在使用的代码如下:

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的值在德国表中为“德国”,在中国表中为“中国”。也让我知道:)预先感谢!

1 个答案:

答案 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