Меню со стандартными командами

В данном подразделе мы создадим пользовательское меню, которое будет включать в себя меню Файл (это меню будет соответствовать стандартному меню Файл из Excel более ранних версий) и меню Дополнительно.

Для реализации поставленной задачи необходимо в стандартном модуле редактора VBA написать код, представленный в листинге 3.81.

Листинг 3.81. Создание пользовательского меню

Sub CreateMenu()

Dim cbrMenu As CommandBar

Dim cbrcNewMenu As CommandBarControl

' Удаление меню, если оно уже есть

Call DeleteMenu

' Добавление строки пользовательского меню

Set cbrMenu = CommandBars.Add(MenuBar:=True)

With cbrMenu

.Name = «Моя строка меню»

.Visible = True

End With

' Копирование стандартного меню «Файл»

CommandBars(«Worksheet Menu Bar»).FindControl(ID:=30002).Copy _

CommandBars(«Моя строка меню»)

' Добавление нового меню – «Дополнительно»

Set cbrcNewMenu = cbrMenu.Controls.Add(msoControlPopup)

cbrcNewMenu.Caption = «&Дополнительно»

' Добавление команды в новое меню

With cbrcNewMenu.Controls.Add(msoControlButton)

.Caption = «&Восстановить обычную строку меню»

.OnAction = «DeleteMenu»

End With

' Добавление команды в новое меню

With cbrcNewMenu.Controls.Add(Type:=msoControlButton)

.Caption = «&Справка»

End With

End Sub

Sub DeleteMenu()

' Пытаемся удалить меню (успешно, если оно ранее создано)

On Error Resume Next

CommandBars(«Моя строка меню»).Delete

On Error GoTo 0

End Sub

В результате написания данного кода будет создан макрос CreateMenu. При его выполнении на вкладке Надстройки появится пользовательское меню, включающее в себя пункты Файл (этот пункт будет соответствовать стандартному меню Файл из Excel более ранниз версий) и Дополнительно. С помощью команды Дополнительно ? Восстановить обычную строку меню созданное меню будет удалено. Команда Дополнительно ? Справка имеет чисто демонстрационную функцию.