Самоучитель VBA

         

Пример создания строки меню пользователя


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



Содержание раздела