Удаление панели инструментов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Удаление панели инструментов



Чтобы удалить панель инструментов можно воспользоваться следующим кодом:

Sub УдалениеПанелиИнструментов()

For Each Bar In Application.CommandBars

If Bar.Name = “Вставка знака” Then

Bar.Delete

Exit For

End If

Next

End Sub

Задание: введите данный код в книгу Плюс в кружочке. xls и запустите его. Убедитесь, что панель инструментов Вставка знака удалена.

Пример создания/удаления меню

Теперь создадим меню Вставка знака, которое расположим в самом конце строки меню рабочего листа (после меню Справка).

Рис. 12‑25. Добавление меню Вставка знака

Листинг программы:

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 и Worksheet.

События объекта Workbook

События рабочей книги возникают в случае изменений самой книги, её листов, надстроек и сводных таблиц. Ниже приведен список событий объекта Workbook.

Событие Описание
BeforeClose При закрытии рабочей книги
BeforePrint Перед печатью рабочей книги
BeforeSave Перед сохранением рабочей книги
Deactivate Когда рабочая книга становится не активной
NewSheet При добавлении нового листа
Open При открытии рабочей книги
SheetActivate При активизации любого листа
SheetDeactivate Когда лист становится не активным

Рассмотрим подробнее события Open и BeforeClose.

Событие Open

Предположим, что загрузка панели инструментов Вставка знака должна осуществляться при открытии книги Плюс в кружочке. xls.

Чтобы связать это событие с открытием книги выполните следующие действия:

1. В окне проекта Плюс в кружочке. xls (в редакторе VBA) щелкните ThisWorkbook (Рис. 13‑1).

1. Объект ThisWorkbook
2. Список объектов
3. Список процедур

Рис. 13‑1.

2. В списке объектов выберите объект   Workbook.

3. В списке процедур выберите событие Open. На экране появится первая последняя строки процедуры обработки этого события Workbook_ Open.

4. Вставьте в неё нужный фрагмент кода (код процедуры СозданиеПанелиИнструментов без 1-й и последней строки).

Сохраните внесенные изменения, закройте книгу Плюс в кружочке. xls, затем откройте её заново. Убедитесь, что панель инструментов создана.

Событие BeforeClose

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

Событие SheetActivate

Рассмотрим ещё одно часто используемое событие SheetActivate. Оно наступает при активизации любого листа рабочей книги. Следующий пример демонстрирует обработку этого события (вывод на экран названия активизированного листа):

Private Sub Workbook_SheetActivate(ByVal Sh As Object)MsgBox Sh.Name End Sub

События объекта Worksheet

События на уровне рабочего листа возникают в случае его активизации или деактивизации, изменений в нем самом или в сводных таблицах. Ниже приведен список событий объекта Worksheet.

Событие Описание
Activate При активизации текущего листа
BeforeDoubleClick При двойном щелчке по ячейке рабочего листа
BeforeRightClick При щелчке правой кнопкой мышки по ячейке рабочего листа
Calculate При пересчете ячеек
Change При изменении содержимого ячеек пользователем или внешней связью
SelectionChange При выделении другой ячейки/диапазона ячеек
Deactivate При деактивизации текущего листа
FollowHyperlink При щелчке по гиперссылке
PivotTableUpdate При обновлении сводной таблицы

Рассмотрим некоторые события объекта Worksheet.

Событие Activate

Событие Activate возникает, когда лист становится текущим. Напишем программу, которая выполняется при активизации листа Лист1 и выводит на экран его имя:

Private Sub Worksheet_Activate()

MsgBox "Активный лист - " & ActiveSheet.Name

End Sub

Для того чтобы ввести эту программу:

1. В окне проекта щелкните Лист1 (Рис. 13‑2Рис. 12‑1).

2. В списке объектов выберите WorkSheet, а в списке процедур – событие Activate (Рис. 13‑2)

Рис. 13‑2.

3. Введите код.

4. Перейдите в Excel и протестируйте программу. Обратите внимание: при щелчке по Лист2 сообщение не выводится!

Событие Deactivate

Событие Deactivate возникает, когда лист становится неактивным. Для Лист1 введите следующий код и протестируйте работу программы:

Private Sub Worksheet_Deactivate()

MsgBox ActiveSheet.Name & " стал неактивным!"

End Sub

Событие SelectionChange

Событие SelectionChange (в самом простом случае) возникает тогда, когда текущей становится другая ячейка (либо в результате щелчка мышкой по другой ячейке, либо после нажатия клавиши   [ Enter], либо после нажатия клавиш передвижения курсора).

Для Лист2 напишем программу, которая выводит адрес текущей ячейки. Для этого в модуле Лист2 необходимо набрать следующий код:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   MsgBox "Адрес текущей ячейки - " & ActiveCell.Address

End Sub


Библиография

1. Гарнаев А.Ю. VBA: в подлиннике. СПб., изд-во BHV-Санкт-Петербург, 2005. 848 с.

2. Гарнаев А.Ю. Microsoft Excel 2000: Разработка приложений. - СПб.: BHV - Санкт-Петербург, 2000. - 576 с.: ил.

3. Э. Уэллс, С. Харшбаргер. Microsoft Excel 97. Библиотека разработчика. - М.: Издательский отдел "Русская редакция". - 1998. - 536 с.

 


[1] Полный перечень свойств Вы можете просмотреть с помощью Object Browser.

[2] так называемые свойства только для чтения (read-only)

[3] Из этой классификации слегка выбиваются три объекта Excel: Range, Sheets и Shapes. Объект Range считается одиночным, но обладает также характеристиками семейства. Sheets и Shapes — семейства, но не объектов, а других семейств.

[4] семейство рабочих книг

[5] В отличие от нумерации в массивах, которая может начинаться с нуля, единицы или любого другого числа, объекты в семействах всегда нумеруются с единицы.

[6] При обращении к объекту семейства его имя заключается в двойные кавычки и круглые скобки.

[7] Обратите внимание: имена объектов различных уровней разделяет точка (.)

[8] Хотя такая запись и сокращает программу, однако явное упоминание всех свойств делает код более понятным. Другими словами, запись Range("A1").Value = 1 более предпочтительна, чем Range("A1") = 1

[9] и методов

[10] В данном курсе не рассматриваются.

[11] в том числе строк и столбцов

[12] которое имеется у объектов Application, Worksheets и Range.

[13] См. параграф 10.5 Функции времени и даты.

[14] С таким же успехом, можно было бы проверять содержимое первой ячейки.

[15]. С синтаксисом данного метода познакомьтесь самостоятельно, воспользовавшись Справкой VBA

[16] В данном примере этот фрагмент кода отсутствует.

[17] Это всего лишь пример. Очень возможно, что в Вашем конкретном случае будет другая конструкция.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 34; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.63.87 (0.017 с.)