Excel VBA隐藏多个工作表中的行

时间:2018-10-10 01:51:00

标签: excel vba excel-vba

我想在工作簿的以下标签中隐藏第16和17行:

  • Sheet6(代号)
  • Sheet7(代号)
  • Sheet8(代号)

必须有一种更好,更有效的方式来编写此代码:

    Sub Macro1()
      Sheet6.Rows("16:17").Hidden = True
      Sheet7.Rows("16:17").Hidden = True
      Sheet8.Rows("16:17").Hidden = True
    End Sub

此代码运行时,其花费的时间比我想象的要长。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

有几种方法;我想到的是将它们添加到字典中,并使用For Each遍历字典。

答案 1 :(得分:1)

使用工作表数组...

Dim ws As Worksheet
    For Each ws In Worksheets(Array("Sheet6", "Sheet7", "Sheet8"))
        ws.Rows("16:17").Hidden = True
    Next

答案 2 :(得分:1)

我崇拜阵列-一种可行的解决方案

隐藏

Sub HideRows()
  Dim arr As Variant
  Dim i As Integer
  arr = Array(Sheet6, Sheet7, Sheet8)
  For i = LBound(arr) To UBound(arr)
    arr(i).Rows("16:17").Hidden = True
  Next
End Sub

显示全部

Sub ShowRows()
  Dim arr As Variant
  Dim i As Integer
  arr = Array(Sheet6, Sheet7, Sheet8)
  For i = LBound(arr) To UBound(arr)
    arr(i).Rows.Hidden = False
  Next
End Sub

切换

Sub ToggleRows()
  Dim arr As Variant
  Dim i As Integer
  arr = Array(Sheet6, Sheet7, Sheet8)
  For i = LBound(arr) To UBound(arr)
    arr(i).Rows("16:17").Hidden = Not arr(i).Rows("16:17").Hidden
  Next
End Sub

感谢:
ProfoundlyOblivious深刻地建议并提供了“切换”版本。
GMalc提供了使用数组的另一种方法(我从未见过)的想法。