Как скрыть листы в книге Excel на основе имен вкладок в таблице

У меня есть таблица под названием «HideSheets» (один столбец), в которую листы добавляются или иногда удаляются. Как сослаться на таблицу в

Sub HideSheets()
    Dim cell As Range
    On Error Resume Next
    For Each cell In Sheets("Index").Range("HideSheets")
        ' Hide sheets
        Sheets(cell.Value).Visible = False

End Sub

person Brisbanebob    schedule 14.02.2017    source источник
comment
For Each также должен иметь Next внизу кода для зацикливания (т.е. непосредственно перед End Sub)   -  person CallumDA    schedule 15.02.2017


Ответы (1)


For Each также должна иметь команду Next

Sub HideSheets()
    Dim r As Range
    On Error Resume Next
    For Each r In Sheets("Index").Range("HideSheets")
        ' Hide sheets
        Sheets(r.Value).Visible = xlSheetHidden
    Next r
End Sub

Вместо использования On Error Resume Next проверьте условия, которые могут вызвать ошибку, и обработайте их надлежащим образом. Например, вернуть пользователю сообщение об ошибке, объясняющее возникновение следующих ошибок:

  1. Пользователь попытался скрыть все листы в книге
  2. r.Value не является допустимым именем листа.
person CallumDA    schedule 15.02.2017
comment
Дальнейшее чтение по обработке ошибок здесь: stackoverflow.com /вопросы/1038006/ - person CallumDA; 15.02.2017