Шаг 210.
VBA в MSExcel. Практические приемы программирования на VBA. Тема: еще раз о составлении базы данных. Практика (модуль ЭтаКнига (ThisWorkbook))

    На этом шаге мы рассмотрим назначение и содержание этого модуля.

Модуль ЭтаКнига (ThisWorkbook)
Создается пользовательское меню и панели инструментов, а также заголовок окна пользовательского приложения. Устанавливается связь между кнопками пользовательской панели инструментов и процедурами модуля, которые инициализируют соответствующие диалоговые окна или выполняют указанные действия. Устанавливается режим работы, при котором весь пользовательский интерфейс прекращает свое существование при закрытии приложения.

    Процедура Workbook_WindowActivate создает пользовательский интерфейс при загрузке книги.

    Процедура Workbook_WindowDeactivate восстанавливает интерфейс, используемый в окне рабочей книги Excel по умолчанию.

    Приведем его текст.

Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
  ' Процедура создания новой панели инструментов и новое меню при
  ' открытии рабочей книги

  ' При открытии рабочей книги панели инструментов Форматирование
  ' и Стандартная скрываются и отображается новый заголовок окна приложения
  With Application
    .Caption = "С нами не соскучишься"
    .DisplayAlerts = False
    .CommandBars("Formatting").Visible = False
    .CommandBars("Standard").Visible = False
  End With

  ' Создание новой панели инструментов с именем
  ' Рабочая панель инструментов, которая будет
  ' удаляться при закрытии приложения
  With Application.CommandBars.Add(Name:="Рабочая панель инструментов", _
              Position:=msoBarTop, MenuBar:=False, Temporary:=True)
    .Visible = True
    With .Controls
      ' Первая кнопка
      With .Add(Type:=msoControlButton, ID:=1)
        .Caption = "Регистрация"
        .TooltipText = "Регистрация клиентов"
        .Style = msoButtonCaption
        .OnAction = "Модуль1.UserForm1_Initialize"
      End With
      ' Вторая кнопка
      With .Add(Type:=msoControlButton, ID:=1)
        .Caption = "Поиск и редактирование"
        .TooltipText = "Поиск и редактирование"
        .Style = msoButtonCaption
        .OnAction = "Модуль1.UserForm3_Initialize"
      End With
      ' Третья кнопка
      With .Add(Type:=msoControlButton, ID:=1)
        .Caption = "Фильтр и его отмена"
        .TooltipText = "Установка и снятие фильтра"
        .Style = msoButtonCaption
        .OnAction = "Модуль1.Автофильтр"
      End With
      ' Четвертая кнопка
      With .Add(Type:=msoControlButton, ID:=1)
        .Caption = "Фильтрация оплаченных путевок"
        .TooltipText = "Отображаются только оплаченные путевки"
        .Style = msoButtonCaption
        .OnAction = "Модуль1.UserForm4_Initialize"
      End With
      ' Пятая кнопка
      With .Add(Type:=msoControlButton, ID:=1)
        .Caption = "Сортировка"
        .TooltipText = "Сортировка данных"
        .Style = msoButtonCaption
        .OnAction = "Модуль1.Сортировка"
      End With
    End With
  End With

  ' Вторая панель инструментов с именем Сводная таблица и файлы
  With Application.CommandBars.Add(Name:="Сводная таблица и файлы", _
    Position:=msoBarTop, MenuBar:=False, Temporary:=True)
    .Visible = True
    With .Controls
      ' Первая кнопка
      With .Add(Type:=msoControlButton, ID:=1)
        .Caption = "Сводная таблица"
        .TooltipText = "Построение сводной таблицы"
        .Style = msoButtonCaption
        .OnAction = "Модуль1.СводнаяТаблица"
      End With
      ' Вторая кнопка
      With .Add(Type:=msoControlButton, ID:=3)
        .TooltipText = "Сохранить"
        .OnAction = "Модуль1.Запись"
      End With
      With .Add(Type:=msoControlButton, ID:=1175)
        .TooltipText = "Сохранить как"
        .OnAction = "Модуль1.СохранитьКак"
      End With
    End With
  End With

  With Application.CommandBars.Add(Name:="Мое Меню", MenuBar:=True, Temporary:=True)
    .Visible = True
    With .Controls
      ' Создание строки меню Файл
      With .Add(Type:=msoControlPopup)
        .Caption = "&Файл"
        With .Controls
          With .Add(Type:=msoControlButton)
            .Caption = "Сохранить"
            .OnAction = "Модуль1.Запись"
          End With
          With .Add(Type:=msoControlButton)
            .Caption = "Сохранить как"
            .OnAction = "Модуль1.СохранитьКак"
          End With
          With .Add(Type:=msoControlButton)
            .Caption = "Закрыть"
            .OnAction = "Модуль1.Закрыть"
          End With
        End With
      End With
    End With
  End With
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)
  ' Процедура, отображающая панели инструментов Форматирование
  ' и Стандартная при закрытии приложения
  ' Кроме того, она устанавливает заголовок окна приложения, используемые
  ' по умолчанию и удаляет созданные панели инструментов
  With Application
    .CommandBars("Formatting").Visible = True
    .CommandBars("Standard").Visible = True
    .Caption = Empty
    .CommandBars("Мое Меню").Delete
    .CommandBars("Сводная таблица и файлы").Delete
    .CommandBars("Рабочая панель инструментов").Delete
  End With
End Sub

    На следующем шаге мы снова вернемся к Модулю1.




Предыдущий шаг Содержание Следующий шаг