在活动工作表中显示和隐藏形状

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 

这是我使用的代码macros的示例

我想知道我们如何才能运行这个代码来隐藏只有矩形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 

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

你不远处,这是如何使用循环遍历所有的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被replace为
"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