Excel. Трюки и эффекты | страница 136
End Select
' Встроенный элемент или созданный пользователем
Cells(intRow, 4) = cbrBar.BuiltIn
' Переходим на следующую строку
intRow = intRow + 1
Next
End Sub
Результат выполнения данного макроса (после написания кода он будет доступен в окне списка макросов) показан на рис. 3.33.
Рис. 3.33. Фрагмент списка панелей инструментов и меню
Данный список выводится на активном рабочем листе.
Создание списка пунктов главного меню Excel
Подобным образом можно сформировать список подменю и команд, входящих в главное меню (которое существовало в более ранних версиях программы). Для этого в стандартном модуле VBA необходимо написать следующий код (листинг 3.87).
Sub ListOfMenues()
Dim intRow As Integer ' Текущая строка, куда идет запись
Dim cbrcMenu As CommandBarControl ' Главное меню
Dim cbrcSubMenu As CommandBarControl ' Подменю
Dim cbrcSubSubMenu As CommandBarControl ' Подменю в подменю
' Очищаем ячейки текущего листа
Cells.Clear
' Начинаем запись с первой строки
intRow = 1
' Просматриваем все элементы строки меню
On Error Resume Next ' Игнорируем ошибки
For Each cbrcMenu In CommandBars(1).Controls
' Просматриваем элементы выпадающего меню cbrcMenu
For Each cbrcSubMenu In cbrcMenu.Controls
' Просматриваем элементы подменю cbrcSubMenu
For Each cbrcSubSubMenu In cbrcSubMenu.Controls
' Выводим название главного меню
Cells(intRow, 1) = cbrcMenu.Caption
' Выводим название подменю
Cells(intRow, 2) = cbrcSubMenu.Caption
' Выводим название вложенного подменю
Cells(intRow, 3) = cbrcSubSubMenu.Caption
' Переходим на следующую строку
intRow = intRow + 1
Next cbrcSubSubMenu
Next cbrcSubMenu
Next cbrcMenu
End Sub
После запуска макроса ListOfMenues (этот макрос появится в окне выбора макросов после написания приведенного выше кода) список подменю и команд главного меню будет сформирован на текущем рабочем листе.
Создание списка пунктов контекстных меню
Чтобы вывести аналогичный список содержимого контекстных меню программы, нужно написать и выполнить макрос, код которого приведен в листинге 3.88.
Sub ListOfContextMenues()
Dim intRow As Long
Dim intControl As Integer
Dim cbrBar As CommandBar
' Очистка ячеек активного листа
Cells.Clear
' Начинаем вывод с первой строки
intRow = 1
' Просмотр списка контекстных меню и вывод информации о них
For Each cbrBar In CommandBars
If cbrBar.Type = msoBarTypePopup Then
' Порядковый номер
Cells(intRow, 1) = cbrBar.Index