Самоучитель VBA

       

Пример создания панели инструментов пользователя



Приведем пример проекта, который создает интерфейс приложения, состоящего из строки меню и одной панели инструментов. В панель инструментов входят две кнопки и раскрывающийся список. На поверхности одной из кнопок выводится рисунок, а другой — надпись (рис. 8.2).

Рис. 8.2. Пользовательский интерфейс

Каждая из кнопок связана с макросом таким образом, что их активизация приводит к выполнению соответствующего макроса. Кроме того, эти кнопки снабжены пояснительными надписями, которые отображаются в окне всплывающей подсказки. При закрытии приложения данная панель инструментов удаляется, а ее место занимают панели инструментов Стандартная (Standard) и Форматирование (Formatting).

В окне Проект — VBAProject (Project - VBAProject) выберите лист ThisWorkbook и наберите следующие две процедуры.

Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)

'

' Процедура создания новой панели инструментов при

' открытии рабочей книги

'

' При открытии рабочей книги панели инструментов Форматирование



' и Стандартная скрываются

'

'

With Application

.CommandBars("Formatting").Visible = False

.CommandBars("Standard").Visible = False End With

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

' МояПанельИнструментов, которая будет

' удаляться при закрытии приложения

'

With Application.CommandBars

.Add(Name:="МояПанельИнструментов",

Position:=msoBarTop, MenuBar:=False, Temporary:=True)

.Visible = True With .Controls

' Создание кнопки с рисунком

With .Add(Type:=msoControlButton, Id:=2950)

.TooltipText = "КнопкаДейства!" .OnAction = "Действо 1"

End With

'

' Создание кнопки с надписью

With .Add(Type:=msoControlButton, Id:=l)

.Caption = "Действо"

.TooltipText = "КнопкаДейства2"

.Style = msoButtonCaption

.OnAction = "Действо 2" End With

' Создание раскрывающегося списка

With .Add(Type:=msoControlDropdown)

.Addltem "Приедет", 1 .Addltem "Уедет", 2


.Addltem "Еще не решил", 3
.Listlndex = i
End With
End With
End With

End Sub
'

Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)

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

' ' и Стандартная при закрытии приложения

'

With Application

.CommandBars("Formatting").Visible = True

.CommandBars("Standard").Visible = True
End With
End Sub

А на листе модуля введите следующие две процедуры, которые будут выполняться при нажатии на соответствующие кнопки.

Sub Действо1()

MsgBox "Результат действа 1"
End Sub

Sub Действо 2()

MsgBox " Результат действа 2"
End Sub



Содержание раздела