Excel VBA, чтобы скрыть строки на нескольких листах - PullRequest
0 голосов
/ 10 октября 2018

Я хочу скрыть строки 16 и 17 на следующих вкладках в своей книге:

  • Лист6 (кодовое имя)
  • Лист7 (кодовое имя)
  • 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 голосов
/ 10 октября 2018

Есть несколько способов;то, что приходит на ум, это добавить их в словарь и использовать For Each для его обхода.

0 голосов
/ 10 октября 2018

Я обожаю ARRAYS - рабочее решение

Скрыть

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 за глубокое предложение и предоставление версии 'Toggle'.
GMalc за предоставление идеи еще одного (пока не замеченного мной) использования массива.

0 голосов
/ 10 октября 2018

Использовать массив рабочих листов ...

Dim ws As Worksheet
    For Each ws In Worksheets(Array("Sheet6", "Sheet7", "Sheet8"))
        ws.Rows("16:17").Hidden = True
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...