Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2012, 19:04   #1
Dimka Wumok
Пользователь
 
Регистрация: 18.01.2012
Сообщений: 14
Радость Скрыть/показать выбранный лист

Ув. господа форумчане, у меня возникла проблема со скрытием листов, а их у меня > 31. На работе кто-то ежедневно втихоря портит мне все данные в таблицах и с утра мне головная боль искать ошибку. Я написал VBA код скрыть/показать лист - но он неработает! может у меня просто нехватает мозгов.....
код:
Sub СКРЫТЬПОКАЗАТЬ(ByVal Target As Range)
'сначала делаю все листы с именем "Лист" скрытыми,их например 6 кроме листа "Общее" он у меня последний

Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
If sh.Name Like "Лист*" Then sh.Visible = xlSheetHidden
Next sh
'назначаю ячейку B2 отправной - там укажу номер листа который надо показать
If Target.Address(0, 0) <> "B2" Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Target = "1" Then Sheets("Лист1").Visible = xlSheetVisible
'показать только Лист1, все остальное непоказывать и т.д.
If Target = "2" Then Sheets("Лист2").Visible = xlSheetVisible
If Target = "3" Then Sheets("Лист3").Visible = xlSheetVisible
If Target = "4" Then Sheets("Лист4").Visible = xlSheetVisible
If Target = "5" Then Sheets("Лист5").Visible = xlSheetVisible
If Target = "6" Then Sheets("Лист6").Visible = xlSheetVisible
End Sub
Dimka Wumok вне форума Ответить с цитированием
Старый 03.10.2012, 19:24   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А код у вас вставлен в тот же файл, в котором надо скрывать листы?

Может, сделать проще?
Активируете лист, который НЕ НАДО скрывать, запускаете макрос, - и он скрывает все листы, кроме активного.
Устроит так?

Цитата:
На работе кто-то ежедневно втихоря портит мне все данные в таблицах
Вы уверены?
Как это происходит?
Может, просто не выкладывать файл в общий доступ?
Или поставить пароль на его открытие...
EducatedFool вне форума Ответить с цитированием
Старый 03.10.2012, 19:58   #3
Dimka Wumok
Пользователь
 
Регистрация: 18.01.2012
Сообщений: 14
По умолчанию

Код вставлен в отдельный лист под именем "Общее" данные на нем защищены.
Я бы с удовольствием сделал бы по Вашему, но
этой программой пользуются еще человек (напарник), он тоже заполняет ее, и в ЭКСЕЛЕ разбираеся плохо, умеет только правильно заполнять,мой вариант для него самый простой.А просматривают эту программу где -то 50...60 человек
Dimka Wumok вне форума Ответить с цитированием
Старый 03.10.2012, 20:08   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

поставить пароль. все открывают в режиме чтения, вы с напарником - на полный доступ.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 03.10.2012, 22:22   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

А что-то из этой статьи не подойдет?
Каждому пользователю свой лист/диапазон
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 04.10.2012, 15:55   #6
Dimka Wumok
Пользователь
 
Регистрация: 18.01.2012
Сообщений: 14
Смех

Класс спасибо подходит, только сложно, но возможно
Dimka Wumok вне форума Ответить с цитированием
Старый 05.10.2012, 10:29   #7
Virtuallab
Пользователь
 
Регистрация: 03.08.2012
Сообщений: 38
По умолчанию

Может, так?

Sub СКРЫТЬПОКАЗАТЬ() '(ByVal Target As Range)
'сначала делаю все листы с именем "Лист" скрытыми:
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
If sh.Name Like "Лист*" Then sh.Visible = xlSheetHidden
Next sh

If IsEmpty(ActiveSheet.Range("B2")) Then Exit Sub
'назначаю ячейку B2 отправной - там укажу номер листа который надо показать
If IsNumeric(ActiveSheet.Range("B2")) Then Target = Range("B2").Value Else Exit Sub
On Error Resume Next ' Если введен номер несуществующей страницы.
' Можно, конечно же, сделать проверку на наличие листа, но лень.
Sheets("Лист" & Target).Visible = xlSheetVisible

End Sub
Virtuallab вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать только лист, выбранный в оглавлении, остальные скрыть Alex_ST Microsoft Office Excel 6 07.06.2011 21:28
Показать\скрыть два разных DIV kutt JavaScript, Ajax 5 06.03.2011 12:33
Показать/скрыть edit`ы Rapala Общие вопросы Delphi 3 11.05.2010 09:20
как скрыть/показать TMainMenu blackstersl Общие вопросы Delphi 3 13.06.2009 18:12
Показать и скрыть фигуры Иванов_ДМ Microsoft Office Excel 5 28.04.2009 16:49