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

Vba позволяет в Excel настраивать встроенные и создавать собственные управляющие панели.

Объект CommandBar представляет отдельную управляющую панель. Объектами CommandBar придется манипулировать не только в качестве строк меню и панелей инструментов, но и в качестве подменю и всплывающих меню (таблица 4.3).

В таблице 4.4 представлены методы объекта CommandBar.

Таблица 4.2

Константа типа элемента

управления

Объект элемента управления

Назначение

msoControlButton

CommandBarButton

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

msoControlComboBox

CommandBarComboBox

В управляющей панели типа панели инструментов создает элемент управления поля со списком. В управляющих панелях типа меню не используется

msoControlDropdown

CommandBarComboBox

В управляющей панели типа панели инструментов создает элемент управления списка. В управляющих панелях типа меню не используется

msoControlEdit

CommandBarComboBox

В управляющей панели типа панели инструментов создает элемент управления поля. В управляющих панелях типа меню не используется

msoControlPopup

CommandBarPopup

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

Таблица 4.3 – Свойства объекта CommandBar

Свойство

Описание

1

2

BuiltIn

Только для чтения, Boolean. Имеет значение True, если указанная управляющая панель встроена в вызывающее VBA-приложение

Controls

Только для чтения. Возвращает коллекцию Command BarControls, представляющую все элементы управления в управляющей панели (или элементы управления в управляющей панели, являющейся частью элемента управления всплывающего меню)

Enabled

Чтение-запись, Boolean. Имеет значение True, если управляющая панель активизирована. Для управляющих панелей типа панели инструментов панель инструментов появляется в списке доступных панелей инструментов, если это свойство имеет значение True

Height

Чтение-запись, Long. Возвращает или устанавливает высоту управляющей панели в пикселях. Если управляющая панель прижата к краю окна или защищена от изменения размеров, изменение этого свойства приводит к ошибке

Index

Только для чтения, Long. Возвращает номер указателя управляющей панели в коллекции CommandBars

Left

Чтение-запись, Long. Возвращает или устанавливает расстояние в пикселях левого края управляющей панели от левого края экрана

Name

Чтение-запись, String. Возвращает или устанавливает имя управляющей панели. Если управляющая панель является встроенной, свойство Name возвращает ее имя на английском языке США. Для возвращения имени управляющей панели с учетом локальной (т.е. языковой) версии необходимо использовать свойство NameLocal

NameLocal

Чтение-запись, String. Возвращает имя встроенной управляющей панели, отображаемой в языковой версии вызывающего VBA-приложения. Изменение свойства LocalName для нестандартной управляющей панели изменяет свойство Name и другие связанные с ним свойства

Продолжение таблицы 4.3

1

2

Position

Чтение-запись, Long. Возвращает или устанавливает позицию указанной управляющей панели. Для указания значения Position используйте класс MsoBarPosition встроенных констант: msoBarLeft, msoBarTop, msoBarRight, msoBarBottom, msoBarFloating, msoBar-Popup или msoBarMenu. (Константа позиции msoBarMenu указывает, что управляющая панель отображается как строка меню)

Protection

Чтение-запись, Long. Возвращает или устанавливает способ защиты управляющей панели от настройки пользователем. Может быть одной (или суммой) из встроенных констант MsoBarProtection: MsoBarNoProtection (по умолчанию), MsoBarNoCustomize, Mso-BarNoResize, MsoBarNoMove, MsoBarNoChangeVi-sible, MsoBarNoChangeDock, MsoBarNoVerticalDock, MsoBarNoHorizontalDock

RowIndex

Чтение-запись, Long. Возвращает или устанавливает порядок размещения управляющей панели, прижатой к краю окна относительно других управляющих панелей. Может быть целым значением больше нуля или же любой из следующих констант MsoBarRow: MsoBarRowFirst или MsoBarRowLast. Управляющие панели с более низким значением RowIndex прижимаются к краю окна первыми. Если более одной управляющей панели имеют одинаковое значение RowIndex, последняя назначенная управляющая панель будет отображаться первой

Top

Чтение-запись, Long. Возвращает или устанавливает расстояние в пикселях от верхнего края управляющей панели до верхнего края экрана

Type

Только для чтения, Long. Возвращает тип управляющей панели. Значение этого свойства может быть установлено только при создании объекта CommandBar

Окончание таблицы 4.3

1

2

Visible

Чтение-запись, Boolean. Имеет значение True, если

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

Width

Чтение-запись. Возвращает или устанавливает ширину управляющей панели в пикселях

Таблица 4.4 – Методы объекта CommandBar

Метод

Описание

Delete

Удаляет указанную управляющую панель из коллекции CommandBar

FindControl

Возвращает ссылку на указанный объект CommandBarControl, соответствующий указанному критерию. Метод FindControl следует использовать для обнаружения элемента управления на основе значений свойств Type, Id, Tag и Visible объекта CommandBarControl. Этот метод может также выполнять поиск всех подменю или всплывающих элементов управления в указанном элементе управления управляющей панели

Reset

Заставляет встроенную управляющую панель выполнить собственную перестановку в исходную конфигурацию, удаляя все нестандартные элементы управления и восстанавливая любые удаленные элементы управления встроенной управляющей панели

ShowPoup

Отображает управляющую панель в виде контекстного меню. По умолчанию контекстное меню отображается в текущей позиции указателя мыши, хотя при необходимости можно указать позицию отображения контекстного меню. Метод ShowPoup будет генерировать ошибку времени выполнения, если только свойство Position управляющей панели не установлено в msoBarPopup

Первый шаг по созданию нестандартной системы меню или панели инструментов заключается в добавлении нового объекта управляющей панели в коллекцию управляющих панелей приложения. Для этого используется метод Add коллекции CommandBars.

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

CommandBars.Add([Name, ] [Position, ] [MenuBar, ] [Temporary])

Все аргументы метода Add являются необязательными. Name представляет любое строковое выражение и указывает имя, которое нужно присвоить новой управляющей панели. Это имя используется для доступа к новой управляющей панели. Position представляет численное выражение, определяющее допустимый позиционный номер новой управляющей панели. MenuBar – выражение типа Boolean, указывающее, должна ли новая управляющая панель использоваться в качестве строки меню. Если значение MenuBarTrue, новая управляющая панель инициализируется так, чтобы отображаться на экране в качестве строки меню; если это значение False, новая управляющая панель отображается как панель инструментов. Аргумент Temporary также является выражением типа Boolean, которое в данном случае указывает, является ли новая управляющая панель временной. Если значение аргумента Temporary равно True, управляющая панель не будет сохранена в конце текущего сеанса работы; в противном случае она автоматически сохраняется в рабочей области Excel.

Метод Add создает пустую управляющую панель и добавляет ее в коллекцию CommandBars; по умолчанию новая управляющая панель видима.

Пример 1:

For IDCount = 1 To MaxItems

Application.StatusBar = “Adding ID” & IDCount

CmdBar.Controls.Add ID:=IDCount

Next IDCount

Цикл создает MaxItems новых элементов управления управляющих панелей. Каждому новому элементу управления присваивается значение идентификатора, соответствующее текущему значению счетчика цикла.

Пример 2

Set CmdBar = Commandbars.Add(Position:=msoBarFloating,_ MenuBar:=False, Temporary:=False)

В этом случае содержится инструкция, которая использует метод Add коллекции CommandBars приложения для добавления новой управляющей панели. Новая управляющая панель не прижата к краю экрана панелью инструментов, не является строкой меню (т.е. она отображается как стандартная панель инструментов) и не является временной (т.е. созданные процедурой DisplayAllFaceIDs панели инструментов будут автоматически сохраняться в рабочей области Excel). Метод Add возвращает объектную ссылку на только что созданную управляющую панель, которая присваивается переменной CmdBar.

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

Общий синтаксис восстановления встроенной управляющей панели следующий:

CommandBarObject.Reset.

CommandBarObject представляет любую допустимую объектную ссылку на объект управляющей панели. При выполнении метода Reset управляющая панель, на которую осуществляется ссылка, восстанавливается в своей конфигурации по умолчанию – все нестандартные элементы управления удаляются из нее независимо от времени или способа их создания.

Пример:

Sub ResetWorkSheetMenuBar()

CommandBars(“WorkSheetMenuBar”).Reset

CommandBars(“WorkSheetMenuBar”).Visible = True

End Sub

Коллекция CommandBars Excel используется для возвращения ссылки на WorkSheet MenuBar (строка меню листа), которая переустанавливается, а затем делается видимой.

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

CommandBar.Controls.Add([Type, ] [Id, ] [Parametr, ] [Before, ] [Temporary])

CommandBar представляет любую допустимую ссылку на объект CommandBar. Все аргументы метода Add являются необязательными.