Самоучитель 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









Начало  Назад  Вперед