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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 15:46   #1
RUBEY
Пользователь
 
Регистрация: 19.03.2007
Сообщений: 53
По умолчанию Скрыть листы по запросу

Есть большая книга из более чем 100 листов. Для удобства надо по выбору из выпадающего списка, в котором перечислены все имена листов, скрыть все листы кроме выбраного. Это будет намного удобней, чем листать всю книгу. Кроме того желетельно иметь кнопку для отображения всех листов книги. Если кто поможет, то буду чрезвычайно благодарен, так как своих знаний не хватает для такой реализации.
С уважением - Рубей.
RUBEY вне форума
Старый 14.01.2009, 16:04   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Может, так подойдёт?
Назначьте этим макросам кнопки на панели инструментов, или горячие клавиши.

Код:
Sub СкрытьВсеЛистыКромеАктивного()
    For Each sh In ActiveWorkbook.Worksheets
        sh.Visible = sh.Name = ActiveSheet.Name
    Next
End Sub

Sub ОтобразитьВсеЛисты()
    For Each sh In ActiveWorkbook.Worksheets: sh.Visible = True: Next
End Sub
EducatedFool вне форума
Старый 14.01.2009, 17:02   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Я немного доработал предыдущий ответ. Посмотрите, может понравиться!

Назначте макросу какую-нибудь комбинацию клавиш, что бы можно было его запускать с текущего листа, только в этом случае при выборе "Скрыть все кроме активного", вы останетесь на этом же листе.
Вложения
Тип файла: rar Книга1.rar (15.8 Кб, 72 просмотров)

Последний раз редактировалось Maxx; 14.01.2009 в 17:20.
Maxx вне форума
Старый 14.01.2009, 17:22   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию 2 Maxx

Совет на будущее: удаляйте из своих файлов ссылки на всякие библиотеки, а то на некоторых компах Ваши макросы не заработают.
В данном файле была ссылка на компонент Ref Edit Control, который на моём компе изволил отсутствовать.
Из-за этого макросы не запускались. Но это всё мелочи.

Ну а так, в общем-то, неплохо.

Вот только это лишнее:
Код:
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Список"
Range("A1").Select
Для того, чтобы скрыть или отобразить листы, уж точно не требуется создавать новый лист.

Кстати, выделять ячейки тоже совсем не обязательно.

Весь макрос "Выбор_Листа" можно заменить таким кодом:
Код:
Sub Выбор_Листа()
    For Each sh In ThisWorkbook.Worksheets
        UserForm1.ComboBox1.AddItem sh.Name
    Next
    UserForm1.Show
End Sub
EducatedFool вне форума
Старый 14.01.2009, 17:36   #5
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Вы ПРОФИ, а я новичок. Многого не знаю, ну а за:

Цитата:
Ну а так, в общем-то, неплохо.
спасибо. Старался!


Цитата:
удаляйте из своих файлов ссылки на всякие библиотеки, а то на некоторых компах Ваши макросы не заработают.
В данном файле была ссылка на компонент Ref Edit Control, который на моём компе изволил отсутствовать
про это я не вкурсе, и откуда надо удалять эти ссылки тоже не знаю, может подскажите?

Вот итоговый вариант:
Вложения
Тип файла: rar Выбор листа.rar (15.0 Кб, 42 просмотров)

Последний раз редактировалось Maxx; 14.01.2009 в 17:43.
Maxx вне форума
Старый 14.01.2009, 17:45   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
откуда надо удалять эти ссылки тоже не знаю, может подскажите?
В редакторе VBA жмём Tools - References
Появляется окно:




Убираете лишние галочки.
В данном случае достаточно оставить только эти:



В данном случае проблема была в том, что среди прочих была ссылка на компонент Ref Edit Control из Office 2007, который у меня не установлен. Для данного проекта этот компонент не нужен.


Цитата:
Вы ПРОФИ
Я не профи... Я не способен написать даже простейшую формулу
EducatedFool вне форума
Старый 14.01.2009, 18:07   #7
RUBEY
Пользователь
 
Регистрация: 19.03.2007
Сообщений: 53
По умолчанию Не запускается макрос

Последний вариант макроса выдает ошибку
CAN'T FIND PROJECT OR LIBRARY
И что-то он подозрительно короткий по тексту.
Рубей
RUBEY вне форума
Старый 14.01.2009, 18:21   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Последний вариант макроса выдает ошибку
CAN'T FIND PROJECT OR LIBRARY
Решение проблемы описано в предыдущем посте.


Цитата:
И что-то он подозрительно короткий по тексту.
Можно ещё короче:
(кнопки ОК и ОТМЕНА убрал, так как не понял, для чего они предназначены)
При выборе имени листа в выпадающем списке этот лист автоматически активируется.
Вложения
Тип файла: rar Выбор листа.rar (11.0 Кб, 60 просмотров)
EducatedFool вне форума
Старый 15.01.2009, 11:28   #9
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Конечно же Ваш код компактней, но зато он не позволяет выбрать из списка скрытый лист
Maxx вне форума
Старый 15.01.2009, 16:24   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от Maxx Посмотреть сообщение
Конечно же Ваш код компактней, но зато он не позволяет выбрать из списка скрытый лист
Нужно придумать метод, чтобы получать все имена листов при загрузке из в ComboBox вне зависимости от состояния видимости.
Правда, как потом быть с активным листом, скрывать его или оставлять?

Кстати, Maxx, а в какой версии офиса идет работа? Можно сделать панель инструментов (для 2003) или динамическое меню (для 2007)
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.01.2009 в 16:28.
viter.alex вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение по запросу Jura_71 БД в Delphi 2 07.01.2009 04:04
вопрос по SQL запросу Anton_S БД в Delphi 5 09.06.2008 01:47
Переименовались Листы valerij Microsoft Office Excel 2 24.05.2008 21:35
Хелп по ссылкам на другие листы frozencat Microsoft Office Excel 3 15.11.2007 19:18
Разнести информацию на разные листы asale Microsoft Office Excel 3 13.06.2007 20:16