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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2009, 12:16   #1
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию Вложенная панель инструментов.

Привет всем!
Есть такая проблемка... Существует некая база и в этой книге вложена Панель инструментов "Сотрудники" на кнопочки которой назначены макросы для работы с этой базой.
Отсюда возникает вопрос, как сделать так, чтоб при открытии этой конкретной книги отображалась только нужная мне панель инструментов, а при закрытии книги она (панель Сотрудники) убиралась из списка Панелей инструментов и все возвращалось на место?????
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Старый 15.03.2009, 12:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В модуль "Эта книга" пишем код:
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars("Сотрудники").Visible = False
End Sub

Private Sub Workbook_Open()
    Application.CommandBars("Сотрудники").Visible = True
End Sub
Если что-то не будет получаться, прикрепите к сообщению файл.
EducatedFool вне форума Ответить с цитированием
Старый 15.03.2009, 12:34   #3
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

Понимаете уважаемый, мне нужно все остальные панели и меню при открытии прятать, а после закрытия возвращать назад, чтоб в других книгах все было пучком!
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Старый 15.03.2009, 12:39   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ну тогда так:

Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    RestoreInterface
End Sub

Private Sub Workbook_Open()
    UserInterface
End Sub


Sub UserInterface(): ChangeInterface False: End Sub    ' скрывает всё лишнее с экрана

Sub RestoreInterface(): ChangeInterface True: End Sub    ' восстанавливает всё как было

Sub ChangeInterface(Value As Boolean)
    On Error Resume Next
    With Application
        .ScreenUpdating = False: .Caption = IIf(Value = True, Empty, "Мой заголовок окна Excel")
        .DisplayStatusBar = Value: .DisplayFormulaBar = Value
        For Each iCommandBar In .CommandBars
            iCommandBar.Enabled = Value
        Next
        With .ActiveWindow
            .Caption = IIf(Value = True, .Parent.Name, "")
            .DisplayHeadings = Value: .DisplayGridlines = Value
            .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value:
            .DisplayWorkbookTabs = Value
        End With: .ScreenUpdating = True
        .CommandBars("Сотрудники").Enabled = Not Value
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 15.03.2009, 13:08   #5
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

Большое спасибо, чуток подработав под себя получил нужный результат!
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Старый 16.03.2009, 13:58   #6
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

Какая организовалась проблемка: если открыта книга с нашим запущенным макросом и при этом открыть другую книгу, то действие макроса распространяется и на нее... можно этого как-то избежать???
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Старый 16.03.2009, 14:31   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вместо первых двух макросов поставьте четыре:

Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    RestoreInterface
End Sub

Private Sub Workbook_Deactivate()
    RestoreInterface
End Sub

Private Sub Workbook_Open()
    UserInterface
End Sub

Private Sub Workbook_Activate()
    UserInterface
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 16.03.2009, 14:38   #8
haros
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

и снова благодарю!
Люди, слушайте голос разума...
haros вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скрыть панель инструментов? Град Microsoft Office Excel 10 22.10.2008 14:41
Как добавить собственную панель инструментов в Word? Zmeй Korzinыч Microsoft Office Word 2 14.10.2008 22:54
Пропала панель инструментов delphin100 Операционные системы общие вопросы 2 24.08.2008 13:29
Панель инструментов как в office _victor Компоненты Delphi 0 01.04.2008 07:06
Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон Romanbl4 Общие вопросы Delphi 6 27.06.2007 17:23