VBA代码来隐藏/取消隐藏图表/框
我写了一个vba代码来隐藏/取消隐藏我分配给“button”的活动工作表中的图表/列表框,或者只是从Excel中的“插入”选项卡拉出的形状。 此代码适用于1形状,但我不能让它与多个工作。 我是VBA新手,所以我不确定所有的语法细节。 这是我有:
Sub OverviewB() With ActiveSheet.Shapes("Rounded Rectangle 1").TextFrame2.TextRange.Characters If .Text = "Hide Overview" Then .Text = "Show Overview" ActiveSheet.Shapes("Chart 20", "List Box 1", "Chart 19", "List Box 3", "Chart 22", "List Box 4", "Chart 24", "List Box 5").Visible = False Else .Text = "Hide Overview" ActiveSheet.Shapes("Chart 20", "List Box 1", "Chart 19", "List Box 3", "Chart 22", "List Box 4", "Chart 24", "List Box 5").Visible = True End If End With End Sub
我的图表/列表框名称中间有一个分隔符“_”,所以它不是很宽,但是我把它拿出来,因为我认为这可能会导致一些错误。
任何人都可以看到语法错误在这里? 我收到的错误是: “运行时错误450”:错误数量的参数或无效的财产assingment。
错误消息给你一些提示, 错误的参数数量或无效的财产assingment。 您正在向.Shapes
属性发送太多参数。
Worksheet.Shapes
属性集合只接受一个参数,并返回一个Shapes
对象 ,它是Shape
对象的集合。 从dox,
使用
Shapes(index)
,其中index
是形状的名称或索引号,返回一个单一的形状对象。
并进一步:
使用
Shapes.Range(index)
(其中index
是形状的名称或索引编号或形状名称或索引编号的数组)来返回表示Shapes集合的子集的ShapeRange
集合。
您需要设置数组中的元素并指定范围内的项目
ActiveSheet.Shapes.Range(Array("Chart 20", "List Box 1", "Chart 19", "List Box 3", "Chart 22", "List Box 4", "Chart 24", "List Box 5")).Visible = True