[英]VBA code to hide/unhide charts/boxes
我写了一个VBA代码来隐藏/取消隐藏活动表中分配给“按钮”的图形/列表框,或者只是从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”:错误的参数数量或无效的属性分配。
该错误消息为您提供了一些提示, 错误的参数数量或无效的属性分配。 您向.Shapes
属性发送了太多参数。
Worksheet.Shapes
属性集合采用单个参数,并返回Shapes
对象 ,该对象是Shape
对象的集合。 从dox,
使用
Shapes(index)
(其中index
是形状的名称或索引号)返回单个Shape对象。
并进一步:
使用
Shapes.Range(index)
,其中index
是形状的名称或索引号或形状名称或索引号的数组,以返回一个ShapeRange
集合,该集合表示Shapes集合的子集。
您需要设置数组中的元素并指定范围内的项目
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.