На этом шаге мы рассмотрим программное создание строки меню пользователя.
Приведем пример проекта, который создает интерфейс приложения, состоящего из пользовательской строки меню. Пользовательская строка меню включает два пункта меню, причем первый пункт содержит в себе также раскрывающееся меню (рисунок 1).
Рис.1. Интерфейс с пользовательской строкой меню
Каждый пункт связан с макросом так, что при их выборе выполняется соответствующий макрос. При закрытии приложения пользовательская строка меню удаляется.
В окне Проект — VBA Project (Project - VBAProject) выберите лист ThisWorkbook (ЭтаКнига) и введите на нем следующие две процедуры.
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window) ' Процедура создания новой строки меню при ' открытии рабочей книги. При закрытии приложения ' созданная строка удаляется With Application.CommandBars.Add(Name:="МоеМеню", _ MenuBar:=True, Temporary:=True) .Visible = True With .Controls ' Создание меню Меню1 With .Add(Type:=msoControlPopup) .Caption = "&Меню1" With .Controls With .Add(Type:=msoControlButton) .Caption = "Пункт&1" .OnAction = "АтьДва1" 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 = "Пункт&3" .OnAction = "АтьДва3" 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 АтьДва1() MsgBox "Стой! Стоять! Буду стрелять!" End Sub Sub АтьДва2() MsgBox "Стой! Стоять! Стреляю в воздух!" End Sub Sub АтьДва3() MsgBox "Стой! Стоять! Последний раз стреляю в воздух!" End Sub Sub АтьДва4() MsgBox "Стой! Стоять! Стреляю!" End Sub
Результат работы изображен на рисунке 1.
На следующем шаге мы рассмотрим создание вручную пользовательской панели инструментов.