【问题标题】:Show and Hide Shapes in Active Worksheet在活动工作表中显示和隐藏形状
【发布时间】:2013-06-25 22:52:30
【问题描述】:
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 2")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 2")).Visible
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 3")).Visible
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 4")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 4")).Visible
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 5")).Visible = Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle 5")).Visible

这是我使用的代码宏示例

我想知道我们如何才能运行此代码以仅隐藏矩形 1 行

喜欢

For i = 1 To ActiveSheet.Shapes.Count
    ActiveSheet.Shapes.Range(Array("Rounded Rectangle *")).Visible = _ 
    Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle *")).Visible
Next i

我只是不知道如何正确简化

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    你不远了,这就是如何使用循环遍历所有Rounded Rectangles

    Dim i As Long
    For i = 1 To ActiveSheet.Shapes.Count
        ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible = _
        Not ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible
    Next i
    

    注意"Rounded Rectangle " & i 是如何被替换为
    "Rounded Rectangle 1"
    "Rounded Rectangle 2"
    "Rounded Rectangle n" 其中n = i (表示循环运行的次数)


    因此,如果您只想隐藏第一个 Rounded Rectangle 1,则在循环中添加 If/else 语句
    注意:此代码将永远不会显示第一个 Rounded Rectangle 1 并在显示所有其他 Rounded Rectangle 1 之间切换。如果您想始终显示它们,则只需在 else 语句中分配 true
    Dim i As Long
    For i = 1 To ActiveSheet.Shapes.Count
        If i = 1 Then
            ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible = False
        Else
            ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible = _
            ActiveSheet.Shapes.Range(Array("Rounded Rectangle " & i)).Visible
        End If
    Next i
    

    【讨论】:

    • @eathapeking 欢迎您。您可以点击投票柜台下方的绿色复选标记接受答案
    • 它说没有找到那个名字:(
    • 忘记dim i as long :) 但仍然错误“未找到具有特定名称的项目”
    • 检查rounded rectangle 1名称的拼写。确保它的名字确实存在
    • 好的,您可能希望使用 for each 循环而不是数字迭代器。遵循this answer的逻辑
    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多