繁体   English   中英

VBA代码隐藏/取消隐藏图表/框

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM