Пример создания панели инструментов пользователя
Приведем пример проекта, который создает интерфейс приложения, состоящего из строки меню и одной панели инструментов. В панель инструментов входят две кнопки и раскрывающийся список. На поверхности одной из кнопок выводится рисунок, а другой — надпись (рис. 8.2).
Рис. 8.2. Пользовательский интерфейс
Каждая из кнопок связана с макросом таким образом, что их активизация приводит к выполнению соответствующего макроса. Кроме того, эти кнопки снабжены пояснительными надписями, которые отображаются в окне всплывающей подсказки. При закрытии приложения данная панель инструментов удаляется, а ее место занимают панели инструментов Стандартная (Standard) и Форматирование (Formatting).
В окне Проект — VBAProject (Project - VBAProject) выберите лист ThisWorkbook и наберите следующие две процедуры.
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
'
' Процедура создания новой панели инструментов при
' открытии рабочей книги
'
' При открытии рабочей книги панели инструментов Форматирование
' и Стандартная скрываются
'
'
With Application
.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:=2950)
.TooltipText = "КнопкаДейства!" .OnAction = "Действо 1"
End With
'
' Создание кнопки с надписью
With .Add(Type:=msoControlButton, Id:=l)
.Caption = "Действо"
.TooltipText = "КнопкаДейства2"
.Style = msoButtonCaption
.OnAction = "Действо 2" End With
' Создание раскрывающегося списка
With .Add(Type:=msoControlDropdown)
.Addltem "Приедет", 1 .Addltem "Уедет", 2
.Addltem "Еще не решил", 3
.Listlndex = i
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
End With
End Sub
А на листе модуля введите следующие две процедуры, которые будут выполняться при нажатии на соответствующие кнопки.
Sub Действо1()
MsgBox "Результат действа 1"
End Sub
Sub Действо 2()
MsgBox " Результат действа 2"
End Sub