Пример создания строки меню пользователя
Приведем пример проекта, который создает интерфейс приложения, состоящего из пользовательской строки меню. Пользовательская строка меню включает два пункта меню, причем первый пункт содержит в себе также раскрывающееся меню (рис. 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