Excel. Трюки и эффекты | страница 140
cbrpBar.Controls.Add(Type:=msoControlPopup)
Else
' Создаем команду меню
Set objNewItem = _
cbrpBar.Controls.Add(Type:=msoControlButton)
objNewItem.OnAction = strAction
End If
' Установка названия нового пункта меню
objNewItem.Caption = strCaption
' Установка значка нового пункта меню (если нужно)
If strFaceID <> "" Then
objNewItem.FaceId = strFaceID
End If
' Если нужно, то добавим разделитель
If fIsDevider Then
objNewItem.BeginGroup = True
End If
Case 3
' Создание элемента подменю
Set objNewSubItem = _
objNewItem.Controls.Add(Type:=msoControlButton)
' Установка его названия
objNewSubItem.Caption = strCaption
' Назначение макроса (или команды)
objNewSubItem.OnAction = strAction
' Установка значка (если нужно)
If strFaceID <> "" Then
objNewSubItem.FaceId = strFaceID
End If
' Если нужно, то добавим разделитель
If fIsDevider Then
objNewSubItem.BeginGroup = True
End If
End Select
' Переход на следующую строку таблицы
intRow = intRow + 1
Loop
End Sub
Sub DeleteMenu()
Dim sheet As Worksheet ' Лист с описанием меню
Dim intRow As Integer ' Считываемая строка
Dim strCaption As String ' Название меню
Set sheet = ThisWorkbook.Sheets(«ЛистМеню»)
' Данные начинаются со второй строки
intRow = 2
' Считываем данные, пока есть значения в столбце "A", _
и удаляем созданные ранее меню (с уровнем вложенности 1)
On Error Resume Next
Do Until IsEmpty(sheet.Cells(intRow, 1))
If sheet.Cells(intRow, 1) = 1 Then
strCaption = sheet.Cells(intRow, 2)
Application.CommandBars(1).Controls(strCaption).Delete
End If
intRow = intRow + 1
Loop
On Error GoTo 0
End Sub
После того как данный код написан, в окне выбора макросов появятся макросы CreateMenu и DeleteMflenu – соответственно для создания и удаления пользовательского меню. Для удобства работы можно назначить каждому макросу кнопки.
Пользовательское меню, созданное на основании приведенных на рис. 3.34 исходных данных, показано на рис. 3.35.
Рис. 3.35. Пользовательское меню Выручка
Новое меню будет автоматически формироваться при каждом открытии рабочей книги и удаляться при ее закрытии.
Создание контекстного меню
В предыдущих разделах мы рассматривали различные способы формирования пользовательских меню, которые впоследствии отображались на вкладке Надстройки. Здесь же мы научимся создавать контекстное меню.
Итак, создадим пользовательское контекстное меню со следующими командами: Числовой формат, Выравнивание, Шрифт, Границы, Узор и Защита. С помощью этих команд на экран будет выводиться окно форматирования ячейки (вызываемое также нажатием комбинации клавиш Ctrl+1) с соответствующей открытой вкладкой. Созданное меню будет вызываться щелчком правой кнопки мыши на любой ячейке диапазона A2:D5.