Лаб.практикум по инф-ке_МУ. С. Л. Миньков лабораторный практикум по информатике
Скачать 4.64 Mb.
|
Раздел 7. Элементы управления Цель раздела: изучить элементы управления VBA Excel, их свойства и методы; научиться создавать рабочие листы с исполь- зованием элементов управления. 7.1 Формы В Microsoft Excel с использованием VBA (или встроенных возможностей) можно создавать замечательные формы и добав- лять на них многочисленные элементы управления и объекты, значительно расширяющие возможности ввода данных и их представления. Форма — это документ, имеющий стандартную структуру и формат, упрощающий сбор, упорядочение и изменение данных. В Excel можно создавать формы нескольких типов: – формы данных (см. п.3.9), – листы с элементами управления формы и элементами ActiveX (то есть сам лист будет являться формой), – пользовательские формы VBA. Каждый из этих типов формы можно использовать по от- дельности или сочетать с другими типами для создания нужного решения. Сам лист Excel можно считать формой в виде сетки, позво- ляющей вводить и просматривать данные. В листы Excel по умолчанию встроены возможности, аналогичные элементам управления, например примечания и средства проверки данных. Ячейки, как и текстовые поля, поддерживают различные способы ввода и форматирования данных. Ячейки часто используются в качестве подписей, а путем настройки высоты и ширины ячеек, а также их объединения можно сделать лист похожим на простую форму для ввода данных. Другие возможности, например приме- чания к ячейкам, гиперссылки, фоновые изображения, проверка данных, условное форматирование, встроенные диаграммы и ав- тофильтр, рассмотренные ранее, позволяют использовать лист в качестве формы с расширенными функциями. 137 Для обеспечения гибкости управления на полотно листа до- бавляют элементы управления и другие графические объекты. В Excel поддерживаются два типа элементов управления: эле- менты управления форм и элементы ActiveX. Кроме того, можно добавлять объекты из средств рисования, например автофигуры, графические элементы SmartArt и надписи. 7.2 Элементы управления формы Элементы управления формы (табл. 7.1) позволяют ссы- латься на данные ячеек и взаимодействовать с ними без исполь- зования программного кода VBA. Кроме того, их можно добав- лять на листы диаграмм. Например, после добавления списка на лист и его связи с ячейкой можно возвращать числовое значе- ние текущей позиции выбранного элемента. Затем можно исполь- зовать это значение с функцией ИНДЕКС для выбора других элементов из списка. С помощью элементов управления формы можно также вы- полнять макросы. Можно назначить элементу управления суще- ствующий макрос либо создать или записать новый. Когда поль- зователь формы щелкает элемент управления, запускается макрос. Но такие элементы управления невозможно добавлять в пользовательские формы, а также применять для выполнения веб-скриптов на веб-страницах. Таблица 7.1 — Элементы управления формы Эле- мент Назва- ние эле- мента Пример Описание Надпись Указывает назначение ячейки или текстового поля либо содержит описа- ние (заголовки, подписи, рисунки) или краткие инструкции Рамка Группирует связанные элементы управления в виде прямоугольника с необязательной подписью. Обычно группируются переключатели, флажки или тесно связанные данные 138 Эле- мент Назва- ние эле- мента Пример Описание Кнопка Запуск макроса, который выполняет действие при нажатии кнопки Флажок Включает или отключает значение, что соответствует выбору противопо- ложных действий. На листе или в груп- пе можно установить несколько флаж- ков. Флажок может иметь одно из трех состояний: установлен (значение вклю- чено), снят (значение отключено) и смешенное состояние, то есть сочетание состояний «включено» и «отключено» (если поддерживается выбор несколь- ких элементов) Переклю- чатель Позволяет выбрать одно из ограни- ченного набора взаимоисключающих значений. Переключатели обычно нахо- дятся в группе или рамке. Переключатель может иметь одно из трех состояний: установлен (значение включено), снят (значение отключено) и смешенное со- стояние, т. е. сочетание состояний «вклю- чено» и «отключено» (если поддержива- ется выбор нескольких элементов) Список Выводит список из одного или не- скольких текстовых элементов, которые может выбрать пользователь. Список можно применять для представления большого числа вариантов, количество и содержимое которых может быть различ- ным. Существует три типа списков: Простой список поддерживает вы- бор только одного элемента. Такой список напоминает группу переключателей, но позволяет более эффективно работать с большим числом элементов. Список связанного выбора позволя- ет выбрать один элемент, а также не- сколько расположенных рядом элементов. Список, разрешающий несвязный выбор нескольких строк, позволяет вы- брать один элемент, расположенные ря- дом элементы, разрозненные элементы 139 Эле- мент Назва- ние эле- мента Пример Описание Поле со списком Представляет собой сочетание тек- стового поля и раскрывающегося спис- ка. Поле со списком компактнее обыч- ного списка, но чтобы отобразить спи- сок элементов, пользователь должен щелкнуть стрелку вниз. Поле со спис- ком следует использовать, когда требу- ется обеспечить возможность ввода элементов в список и выбора из него одного элемента. В этом элементе управления отображается текущее зна- чение независимо от того, каким обра- зом оно было введено Полоса прокрутки Используется для прокрутки диапа- зона значений с помощью кнопок со стрелками или путем перетаскивания ползунка полосы прокрутки. Можно перемещаться по странице значений (с заранее заданным интервалом), щелкая область между ползунком и одной из кнопок со стрелками для прокрутки. Как правило, пользователь также может вводить текст непосредственно в свя- занную ячейку или текстовое поле Счетчик Позволяет увеличивать и уменьшать значение, например числовое значение, время или дату. Чтобы увеличить зна- чение, щелкните стрелку вверх, чтобы уменьшить — стрелку вниз. Как прави- ло, пользователь также может вводить текст непосредственно в связанную ячейку или текстовое поле Примечание. Элементы управления (Текстовое поле), (Поле со списком) и (Поле с раскрывающимся списком) недо- ступны в книгах Excel 2010 (см. рис 4.7). 7.3 Элементы ActiveX Элементы ActiveX (табл. 7.2) можно использовать на листе Excel (без кода VBA или с ним), а также на пользовательских формах VBA. Их рекомендуется применять, если требуются бо- лее гибкие возможности, чем у элементов управления формы. Окончание табл. 7.1 140 Многочисленные свойства элементов ActiveX позволяют настраивать их внешний вид, поведение, шрифты и другие харак- теристики. Можно также управлять событиями, которые происходят при взаимодействии с элементом ActiveX. Например, можно вы- полнять различные действия в зависимости от того, какой эле- мент выбирается из списка, или отправлять запрос базе данных для заполнения поля со списком элементами при нажатии кноп- ки. Можно также создавать макросы, которые реагируют на со- бытия, связанные с элементами ActiveX. При выборе элемента управления будет выполняться код VBA, обрабатывающий все назначенные ему события. Примечание. Не все элементы ActiveX можно использовать непосредственно на листах; некоторые из них можно применять только в пользовательских формах Visual Basic для приложений (VBA). При попытке добавить такие элементы управления на лист приложение Excel отображает сообщение «Вставка объ- екта неосуществима». Элементы ActiveX невозможно добавить на листы диаграмм (с помощью пользовательского интерфейса) или на листы макро- сов XLM. Кроме того, невозможно назначить макрос, который будет выполняться непосредственно элементом ActiveX, как для элемента управления формы. Таблица 7.2 — Обзор элементов ActiveX Кноп- ки Назва- ние Пример Описание Флажок Включает или отключает значение, что соответствует выбору противоположных действий. На листе или в группе можно одновременно установить несколько флажков. Флажок может иметь одно из трех состояний: установлен (значение включено), снят (значение отключено) и смешенное состояние, то есть сочетание состояний «включено» и «отключено» (если поддерживается выбор нескольких элементов) 141 Кноп- ки Назва- ние Пример Описание Текстовое поле Представляет собой прямоугольник, в котором можно просматривать, вводить и изменять текст или данные, связанные с ячейкой. Текстовое поле также может быть статическим и содержать данные, предназначенные только для чтения Кнопка Запуск макроса, который выполняет действие при нажатии кнопки Переклю- чатель Позволяет выбрать одно из ограничен- ного набора взаимоисключающих значе- ний. Переключатели обычно находятся в группе или рамке. Переключатель может иметь одно из трех состояний: установлен (значение включено), снят (значение от- ключено) и смешенное состояние, то есть сочетание состояний «включено» и «от- ключено» (если поддерживается выбор нескольких элементов) Список Выводит список из одного или не- скольких текстовых элементов, которые может выбрать пользователь. Список можно применять для представления большого числа вариантов, количество и содержимое которых может быть различ- ным. Существует три типа списков: Простой список поддерживает выбор только одного элемента. Такой список напоминает группу переключателей, но позволяет более эффективно работать с большим числом элементов. Список связанного выбора позволяет выбрать один элемент, а также несколько расположенных рядом элементов. Список, разрешающий несвязный выбор нескольких строк, позволяет вы- брать один элемент, расположенные ря- дом элементы, а также разрозненные эле- менты Продолжение табл. 7.2 142 Кноп- ки Назва- ние Пример Описание Поле со списком Представляет собой сочетание тексто- вого поля и раскрывающегося списка. По- ле со списком компактнее обычного спис- ка, но чтобы отобразить список элементов, пользователь должен щелкнуть стрелку вниз. Поле со списком следует использо- вать, когда требуется обеспечить возмож- ность ввода элементов в список и выбора из него одного элемента. В этом элементе управления отображается текущее значе- ние независимо от того, каким образом оно было введено Выклю- чатель Указывает на состояние (да/нет) или режим (вкл./вкл.). При нажатии кнопки она меняет свое состояние на противопо- ложное Счетчик Позволяет увеличивать и уменьшать зна- чение, например числовое значение, время или дату. Чтобы увеличить значение, щелк- ните стрелку вверх, чтобы уменьшить — стрелку вниз. Как правило, пользователь также может вводить текст в связанную ячейку или текстовое поле Полоса прокрут- ки Используется для прокрутки диапазона значений с помощью кнопок со стрелками или путем перетаскивания ползунка поло- сы прокрутки. Можно перемещаться по странице значений (с заранее заданным интервалом), щелкая область между пол- зунком и одной из кнопок со стрелками для прокрутки. Пользователь также может вводить текст непосредственно в связан- ную ячейку или текстовое поле Надпись Указывает назначение ячейки или тек- стового поля либо содержит описание (за- головки, подписи, рисунки) или краткие инструкции Изобра- жение Выводит изображение, например то- чечный рисунок (BMP), JPEG или GIF Продолжение табл. 7.2 143 Кноп- ки Назва- ние Пример Описание Другие элементы Выводит список доступных на компью- тере элементов ActiveX, которые можно добавить в настраиваемую форму (напри- мер, проигрывателя Windows Media). В этом диалоговом окне также можно за- регистрировать пользовательский элемент управления Рамка Группирует связанные элементы управления в виде прямоугольника с не- обязательной подписью. Обычно группи- руются переключатели, флажки или тесно связанные данные. ПРИМЕЧАНИЕ. Элемент ActiveX «Рамка» недоступен в разделе Элементы ActiveX на вкладке Вставка. Но его можно добавить из диалогового окна Другие эле- менты, выбрав пункт Рамка (Microsoft Forms 2.0 Frame) 7.4 Объекты средств рисования В форму также можно включать графические элементы SmartArt, фигуры, WordArt и надписи. Можно изменять размер и цвет таких объектов, поворачивать, отражать и объединять их, чтобы получать еще более сложные фигуры. При вводе текста непосредственно в фигуру или надпись он становится частью объекта — при повороте или отражении объекта текст также ме- няет свое положение. В отличие от элементов ActiveX отдельным словам и знакам в объекте можно назначать различные атрибуты, например размер или начертание шрифта. Кроме того, объектам можно назначать макросы или гиперссылки. Можно даже связать текст в фигуре или надписи с ячейкой листа и динамически вы- водить обновленные значения. Примечание. По внешнему виду иногда трудно определить тип элемента управления. Для этого щелкните его правой кноп- кой мыши по периметру объекта и просмотрите контекстное ме- ню. Окончание табл. 7.2 144 Если контекстное меню содержит команду Свойства, элемент управления является элементом ActiveX и сейчас ис- пользуется режим конструктора. Если контекстное меню содержит команду Назначить макрос, это элемент управления формы. Если контекстное меню содержит команду Изменить текст, это объект-рисунок. Работа с Кнопкой — и как с элементом управления формы, и как с элементом ActiveX была рассмотрена выше. Поработаем с другими элементами. Пример 7.1. Использование элементов управления «Фла- жок» и «Переключатель». Флажки(CheckBox) используются для выбора не взаимоис- ключающих вариантов (если этих вариантов немного), а пере- ключатели (OptionButton), наоборот, — для выбора варианта в ситуации или/или. Разместим на новом рабочем листе вертикально в ряд три элемента ActiveX CheckBox. Назовем их «Два состояния», «Три состояния» и «Связан с D6» (рис. 7.1). Рис. 7.1 — Часть листа Excel с элементами управления Флажок и Переключатель 145 Создадим для них процедуры отклика на событие Click. В теле процедур поместим соответствующую инструкцию MsgBox. Затем в окне редактирования кода модуля запишем следующее: Private Sub CheckBox1_Click() MsgBox "Значение для CheckBox1 равно" & CheckBox1.Value End Sub Private Sub CheckBox2_Click() MsgBox "Значение для CheckBox2 равно" & CheckBox2.Value End Sub Private Sub CheckBox3_Click() MsgBox "Значение для CheckBox3 равно" & CheckBox3.Value End Sub Для второго флажка установим свойство TripleState равным True . Для третьего флажка установим свойство LinkedCell (свя- занная ячейка) равным соответственно D6. Ниже поместим элемент управления формы Флажок и назначим ему макрос: Sub Флажок1_Щелчок() MsgBox "Работает флажок" End Sub Затем установим три элемента ActiveX CheckBox Op- tionButton. Для каждого переключателя установим в свойствах различ- ные детали оформления (BackColor, Shadow и др.). Создадим кнопку Узнать состояние. В окне редактирова- ния кода модуля запишем: Private Sub CommandButton1_Click() If OptionButton1.Value = True Then MsgBox "Включен Переклю- чатель 1" If OptionButton2.Value = True Then MsgBox "Включен Переклю- чатель 2" If OptionButton3.Value = True Then MsgBox "Включен Переклю- чатель 3" End Sub 146 Рядом поместим переключатели как элементы управления формы. Назначим им макросы Sub Перекл1_Щелчок() MsgBox "Включен Переключатель 2, а Переключатель 1 вы- ключен", , "Работа переключателя - элемента управления формой" End Sub Sub Перекл2_Щелчок() MsgBox "Включен Переключатель 1, а Переключатель 2 вы- ключен", , "Работа переключателя - элемента управления формой" End Sub Задание 7.1. Работа с элементами управления CheckBox, OptionButton и ToggleButton Протестировать работу всех элементов, расположенных на листе (рис. 7.1) и описать отличия в работе элементов управ- ления формы и элементов ActiveX. Поместить элемент ActiveX ToggleButton (Выключатель), при нажатии на который появляет- ся сообщение «Включено!», при отжатии — «Выключено!». Опи- сать особенности его работы по сравнению с другим кнопками («button»). Пример 7.2. Использование элементов управления «Спи- сок», «Счетчик» и «Полоса прокрутки». Откроем новый рабочий лист и поместим элемент ActiveX Список (ListBox). Выделим рядом со списком двенадцать ячеек и присвоим этому диапазону имя Данные1, выбрав в контекстном меню ко- манду Присвоить имя… или вызвав Диспетчер имен (Ctrl+F3). Затем введем значения в эти ячейки, например названия ме- сяцев. Для заполнения списка данными из этого диапазона ука- жем в свойстве ListFillRange значение Данные1 (можно указать и массив ячеек). Установим связь списка с какой-либо ячейкой на листе (например, G2), изменив свойство LinkedCell. 147 На этом же рабочем листе поместим второй элемент управ- ления Список, три кнопки, три переключателя и один флажок. Переименуем все элементы управления согласно рис. 7.2. Рис. 7.2 — Часть листа Excel с элементами управления ListBox, ScrollBar и SpinButton Затем в окне редактирования кода флажка CheckBox1 за- пишем: Private Sub CheckBox1_Click() If CheckBox1.Value Then ListBox2.ListStyle = fmListStyleOption Else ListBox2.ListStyle = fmListStylePlain End If ListBox2.Height = 170 End Sub Этот процедура проверяет значение флажка CheckBox1. Ес- ли флажок установлен, то стиль списка ListBox2 устанавливается равным fmListStyleOption (отображаются переключатели). Ина- че устанавливается стиль fmListStylePlain (переключателей нет). Первым двум кнопкам (Заполнить список и Очистить список) присвоим следующие процедуры: Private Sub CommandButton1_Click() 'Обращаемся к объекту ListBox2 With ListBox2 148 'Очищаем содержимое .Clear 'Добавляем строки For i = 1 To 12 .AddItem "Строка "& i Next i End With End Sub Private Sub CommandButton2_Click() 'Очищаем содержимое списка ListBox2.Clear End Sub Для переключателей напишем следующие процедуры, кото- рые определяют способ выделения строк в списке: Private Sub OptionButton1_Click() 'Выделение одной строки ListBox2.MultiSelect = fmMultiSelectSingle End Sub Private Sub OptionButton2_Click() 'Выделение нескольких строк в списке ListBox2.MultiSelect = fmMultiSelectMulti End Sub Private Sub OptionButton3_Click() 'Выделение нескольких строк в списке с помощью Ctrl или Shift ListBox2.MultiSelect = fmMultiSelectExtended End Sub Третьей кнопке (Что выделено?) назначим процедуру про- верки режима выделения. Если переключателем включен режим выделения одной строки fmMultiSelectSingle, то на экран выводится значение вы- деленной строки или сообщение «Ничего не выделено» при от- сутствии выделения. Если включен другой режим (множествен- ное выделение), то осуществляется перебор всех строк списка и в случае обнаружения выделенной строки переменной ListFlag присваивается значение True. Затем идет проверка выделения: 149 если значение True, то на экран выдается сообщение — значение выделенной строки, если False, то сообщение, что ничего не вы- делено. Соответствующий код выглядит следующим образом: Private Sub CommandButton3_Click() 'Проверка выделения Dim ListFlag As Boolean Dim x As Integer ListFlag = False With ListBox2 If .MultiSelect = fmMultiSelectSingle Then If .Text = "" Then MsgBox "Ничего не выделено" Else MsgBox .Value End If Else For x = 0 To .ListCount - 1 If .Selected(x) = True Then ListFlag = True End If Next x Select Case ListFlag Case Is = False MsgBox "Ничего не выделено" Case Is = True For x = 0 To .ListCount - 1 If .Selected(x) Then MsgBox .List(x) End If Next x End Select End If End With End Sub Поместим на этот же лист два элемента ActiveX Полоса прокрутки (ScrollBar) и один элемент Счетчик (SpinButton). Для всех элементов зададим максимальное и минимальное значе- ние (Min = 0 и Max = 100). 150 Для первой полосы прокрутки задаем связанную ячейку M13, изменив свойство LinkedCell. (рис. 7.2). Для второй полосы прокрутки создадим процедуру отклика на событие Change. Запишем в окне редактирования кода модуля следующий код: Private Sub ScrollBar2_Change() MsgBox ScrollBar2.Value End Sub Для счетчика также зададим связанную ячейку M17. При движении бегунка первой полосы прокрутки в связан- ной ячейке F3 должно появляться соответствующее значение бе- гунка из заданного диапазона. При движении бегунка второй полосы прокрутки соответ- ствующее значение бегунка из заданного диапазона будет появ- ляться в окне сообщения. При нажатии кнопок со стрелками «влево» или «вправо» счетчика в связанной ячейке В11 должно появляться соответ- ствующее значение счетчика из заданного диапазона. Задание 7.2. Работа с элементами управления ListBox, ScrollBar и SpinButton 1. Протестировать созданные программные коды. 2. Вставить Полосу прокрутки и Счетчик как элементы формы управления. Сравнить их работу с соответствующими элементами ActiveX. 3. Изменить макрос CommandButton1_Click таким обра- зом, чтобы в список ListBox2 добавлялось содержимое из ListBox1 с номером строки. |