Microsoft Excel:

  Таблицы и VBA. Справочник.
  Вопросы и Ответы. Советы. Примеры.
Меню Заметки | Как отобразить стандартное диалоговое окно со всеми скрытыми листами, в т.ч. и xlVeryHidden


Rambler's Top100


Counter CO.KZ



Если Вы уже воспользовались вторым вариантом этого совета или добрались до раздела макросы, а именно [FAQ3], то знаете, что листы, у которых значение свойства Visible установлено как xlVeryHidden или xlSheetVeryHidden, не отображаются в стандартном диалоговом окне Вывод на экран скрытого листа, которое появляется, если в меню Формат выбрать пункт Лист и команду Отобразить.



И если это неприемлемо, и Вы всё-таки хотите видеть эти 'очень скрытые листы' в диалоговом окне, то Вы, конечно же, можете создать имитацию (DialogSheet + VBA или UserForm + VBA), где в цикле будут перебраны все листы активной книги и выведены только те, у которых значение свойства Visible <> True (xlSheetVisible)

Но можно сделать и проще, т.е. воспользоваться ещё одним стандартным диалоговым окном, которое можно вывести на экран, если проделаете следующее :

1. В меню Сервис выберите пункт Макрос и команду Начать запись...

2. В появившемся диалоговом окне в поле Имя макроса: введите SheetHiddenDialogShow , а в поле со списком Сохранить в: выберите Личная книга макросов и нажмите кнопку Ok.



3. Кликните кнопку Остановить запись, которая находится на панели инструментов Остановка записи

4. В меню Сервис выберите пункт Макрос и команду Макросы (или нажмите ALT + F8)

5. Выберите только один из двух способов :

- В поле Имя макроса: введите (или вставьте предварительно скопированный текст) PERSONAL.xls!SheetHiddenDialogShow и кликните кнопку Войти.

- В поле со списком Находится в: опять выберите Personal.xls, затем, в списке макросов выделите макрос, который Вы только что создали, и кликните кнопку Войти.

6. Добавьте одну единственную строчку
Application.Dialogs(xlDialogWorkbookUnhide).Show
Теперь, в результате всех действий, Вы получите приблизительно такой макрос
Sub SheetHiddenDialogShow()
'
' SheetHiddenDialogShow Макрос
' Макрос записан 27.04.2014 (Климов П.Ю.)
'

'
    Application.Dialogs(xlDialogWorkbookUnhide).Show

End Sub
Обратите внимание, если структура книги будет защищена или в момент выполнения макроса, не будет активной книги (это, кстати, действительно возможно), то мы получим ошибки, которых можно избежать, если просто добавить соответствующие проверки :


Sub SheetHiddenDialogShow()
'
' SheetHiddenDialogShow Макрос
' Макрос записан 27.04.2014 (Климов П.Ю.)
'
    If Not ActiveWorkbook Is Nothing Then
       If Not ActiveWorkbook.ProtectStructure Then
          Application.Dialogs(xlDialogWorkbookUnhide).Show
       Else
          MsgBox "Невозможно отобразить скрытый лист, т.к структура книги защищена", vbCritical, ""
       End If
    Else
       MsgBox "Отсутствует активная рабочая книга", vbCritical, ""
    End If
End Sub
7. В меню Файл (File) выберите команду Сохранить Personal.xls (Save ...) (или просто нажмите клавиши CTRL + S)

8. В меню Файл (File) выберите команду Закрыть и вернуться в Microsoft Excel (Close And Return ...) (или нажмите клавиши ALT + Q или ALT + F4)

9. Выберите только один из трёх способов :

- В меню Сервис выберите команду Настройка

- В меню Вид выберите пункт Панели инструментов и команду Настройка

- Подведите курсор мышки к любой панели инструментов и кликните правой кнопкой мышки и в появившемся контекстном меню выберите команду Настройка

10. Затем, в меню Формат выберите пункт Лист, подведите курсор мышки к команде Отобразить и кликните правой кнопкой мышки.

11. Теперь, кликните команду Назначить макрос... и, собственно, назначьте этой кнопке макрос PERSONAL.xls!SheetHiddenDialogShow




Примечание : Если существует вероятность, что кнопка может быть удалена, то в таком случае, имеет смысл создавать её программно, также можно программно и назначить этой кнопке макрос.

Вопросы, связанные с этой темой
  • Как мне скрыть рабочий лист, чтобы его не было видно не только на экране ?
  • Как вручную назначить макрос любой стандартной или собственной кнопке, команде на панели инструментов ?

  • FAQ3 : Как программно скрыть активный лист ?
  • FAQ95 : Как в т.ч. и программно "назначить" клавишам свой собственный макрос ?
  • FAQ58 : Как программно добавить свои элементы управления в стандартную панель инструментов ?




  • Автор : Климов Павел Юрьевич
    © 2004-2016 Климов П.Ю. Все права защищены. WebDesign & Error's Klimoff