Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
28
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Создание панелей инструментов

Можно не только добавлять новые кнопки на существующие панели инструментов, но также не составляет большого труда создать новую панель инструментов. На новую панель, например, можно поместить кнопки, которым назначены все макросы и процедуры для вашего приложения. Далее в этом часе я покажу, как можно скрывать и отображать панели инструментов, управляя таким образом их доступностью.

Для создания новой панели инструментов выполните следующие действия.

  1. Щелкните правой кнопкой мыши на какой-нибудь панели инструментов.

  2. В контекстном меню панели выберите пункт Настройка.

  3. В диалоговом окне Настройка перейдите на вкладку Панели инструментов.

  4. Щелкните на кнопке Создать. Появится диалоговое окно Создание панели инструментов.

  5. Введите имя панели, например Моя панель, и нажмите клавишу <Enter>. Появится маленькая пустая панель (рис. 16.4).

  6. Щелкните на кнопке Закрыть для закрытия диалогового окна Настройка.

Созданная панель очень маленькая, но по мере добавления в нее кнопок ее размер будет увеличиваться. Для вставки в новую панель кнопок используется методика, описанная в предыдущем разделе.

Рис. 16.4. Панель создана, но она пустая

Процедуры, управляющие панелями инструментов

Панели инструментов можно создать и с помощью программного кода. Посредством кода VBA можно создавать панели инструментов, вставлять в них кнопки, отображать и скрывать панели, удалять их. Можно создать панель инструментов при открытии рабочих книг и удалить ее во время закрытия книг. Это означает, что такие панели инструментов будут доступны только тогда, когда открыта данная рабочая книга.

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

Если вам предложат создать посредством VBA панель инструментов, то, скорее всего, вы попробуете применить метод Add (Добавить) для создания нового элемента коллекции Toolbars (Панели инструментов). Вы правы в своей догадке о применении метода Add, но коллекции Toolbars в VBA нет. В VBA панели инструментов группируются совместно со строкой меню и контекстными меню и образуют коллекцию CommandBars (Командные панели). Таким образом, создание новой панели инструментов равносильно созданию нового элемента коллекции CommandBars с помощью метода Add.

После создания панели инструментов следующий шаг очевиден - вставка в нее кнопок инструментов. Для этого также используется метод Add, но уже применительно к коллекции Controls (Элементы управления). Распишем пошагово процесс создания панели инструментов.

  1. Откройте рабочую книгу Гость.

  2. Нажмите комбинацию клавиш <Alt+F11> для открытия редактора Visual Basic.

  3. Создайте новую процедуру с именем МояПанель.

  4. Введите код этой процедуры.

Dim ctlGEButton As Object

ThisWorkbook.Activate

Application.CommandBars.Add Nаmе:="Моя панель"

CommandBars("Моя панель").Visible = True

Set ctlGEButton = Application.CommandBars("Моя панель"). _

Controls.Add(Type:=msoControlButton, ID:=2950, Before:=l)

With ctlGEButton

 .FaceId = 2141

 .OnAction = "ЗагрузкаФормы"

End With

  1. Выполните процедуру. Новая панель создана.

  2. Щелкните на кнопке новой панели - отобразится форма Гостевые расходы.

  3. Щелкните на кнопке Отмена для закрытия формы.

Чтобы повторить выполнение процедуры, необходимо удалить созданную панель инструментов. Для этого щелкните на ней правой кнопкой мыши, выберите команду Настройка и в диалоговом окне Настройка на вкладке Панели инструментов выделите панель Моя панель, затем щелкните на кнопке Удалить.

Проанализируем код процедуры МояПанель. Сначала в этой процедуре была объявлена переменная-объект ctlGEButton, которая затем примет значение кнопки панели инструментов:

Dim ctlGEButton As Object

Далее была активизирована рабочая книга, так как панель создается именно для этой рабочей книги:

ThisWorkbook.Activate

Затем создается панель инструментов и устанавливается ее свойство Visible (Видимый) как True.

Application.CommandBars.Add Name:="Моя панель"

CommandBars("Моя панель").Visible = True

После этого для новой панели инструментов создается кнопка как элемент коллекции Controls.

Set ctlGEButton = Application.CommandBars("Моя панель").Controls. _

 Add(Type:=msoControlButton, ID:=2950, Before:=l)

Здесь аргумент Type определяет тип создаваемого элемента управления (в нашем случае - это кнопка, но могут быть и другие, например поля, списки, раскрывающиеся меню и т.п.). Аргумент ID задает тип кнопки, настраиваемой кнопке соответствует значение 2950 аргумента ID.

Далее устанавливаются свойства кнопки FaceId (Идентификатор внешнего вида) и OnAction (Действие).

With ctlGEButton

 .FaceId = 2141

 .OnAction = "ЗагрузкаФормы"

End With

Первое свойство задает изображение-значок, отображаемое на кнопке, а второе назначает кнопке макрос или процедуру (в данном случае процедуру ЗагрузкаФормы).

Если вы хотите, чтобы панель инструментов создавалась при открытии рабочей книги, поместите соответствующий код в процедуру Auto_Open. Подробно об этой процедуре будет рассказано в 24-м часе.