Пример создания/удаления меню
Теперь создадим меню Вставка знака, которое расположим в самом конце строки меню рабочего листа (после меню Справка).
Рис. 10‑17. Добавление меню Вставка знака
Листинг программы:
Sub ДобавлениеМеню()
Set myMenuBar = CommandBars("Worksheet Menu bar")
'1. Добавляем вложенное меню:
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, _
Temporary:=True)
'2. Задаем текст надписи:
newMenu.Caption = "Вставка знака"
'3. Во вложенное меню добавляем кнопку:
Set ctrl1 = newMenu.Controls _
.Add(Type:=msoControlButton, ID:=1)
'4. На кнопке должна быть только надпись:
ctrl1.Style = msoButtonCaption
'5. Добавляем надпись:
ctrl1.Caption = "Плюс в кружочке"
'6. Создаем всплывающую подсказку:
ctrl1.TooltipText = "Вставка специального символа"
'7. При щелчке по кнопке выполняется процедура Символ:
ctrl1.OnAction = "Символ"
End Sub
Задание: введите данный код в книгу Плюс в кружочке.xls и запустите его. Убедитесь, что меню Вставка знака создана.
Удаление меню
Для удаления меню воспользуемся следующей программой:
Sub УдалениеМеню()
Set myMenuBar = CommandBars("Worksheet Menu bar")
For Each Меню In myMenuBar.Controls
If Меню.Caption = "Вставка знака" Then
Меню.Delete
Exit For
End If
Next
End Sub
Задание: введите данный код в книгу Плюс в кружочке.xls и запустите его. Убедитесь, что меню Вставка знака удалено.
Обработка событий объектов Workbook и Worksheet
События имеются не только у элементов управления. Объекты, рассмотренные в главе 1, также обладают своими событиями.
События объекта Workbook
События рабочей книги возникают в случае изменений самой книги, её листов, надстроек и сводных таблиц. Рассмотрим некоторые события объекта Workbook.
Событие Open
Предположим, что загрузка панели инструментов Вставка знака должна осуществляться при открытии книги Плюс в кружочке.xls.
Чтобы связать это событие с открытием книги выполните следующие действия:
1. В окне проекта Плюс в кружочке.xls (в редакторе VBA) щелкните ThisWorkbook(Рис. 10‑2Рис. 11‑1).
|
|
|
Рис. 11‑1.
2. В списке объектов выберите объект Workbook.
3. В списке процедур выберите событие Open. На экране появится первая последняя строки процедуры обработки этого события Workbook_Open.
4. Вставьте в неё нужный фрагмент кода (код процедуры СозданиеПанелиИнструментов без 1-й и последней строки).
Сохраните внесенные изменения, закройте книгу Плюс в кружочке.xls, затем откройте её заново. Убедитесь, что панель инструментов создана.
Событие BeforeClose
Аналогично создается обработка события при закрытии рабочей книги за тем исключением, что в списке процедур необходимо выбрать событие BeforeClose.
Задания:
1. Создайте код обработки события BeforeClose, сохраните книгу и закройте её. Убедитесь, что панель инструментов Вставка знака удалена;
2. В рабочей книге Плюс в кружочке-Меню.xls напишите процедуры обработки событий OpenиBeforeClose, которые при открытии книги добавляют меню Вставка знака, а при закрытии удаляют его.
Событие SheetActivate
Рассмотрим ещё одно часто используемое событие SheetActivate. Оно наступает при активизации любого листа рабочей книги. Следующий пример демонстрирует обработку этого события (вывод на экран названия активизированного листа):
Private Sub Workbook_SheetActivate(ByVal Sh As Object)MsgBox Sh.NameEnd SubЗадание:
Создайте код обработки события SheetActivate и протестируйте выполнение этой программы (для этого перейдите в Excel и щелкните по ярлычкам листов).