скрыть листы в массиве именованных диапазонов - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть динамический именованный диапазон, который предоставляет имена листов в списке (скажем, A2 = Австрия, A3 = Германия, A4 = Польша). Этот список может различаться по размеру в зависимости от пользователя, поэтому у меня есть смещение в именованномдиапазон для захвата всех ячеек в столбце A с именем в нем.

Я хотел бы использовать оператор IF, чтобы очень скрыть определенные листы на основе этого именованного диапазона.

что-то вроде:

Public Sub test()
    Sheets(Array(Range("MyRange"))).Visible = xlVeryHidden
End Sub

с вышеприведенным я получаю следующую ошибку: Ошибка времени выполнения '13': несоответствие типов

любые предложения, пожалуйста.

Спасибо, Пол

Ответы [ 3 ]

1 голос
/ 01 февраля 2011

Вы можете просто зациклить на именованном диапазоне

Sub Test()
dim oCell as range
for each oCell in Range("MyRange)
Sheets(oCell.value).visible=xlVeryHidden
next oCell
end sub
1 голос
/ 01 февраля 2011

Листы не могут принимать массив имен в качестве аргумента, он объявлен как Листы (индекс), поэтому вам, к сожалению, придется циклически просматривать имена и скрывать листы по одному.

Попытка:

Sub test()
    Dim rngCell As Range
    For Each rngCell In Range("MyRange")
        Sheets(rngCell.Value).Visible = xlSheetVeryHidden
    Next rngCell
End Sub
0 голосов
/ 02 февраля 2011

Вы можете передать массив в Sheets (), но если вы получаете его из вертикального диапазона, вам нужно сначала перенести его.

Это работает для меня:

ThisWorkbook.Sheets (Application.Transpose (Sheet3.Range ("SHEETS"). Value)). Visible = _ xlSheetHidden

Где SHEETS содержит значения «Лист1» и «Лист2». К сожалению, по некоторым причинам, кажется, что он работает только с xlSheetHidden, а не с xlSheetVeryHidden ....

Тим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...