Приведем пример проекта, который создает интерфейс приложения, состоящего из пользовательской строки меню. Пользовательская строка меню включает два пункта меню, причем первый пункт содержит в себе также раскрывающееся меню (рис. 8.3). Каждый пункт связан с макросом так, что при их выборе выполняется -соответствующий макрос. При закрытии приложения пользовательская строка меню удаляется.
Рис. 8.3. Интерфейс с пользовательской строкой меню
В окне Проект — VBA Project (Project - VBAProject) выберите лист Thisworkbook и введите на нем следующие две процедуры.
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
'
' Процедура создания новой строки меню при
' открытии рабочей книги. При закрытии приложения
' подданная строка удаттететея
'
With Application.CoimnandBars.Add(Name:="МоеМеню", MenuBar:=True, Temporary:=True) .Visible = True
With .Controls
'
' Создание меню Меню!
'
With .Add(Type:=msoControlPopup)
.Caption = "&Меню1" With .Controls
With .Add (Type :=msoControlButtoj»)
.Caption = "Пункт&1" .OnAction = "АтьДва!"
End With
'
' Создание подменю Меню1
With -Add(Type:=msoControlPopup)
.Caption = "&ПодМеню1" With
.Controls
With .Add(Type:=msoControlButton)
.Caption = "Пункт&2" .OnAction = "АтьДва2"
End With
With .Add(Type:=msoControlButton)
.Caption = "Пункт&З"
.OnAction = "АтьДваЗ"
End With
End With
End With
End With
End With
'
' Создание меню Меню2
'
With .Add(Type:=msoControlPopup)
.Caption = "&Меню2" With .Controls
With .Add(Type:=msoControlButton)
.Caption = "Пункт&4"
.OnAction = "АтьДва4"
End With
End With
End With
End With
End With
End Sub
А на листе модуля введите следующие четыре процедуры, которые будут выполняться при выборе соответствующего пункта меню.
Sub АтьДва!()
MsgBox "Стой! Стоять! Буду стрелять!"
' End Sub
'
Sub АтьДва2 ()
MsgBox "Стой! Стоять! Стреляю в воздух!"
End Sub
Sub АтьДваЗ()
MsgBox "Стой! Стоять! Последний раз стреляю в воздух!"
End Sub
'
Sub АтьДва4()
MsgBox "Стой! Стоять! Стреляю!"
End Sub
Иногда бывает удобнее проектировать собственную панель вручную, чем ее программировать.
Создается панель пользователя по следующему алгоритму.
Шаг 1
Выберите команду Вид, Панели инструментов, Настройка (View, Toolbars, Customize) или переместите указатель на любую панель инструментов и сделайте щелчок правой кнопкой мыши, а затем выберите команду Настройка (Customize).
Шаг 2
В появившемся диалоговом окне Настройка (Customize) нажмите кнопку Создать (New) (рис. 8.4).
Рис. 8.4. Диалоговое окно Настройка
ШагЗ
В появившемся диалоговом окне Создание панели инструментов в поле Панель инструментов (Toolbars) введите имя новой панели инструментов, например моя панель (рис. 8.5).
Рис. 8.5. Диалоговое окно Создание панели инструментов
Шаг 4
Нажмите кнопку ОК. Это приведет к появлению новой панели инструментов (рис. 8.6). Пусть вас не смущает ширина панели инструментов. Она будет автоматически расширяться по мере ее заполнения элементами управления.
Рис. 8.6. Новая панель инструментов и диалоговое окно Настройка
Шаг 5
Раскройте вкладку Команды (Commands) диалогового окна Настройка (Customize) и перетащите на новую панель нужные кнопки из списка Команды (Commands). Итак, панель инструментов создана (рис. 8.7). Программно та же панель инструментов создается следующими инструкциями:
Application. CommandBars
.Add (Name :=" Моя панель" )
.Visible = True Application. CommandBars ( "Моя панель")
. Controls .Add Type : =msoControlButton, Id:=23, Before:=l Application. CommandBars ( "Моя панель")
. Controls. Add Type:=msoControlButton, Id:=211, Before:=2 Application. CommandBars ( "Моя панель").Controls.
Add Type:=msoControlButton,
Id:=1031, Before :=3
Application. CommandBars ("Моя панель") .Controls.
Add Type:=msoControlButton, Id:=166, Before:=4
По указанному выше алгоритму, опустив шаги со второго по четвертый, можно также добавлять элементы управления в уже существующие панели инструментов.