vba - 显示和隐藏事件工作表中的形状

标签 vba excel

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

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

最佳答案

你离得不远了,这是如何使用循环遍历所有圆角矩形

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

注意如何将“圆角矩形”和i替换为
“圆角矩形1”
“圆角矩形2”
“圆角矩形n”,其中n = i(表示循环运行的次数)

<小时/> 因此,如果您只想隐藏第一个 圆角矩形 1,请在循环中添加 If/else 语句
注意:此代码永远不会显示第一个圆角矩形 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

关于vba - 显示和隐藏事件工作表中的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360067/

相关文章:

excel - 快速简单的宏可根据文本条件删除单个单元格。

arrays - 如何让 VBA 子程序调用一个函数,该函数将数组传递给子程序中的另一个函数

Excel - 如何在整个单元格宽度而不是文本/数字宽度下划线?

python - 在 python 中使用绘图将 .txt 文件的文件夹转换为 .xlsx

excel - 如何使用VBA根据条件删除Excel中的行?

vba - 需要帮助在 VBA 中优化 SUMIFS

excel - 使用 excel 或在 excel 中求平均值

excel - 按变量引用表列

sql - MS Access中查询表达式中的语法错误(缺少运算符)

vba - 比较excel中的两个单元格然后返回行