Excel - VBA - скрытие всех листов кроме перечисленных
Всем привет!
В книге Excel есть 3 листа, которые должны отображаться всегда, а также N листов, которые нужно скрывать. Скрытые листы должны отображаться только при переходе по ссылке из первых трех. Нагуглил такой код Код:
Private Sub Worksheet_Activate() Код:
If InStr(1, ws.Name, "Main", vbTextCompare) = 0 Then Спасибо! |
Честно говоря, не очень понял суть, но по сравнению я бы высказался так — имеющийся код:
Код:
If InStr(1, ws.Name, "Main", vbTextCompare) = 0 Then Можно делать последовательное сравнение: Код:
If StrComp(ws.Name, "Main", vbTextCompare) = 0 Or StrComp(ws.Name, "Main1", vbTextCompare) = 0 Or StrComp(ws.Name, "Main2", vbTextCompare) = 0 Then Код:
If StrComp(Left(ws.Name, Len("Main")), "Main", vbTextCompare) = 0 Then Код:
Dim objRegExp As Variant |
Вложений: 1
Iska, мне неважно, будет он искать часть имени или все имя. Имена будут другие, их можно хардкодить.
Этот вариант работает, если во всех именах отображаемых листов будет Main Код:
If InStr(1, ws.Name, "Main", vbTextCompare) = 0 Then Последовательное сравнение через Or не работает, оно скрывает листы Main или вылетает с ошибкой. Прикрепляю файл, код в первом листе. |
Цитата:
Код:
If Not (StrComp(ws.Name, "Main1", vbTextCompare) = 0 Or StrComp(ws.Name, "Main2", vbTextCompare) = 0 Or StrComp(ws.Name, "Main3", vbTextCompare) = 0) Then Цитата:
Код:
Private Sub Worksheet_Activate() |
a_axe, вот так я это и представлял, спасибо!
С условием not понял. |
Вложений: 1
Как я понимаю, процедуру «Worksheet_Activate()» придётся поместить в модуль каждого рабочего листа, кроме скрытых «Screen1» («Screen2», «Screen3» и т.д.), и процедуру «Worksheet_FollowHyperlink()» — в модуль каждого листа с подобными гиперссылками. Мне это не очень нравится.
Ещё мне не очень нравится то, что скрытые листы легко отображаются по команде меню (в моей версии \Формат\Лист\Отобразить…). Это явным образом противоречит: Цитата:
Посему я предлагаю несколько иной код, размещённый только в одном модуле — «ThisWorkbook»: Скрытый текст
Код:
Option Explicit И сама Рабочая книга в архиве: Файл 147892. Разумеется, если я правильно понял потребности. |
Цитата:
Цитата:
Меня тут другой вопрос заинтересовал. По поводу этого кода Код:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) |
Цитата:
Код:
If Target.Range.Column = 1 Then ' Если гиперссылка расположена в столбце «A», то… |
Iska, да, именно это, спасибо!
|
Возникла необходимость изменить функциональность скрипта (дублирую пост 4)
Код:
Private Sub Worksheet_Activate() Список А - листы всегда отображаются (strNames) Список Б (условный) - все остальные листы, которые отображаются при переходе по ссылке из списка А и скрываются при возвращении на лист из списка А Вместо этого нужно не скрываются до закрытия книги. Другими словами, при открытии книги только список А, а во время работы с книгой список А и все листы из списка Б, которые были активированы при переходе из списка А. Поможете? |
Vadikan, можно воспользоваться кодом ниже, благо коллега Iska обозначил оптимальные пути решения :).
Код нужно скопировать в модуль ThisWorkbook. Все листы рабочей книги, не входящие в список листов А, будут скрываться при каждом открытии файла. Код:
Private Sub Workbook_Open() |
Отлично, спасибо!
|
Время: 12:29. |
Время: 12:29.
© OSzone.net 2001-