КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Меню с пользовательскими командами
Еще о создании пользовательских меню Создание калькулятора Листинг 3.81. Создание калькулятора Sub SimpleCalculator() Dim strExpr As String ' Ввод выражения strExpr = InputBox("Что будем считать?") ' Подсчет и вывод результата MsgBox strExpr & " = " & Application.Evaluate(strExpr) End Sub Листинг 3.82. Код в модуле ЭтаКнига Sub Workbook_Open() ' Задание имени меню strMenuName = "MyCommandBarName" ' Создание меню CreateCustomMenu End Sub
Sub Workbook_BeforeClose(Cancel As Boolean) ' Удаление меню перед закрытием книги DeleteCustomMenu End Sub Листинг 3.83. Код в стандартном модуле Public strMenuName As String ' Имя строки меню Private cbrcBar As CommandBarControl
Sub CreateCustomMenu() Dim cbrMenu As CommandBar Dim cbrcMenu As CommandBarControl ' Выпадающее меню "Меню" Dim cbrcSubMenu As CommandBarControl ' Выпадающее меню "Дополнительно"
' Если уже есть пользовательское меню, то оно удаляется DeleteCustomMenu
' Создание меню вместо стандартного Set cbrMenu = Application.CommandBars.Add(strMenuName, msoBarTop, _ True, True) ' Создание выпадающего меню с названием "Меню" Set cbrcMenu = cbrMenu.Controls.Add(msoControlPopup,,,, True) With cbrcMenu .Caption = "&Меню" End With
' Создание пункта меню With cbrcMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) .Caption = "&Меню1" .OnAction = "CallMenu1" End With ' Создание пункта меню With cbrcMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) .Caption = "Меню2" .OnAction = "CallMenu2" End With ' Создание подменю первого уровня Set cbrcSubMenu = cbrcMenu.Controls.Add(Type:=msoControlPopup, _ Temporary:=True) With cbrcSubMenu .Caption = "Подменю1" .BeginGroup = True End With ' Создание пункта меню With cbrcMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) .Caption = "Вкл/Выкл" .OnAction = "MenuOnOff" .Style = msoButtonIconAndCaption .FaceId = 463 End With ' Создание пункта меню в подменю первого уровня With cbrcSubMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) .Caption = "Подменю1" .OnAction = "CallSubMenu1" .Style = msoButtonIconAndCaption .FaceId = 2950 .State = msoButtonDown End With ' Cоздание пункта меню в подменю первого уровня (его состояние _ изменяется посредством пункта "Вкл/Выкл"), для чего сохраним ссылку _ на созданный пункт меню Set cbrcBar = cbrcSubMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) With cbrcBar .Caption = "Подменю2" .OnAction = "CallSubMenu2" ' Сначала меню деактивировано .Enabled = False End With ' Создание подменю второго уровня Set cbrcSubMenu = cbrcSubMenu.Controls.Add(Type:=msoControlPopup, _ Temporary:=True) With cbrcSubMenu .Caption = "ПодчПодменю1" .BeginGroup = True End With ' Cоздание пункта меню в подменю второго уровня With cbrcSubMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) .Caption = "ПослМеню1" .OnAction = "CallLastMenu1" .Style = msoButtonIconAndCaption .FaceId = 71 .State = msoButtonDown End With ' Cоздание пункта меню в подменю второго уровня With cbrcSubMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) .Caption = "ПослМеню2" .OnAction = "CallLastMenu2" .Style = msoButtonIconAndCaption .FaceId = 72 .Enabled = True End With
' Отображение меню cbrMenu.Visible = True Set cbrcSubMenu = Nothing Set cbrcMenu = Nothing Set cbrMenu = Nothing End Sub
Sub DeleteCustomMenu() ' Удаление строки меню On Error Resume Next Application.CommandBars(strMenuName).Delete On Error GoTo 0 End Sub
Sub CallMenu1() ' Обработка вызова Меню1 MsgBox "Приветствует меню 1!", vbInformation, ThisWorkbook.Name End Sub Sub CallMenu2() ' Обработка вызова Меню2 MsgBox "Приветствует меню 2!", vbInformation, ThisWorkbook.Name End Sub
Sub CallSubMenu1() ' Обработка вызова Подменю1 MsgBox "Приветствует подменю 1!", vbInformation, ThisWorkbook.Name End Sub Sub CallSubMenu2() ' Обработка вызова Подменю2 MsgBox "Приветствует подменю 2!", vbInformation, ThisWorkbook.Name End Sub
Sub CallLastMenu1() ' Обработка вызова Последнего меню1 MsgBox "Приветствует последнее меню 1!", vbInformation, ThisWorkbook.Name End Sub
Sub CallLastMenu2() ' Обработка вызова Последнего меню2 MsgBox "Приветствует последнее меню 2!", vbInformation, ThisWorkbook.Name End Sub
Sub MenuOnOff() ' Активация или деактивация пункта "Меню-Подменю1-Подменю2" cbrcBar.Enabled = Not cbrcBar.Enabled End Sub
Дата добавления: 2015-06-25; Просмотров: 366; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |