Меню и панели инструментов
Цель работы: приобретение навыков создания собственных меню посредством языка VBA и работы с панелями инструментов с помощью процедур.
1 Теоретические сведения
Excel позволяет создавать новые меню и панели инструментов или добавлять новые команды в существующие меню и панели инструментов. Меню и панели инструментов, отображаемые приложением, образуют интерфейс пользователя приложения, т.е. систему, посредством которой пользователь взаимодействует с приложением. Все приложения Microsoft Office (в том числе Excel) реализуют строки меню и панели инструментов в виде различных подтипов одного класса объектов: объекта CommandBar. Объект CommandBar может быть одним из трех типов: строкой меню, всплывающим меню или панелью инструментов. Тип панели команд определяется значением, хранящимся в свойстве Type панели команд. В VBA-программе тип панели команд представляется посредством встроенных констант (таблица 4.1). Таблица 4.1 – Встроенные константы MsoBarType
Когда свойство Type объекта CommandBar установлено в msoBarTypeMenuBar, объект управляющей панели отображается в виде строки меню. Эта строка размещается поперек верхнего края окна приложения, и в ней приводятся пункты первого уровня меню, доступные в текущий момент. Объекты CommandBar являются контейнерами: они могут не содержать либо содержать один или несколько элементов управления управляющей панели. Элементы управления управляющей панели – это кнопки, подменю, списки и другие компоненты, появляющиеся в управляющей панели. Коллекция элементов управления может содержать другие объекты CommandBar. Когда свойство Type объекта CommandBar установлено в msoBarTypeNormal, объект управляющей панели появляется в виде панели инструментов. В отличие от меню в панели инструментов более вероятно наличие таких элементов управления, как поля со списком, списки, поля и всплывающие меню. Часто используемые объекты CommandВarControl представлены в таблице 4.2. VBA позволяет в Excel настраивать встроенные и создавать собственные управляющие панели. Объект CommandBar представляет отдельную управляющую панель. Объектами CommandBar придется манипулировать не только в качестве строк меню и панелей инструментов, но и в качестве подменю и всплывающих меню (таблица 4.3). В таблице 4.4 представлены методы объекта CommandBar. Таблица 4.2
Таблица 4.3 – Свойства объекта CommandBar
Таблица 4.4 – Методы объекта CommandBar
Первый шаг по созданию нестандартной системы меню или панели инструментов заключается в добавлении нового объекта управляющей панели в коллекцию управляющих панелей приложения. Для этого используется метод 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 являются необязательными.
2 Практическая часть
З а д а н и е 1 Создайте процедуру, которая должна создать и вывести на экран панель инструментов с тремя кнопками: Создать (ID равен 2530), Открыть (ID равен 23) и Сохранить (ID равен 3). Создайте также процедуру, которая будет удалять созданную панель. Выполните и протестируйте эти процедуры.
З а д а н и е 2 Напишите процедуру, которая создавала бы и выводила на экран строку меню, содержащую пункты Файл, Правка и Справка. Напишите еще одну процедуру для удаления этой строки меню. На свободном рабочем листе создайте две командные кнопки, которые выполняли бы эти процедуры. Выполните и протестируйте процедуры.
3 Контрольные вопросы
3.1 Какой коллекции принадлежат панели инструментов как элементы? 3.2 Какой коллекции принадлежат кнопки панелей инструментов как элементы? 3.3 Какой метод применяется для удаления панелей инструментов? 3.4 Какое свойство применяется для задания значка, выводимого на кнопке? 3.5 Какой метод используется для создания меню? 3.6 Какой тип элемента управления задает пункт меню? 3.7 Как вывести на экран панель инструментов с помощью кода VBA?
Лабораторная работа 5
|