Выделите и скройте целые строки между 2 именованными строками

#excel #vba #rows #hidden

#excel #vba #строки #скрытый

Вопрос:

У меня есть две именованные строки с информацией между ними, которые я хотел бы переключать между скрытыми и нескрытыми. Я не хочу использовать группировку данных, потому что информация между именованными строками часто перемещается.

Верхняя строка YEAR2019 и YEAR2020 должны оставаться видимыми все время.

В настоящее время я пытаюсь это сделать, но получаю ошибки и, похоже, не могу заставить его работать —

 Sub HideRowsYEAR2020()
    Range(.Cells(.Range("YEAR2019").Row   1), _
                .Cells(.Range("YEAR2020").Row - 1)).Select
    If Selection.EntireRow.Hidden Then
        Selection.EntireRow.Hidden = False
    Else
        Selection.EntireRow.Hidden = True
    End If
End Sub
  

Ответ №1:

Когда вы используете . , это должно быть внутри инструкции with. Нравится With ActiveSheet

Также Cells() ожидается ссылка на столбец в качестве второго критерия.

 Sub HideRowsYEAR2020()
    With ActiveSheet 'Should change to actual sheet
         With .Range(.Cells(.Range("YEAR2019").Row   1, 1), .Cells(.Range("YEAR2020").Row - 1, 1))
            If .EntireRow.Hidden Then
                .EntireRow.Hidden = False
            Else
                .EntireRow.Hidden = True
            End If
        End With
    End With
End Sub
  

Комментарии:

1. Вместо полного If … Else … End If блока вы можете просто написать .EntireRow.Hidden = Not .EntireRow.Hidden , и он будет переключаться между True и False .