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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.01.2009, 17:01   #11
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от Maxx Посмотреть сообщение
Конечно же Ваш код компактней, но зато он не позволяет выбрать из списка скрытый лист
Нужно придумать метод, чтобы получать все имена листов при загрузке из в ComboBox вне зависимости от состояния видимости.
Правда, как потом быть с активным листом, скрывать его или оставлять?
Добавлено чуть позже
Вот так это можно сделать для 2007, только в 2003 работать не будет. Даже файл не откроет. Я сделал на скорую руку с кнопкой, а можно сделать динамическое меню, которое будет формироваться каждый раз при открытии файла в зависимости от количества листов в нем.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.04.2009 в 14:44.
viter.alex вне форума
Старый 15.01.2009, 18:00   #12
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Я работаю в 2007.

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

Цитата:
Сообщение от Maxx Посмотреть сообщение
Я работаю в 2007…
Это хорошо. Тогда меню я уже почти сделал, только я не пойму как работает эта строка
Код:
  For Each sh In ActiveWorkbook.Worksheets: sh.Visible = sh.Name = control.Tag: Next
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума
Старый 15.01.2009, 18:25   #14
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию 2 viter.alex

Строка
Код:
sh.Visible = sh.Name = ActiveSheet.Name
работает так:

Проверяется условие sh.Name = ActiveSheet.Name
Результат проверки этого условия (True или False) присваивается свойству sh.Visible

То есть, если лист активный (sh.Name = ActiveSheet.Name), то он остаётся видимым,
иначе он скрывается
EducatedFool вне форума
Старый 15.01.2009, 19:08   #15
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Вот с меню для 2007 Excel. Выглядит так:

Если файл сохранить как шаблон и поставить в автозагрузку, то это будет доступно для всех документов.
Диаграммы не прячет, т.к. в макросе прописаны только листы, для диаграмм нужно отдельную строку писать. Это EducatedFool специалист. Тогда в меню можно будет добавить еще и диаграммы.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.04.2009 в 14:44.
viter.alex вне форума
Старый 16.01.2009, 00:12   #16
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Доделал меню. Теперь просто нужно выбрать имя листа. Если он виден, то все остальные листы будут закрыты, а он сделан активным. Если он не виден, то активный лист будет закрыт, а выбранный активирован.
Для 100 пустых листов работает шустро, а вот если листы заполненные, то страшно подумать…
Выглядит так:
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.04.2009 в 14:44.
viter.alex вне форума
Старый 16.01.2009, 09:50   #17
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Классный инструмент получился!

Только есть косячки:
1. Кнопка "Скрыть все, кроме активного" - не работает;
2. если я нахожусь (например на Листе №65) и выбираю из списка (например Лист №94), то прога скрываает все листы и оставляет меня все-таки на листе №65, а не №94

И конечно было бы совсем идеально, если бы подменю "Листы в данном файле" было бы выпадающим.

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

Цитата:
Сообщение от Maxx Посмотреть сообщение
…Только есть косячки:…
Твоя правда. Добавь эту строку в процедуру Sub HideAllButCurrent(control As IRibbonControl) перед End Sub
Код:
For Each sh In ActiveWorkbook.Worksheets: sh.Visible = sh.Name = ActiveSheet.Name: Next
И замени процедуру Sub ShowThisSheet(control As IRibbonControl) на эту
Код:
Sub ShowThisSheet(control As IRibbonControl)
  If ActiveWorkbook.Sheets(control.Tag).Visible Then
    ActiveWorkbook.Sheets(control.Tag).Activate
    Dim sh As Object
    On Error Resume Next
    For Each sh In ActiveWorkbook.Worksheets: sh.Visible = sh.Name = ActiveSheet.Name: Next
  Else
    ActiveWorkbook.Sheets(control.Tag).Visible = True
    ActiveSheet.Visible = Not ActiveWorkbook.Sheets(control.Tag).Visible
  End If
End Sub
Цитата:
Сообщение от Maxx Посмотреть сообщение
…И конечно было бы совсем идеально, если бы подменю "Листы в данном файле" было бы выпадающим…
Не понял? Для каждого открытого файла выпадающее меню с листами? Не советую! Будет тормозить. Лучше это делать только для активного файла.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 16.01.2009 в 10:20. Причина: Уточнил по поводу выпадающего меню.
viter.alex вне форума
Старый 16.01.2009, 10:34   #19
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Да, и все-таки я уже начинаю чего-то соображать.
Пока Вы писали предыдущее сообщение, я уже все изменил именно так, как Вы указали

И все же было бы не прлоха, если бы EducatedFool подсказал как спрятать диаграммы???


Вот Upgrade:

P.S. Теперь можно USERFORM1 удалить!!!
Вложения
Тип файла: rar Выбор листа new.rar (66.2 Кб, 43 просмотров)
Maxx вне форума
Старый 16.01.2009, 10:51   #20
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Подскажите еще, плз, неучу, где находится эта самая автозакрузка, т.е. куда шаблон поместить или где к этому шаблону путь указать???
Maxx вне форума
Закрытая тема


Купить рекламу на форуме - 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