Листинг 3.102. Создание панели со списком

Sub CreatePanel()

Dim i As Integer

On Error Resume Next

' Удаление одноименной панели (если есть)

CommandBars(«Список месяцев»).Delete

On Error GoTo 0

' Создание панели «Список месяцев»

With CommandBars.Add

.Name = «Список месяцев»

' Создание списка месяцев

With .Controls.Add(Type:=msoControlDropdown)

' Настройка (имя, макрос, стиль)

.Caption = «DateDD»

.OnAction = «SetMonth»

.Style = msoButtonAutomatic

' Добавление в список названий месяцев

For i = 1 To 12

.AddItem Format(DateSerial(1, i, 1), «mmmm»)

Next i

' Выделение первого месяца

.ListIndex = 1

End With

' Показываем созданную панель

.Visible = True

End With

End Sub

Sub SetMonth()

' Перенос названия выделенного месяца в ячейку

On Error Resume Next

With CommandBars(«Список месяцев»).Controls(«DateDD»)

ActiveCell.Value = .List(.ListIndex)

End With

End Sub

В результате написания данного кода будут созданы два макроса: CreatePanel и SetMonth. Первый предназначен для создания панели инструментов с раскрывающимся списком (рис. 3.40), а второй – для помещения выбранной позиции списка в активную ячейку рабочего листа.

Рис. 3.40. Созданный раскрывающийся список

Подобным образом можно создавать любые раскрывающиеся списки с произвольным перечнем значений, как включенные в панель инструментов, так и созданные отдельно от нее, – для этого достаточно внести соответствующие изменения в приведенный выше код.

<p>Добавление команды на вкладку</p>

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

<p>Добавление команды «Очистить все, кроме формул»</p>

Итак, добавим на вкладку Надстройки пользовательскую команду Очистить все, кроме формул. Кроме того, для удобства работы назначим данной команде сочетание клавиш Ctrl+Shift+C.

Для реализации поставленной задачи необходимо в стандартном модуле редактора VBA написать код, который выглядит следующим образом (листинг 3.103).

Перейти на страницу:

Похожие книги