- •Системное и прикладное программное обеспечение
- •Введение
- •Ввод данных. Логика условных операторов. Циклические вычисления
- •1.3 Циклы
- •1.7 Метод InputBox
- •Работа с макросами
- •Экранные формы. Автоматизация экранных форм
- •1.1.2 Элемент Надпись (Label)
- •1.1.3 Элемент Кнопка (CommandButton)
- •1.1.7 Элемент Полоса прокрутки (hScrolBar и vScrolBar)
- •1.1.8 Элемент Список (ListBox)
- •1.1.9 Элемент Комбинированное поле (ComboBox)
- •1.1.10 Массив элементов управления
- •2 Практическая часть
- •Меню и панели инструментов
- •Vba позволяет в Excel настраивать встроенные и создавать собственные управляющие панели.
- •2 Практическая часть
- •Управление приложением Excel с помощью vba
- •1.2 Объект Workbook
- •1.3 Объект Worksheet
- •1.4 Объект Range
- •Автоматизация. Использование объектов Microsoft Word
- •Доступ к данным с помощью ado
- •Процедуры обработки событий и надстройки
- •1.1 Где хранятся процедуры обработки событий
- •1.3 Процедуры, выполняемые при наступлении событий
- •1.4 Создание надстроек Excel
- •Литература
- •Содержание
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, указывающее, должна ли новая управляющая панель использоваться в качестве строки меню. Если значение MenuBar – True, новая управляющая панель инициализируется так, чтобы отображаться на экране в качестве строки меню; если это значение 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 являются необязательными.