[an error occurred while processing this directive]

В начало

Введение

1-й час. Знакомство с Visual Basic for Applications

2-й час. Работа с макросами

3-й час. Работа с элементами управления

4-й час. Переменные и константы

5-й час. Ввод данных

6-й час. Логика условных операторов

7-й час. Циклические вычисления

8-й час. Введение в объекты

9-й час. Основные объекты Excel

10-й час. Объект Range

11-й час. Редактор Visual Basic

12-й час. Отладка программ

13-й час. Обработка ошибок

14-й час. Экранные формы

15-й час. Автоматизация экранных форм

16-й час. Панели инструментов

17-й час. Работа с меню

18-й час. Диаграммы

19-й час. Сводные таблицы

20-й час. Получение внешних данных

21-й час. Доступ к данным с помощью ADO

22-й час. Еще об ADO

23-й час. Автоматизация

24-й час. Выполнение процедур

Приложение. Ответы

3-й час. Работа с элементами управления

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

В этом часе будут рассмотрены следующие вопросы.

  • Краткое введение в процесс разработки приложений.
  • Описание различных типов элементов управления.
  • Вставка элементов управления в рабочий лист.
  • Создание связи элементов управления с ячейками рабочего листа.
  • Создание экранных форм.

Введение в процесс разработки приложений

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

  • Кто будет применять приложение?
  • Откуда будут поступать данные, используемые в приложении?
  • Где и как будут храниться данные, полученные с помощью приложения?
  • Как данные будут обрабатываться приложением?
  • В каком виде будут представлены выходные данные?

Рассмотрим возможные ответы на эти вопросы.

Кто будет использовать приложение

Если вы будете точно знать будущего пользователя вашего приложения, то наверняка сможете определить, как оно должно выглядеть (внешний вид интерфейса) и каким быть "на ощупь" (степень сложности работы с интерфейсом). Если вы разрабатываете приложение для опытных пользователей Excel, то для ввода данных можно, например, использовать все возможности рабочего листа. Если же ваш будущий пользователь едва знаком с Excel, то для ввода данных лучше организовать специальную форму ввода.

Откуда будут поступать данные для приложения

Возможны различные варианты ответа на этот вопрос. Данные уже находятся в некой рабочей книге; при каждой загрузке приложение должно работать с новыми данными; данные импортируются из внешней базы данных. Местоположение данных является одним из определяющих факторов при разработке приложения.

Где и как будут храниться данные, полученные с помощью приложения

Могут быть следующие варианты ответа. Например, данные будут храниться в той же рабочей книге, где находится само приложение, либо в другой рабочей книге. А может, данные необходимо экспортировать во внешний файл, например Microsoft Access или Microsoft SQL Server? Если данные даже временно будут находиться в рабочей книге, то вы должны заранее создать эту рабочую книгу с соответствующей структурой рабочих листов.

Как данные будут обрабатываться приложением

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

Вид выходных данных

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

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

Типы элементов управления

Элементы управления можно вставлять как в рабочие листы, так и в экранные формы. Экранные формы (их также называют пользовательскими формами, от английского UserForm) - это окна (обычного вида, либо диалоговые), являющиеся частью интерфейса приложения. В экранную форму можно вставить больше разнообразных типов элементов управления, чем в рабочий лист. Мы сначала рассмотрим элементы управления, которые можно использовать совместно с рабочим листом (эти же элементы управления можно применять и в экранных формах).

Рис. 3.1. Панель инструментов с элементами управления, которые можно поместить на рабочий лист.

Закройте все открытые рабочие книги и откройте новую рабочую книгу. Щелкните правой кнопкой мыши на любой панели инструментов и выберите в контекстном меню панели команду Формы. На экране появится панель инструментов Формы (рис. 3.1). На этой панели расположены 16 элементов управления, но только 9 из них сейчас доступны - это те элементы управления, которые можно использовать в рабочих листах.

Первым на панели Формы расположен инструмент Надпись. Надпись - статическая область текста, обычно содержащая какую-либо поясняющую информацию, например к элементам интерфейса. На рис. 3.2 показан пример надписи. На этом рисунке проведена стрелка от инструмента Надпись панели Формы к надписи как объекту рабочего листа.

Рис. 3.2. Надпись - текст на рабочем листе, который располагается поверх ячеек

Следующий элемент управления, который представлен на панели Формы, - Рамка. Рамка используется для визуального объединения каких-либо элементов управления в группу, показывая, что эти элементы связаны между собой. Чтобы увидеть пример использования рамки, выполните команду Файл > Печать и в диалоговом окне Печать обратите внимание на секцию Вывести на печать, где собраны переключатели, с помощью которых пользователь указывает, что именно надо вывести на печать (выделенный диапазон ячеек, выделенные рабочие листы или всю рабочую книгу).

Рядом с инструментом Рамка на панели Формы находится инструмент Кнопка, с помощью которого в рабочий лист можно вставить командную кнопку. Этот элемент управления мы рассмотрели во 2-м часе "Работа с макросами". Командные кнопки широко используются в интерфейсах приложений и знакомы любому пользователю. В Windows вы на каждом шагу встречаетесь с такими кнопками, как ОК, Отмена, Да и Нет.

Следующие два элемента управления, флажок и переключатель, используются в похожих ситуациях, когда пользователю надо сделать выбор из нескольких возможностей. И флажки, и переключатели работают как переключающие элементы, имеющие два устойчивых состояния: включено и выключено. На этом их подобие заканчивается. Если флажки, показанные на рис. 3.3, организованы в группу, то пользователь может установить в этой группе один, несколько или все флажки. В отличие от флажков, в группе переключателей (рис. 3.4) можно выбрать только один переключатель из группы.

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

Рис. 3.3. Флажки используются для выбора одновременно нескольких вариантов из нескольких возможных

Рис. 3.4. Переключатели позволяют сделать только один выбор из нескольких возможных

Список и поле со списком также предлагают несколько вариантов выбора. Допустим, пользователю надо выбрать определенный регион из набора регионов. Можно поместить этот набор регионов в элемент управления список (рис. 3.5), а оттуда затем выбрать нужный регион. Если поместить набор регионов в поле со списком (рис. 3.6), то кроме выбора из списка также можно ввести любое свое значение. Поле со списком - это просто комбинация списка и поля ввода.

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

Последние два элемента управления, которые можно поместить на рабочий лист, - полосы прокрутки и счетчик. Полосы прокрутки (рис. 3.7) как элементы управления - это не совсем то, чем вы привычно пользуетесь для прокрутки, например, рабочего листа. В данном случае полосы прокрутки применяются в качестве механизмов выбора. В графических программах вы, наверное, видели, как с помощью полос прокрутки можно выбрать цвет либо сделать изображение более светлым или более темным.

Рис. 3.7. Полосы прокрутки могут быть горизонтальными и вертикальными

Рис. 3.8. Счетчик - компактный элемент управления (щелкая на его кнопках со стрелками, вы можете ввести (выбрать) числовое значение)

Счетчики (рис. 3.8) также можно рассматривать как средства выбора или как средства ввода числовых значений из заданного интервала. Если вы настраивали в Windows время и дату, то обязательно встречались со счетчиками.

Вставка элементов управления в рабочий лист

Я часто повторяю своим студентам, что если они могут нарисовать прямоугольник в программе Windows Paintbrush, то они имеют необходимый уровень подготовки для начала разработки интерфейса в среде Excel, - и то, и другое имеет примерно одинаковый уровень сложности. Чтобы проиллюстрировать это утверждение, опишем процесс вставки элемента управления в рабочий лист.

  1. На панели инструментов Формы выберите элемент управления.
  2. Поместите указатель мыши в то место рабочего листа, где должен находиться верхний левый угол элемента управления.
  3. Нажмите левую кнопку мыши и протащите указатель, рисуя прямоугольник. Этот прямоугольник задает размеры вставляемого элемента управления.
  4. Отпустите кнопку мыши. Процесс вставки элемента управления в рабочий лист закончен.

Как видите, процесс вставки элемента управления действительно почти не отличается от процесса рисования прямоугольника. Теперь опишем процесс вставки конкретных элементов управления в рабочий лист.

  1. Откройте новую рабочую книгу.
  2. Отобразите панель инструментов Формы.
  3. Выберите инструмент Надпись.
  4. Поместите указатель мыши, который принял вид перекрестия (или знака "+"), на ячейку D1.
  5. Нажмите левую кнопку мыши и протащите указатель, рисуя прямоугольник размером примерно 2×2 ячейки. Отпустите кнопку мыши.
  6. Выделите слово Метка 1 в нарисованном прямоугольнике и нажмите клавишу <Delete>.
  7. Напечатайте текст Это пример элемента управления Надпись.
  8. Щелкните вне прямоугольника, чтобы снять с него выделение. У вас должно получиться нечто, похожее на то, что изображено на рис. 3.9.
  9. Выберите инструмент Флажок на панели Формы.
  10. Поместите указатель мыши, который принял вид перекрестия, на ячейку Е5.
  11. Нажмите левую кнопку мыши и протащите указатель, рисуя прямоугольник размером примерно 2×2 ячейки. Отпустите кнопку мыши.
  12. Применяя описанную методику, вставьте в рабочий лист полосу прокрутки и счетчик. Результат показан на рис. 3.10.

Рис. 3.9. Текст надписи располагается не в ячейках рабочего листа, а над ними

Рис. 3.10. Рабочий лист с вставленными элементами управления

После вставки элементов управления в рабочий лист их можно переместить или изменить их размеры. Для этого прежде всего надо их выделить. Щелчком левой кнопкой мыши элементы управления выделить нельзя (за исключением надписи). Для выделения элемента управления надо щелкнуть на нем правой кнопкой мыши. Элемент управления перейдет в режим редактирования, и отобразится его контекстное меню. Если вам в данный момент не нужно контекстное меню, то закройте его, щелкнув левой кнопкой мыши на элементе управления. Выделенный элемент управления обрамляет широкая серая рамка. Для перемещения элемента управления установите указатель мыши на этой рамке, указатель при этом должен принять вид четырехнаправленной стрелки. Нажмите левую кнопку мыши и перетащите контур элемента управления в новое местоположение. Для изменения размеров элемента управления поместите указатель мыши на один из маркеров изменения размеров (маленьких квадратиках) обрамляющей рамки так, чтобы указатель принял вид двунаправленной стрелки. Нажмите левую кнопку мыши и перетащите указатель мыши, чтобы придать элементу управления нужный размер.

Если вы хотите одновременно переместить или изменить размеры нескольких элементов управления, то сначала выделите один из них. Затем нажмите и удерживайте клавиши <Ctrl> и <Shift>, Щелкните на следующем элементе управления. Оба элемента будут выделены. Продолжайте удерживать клавиши <Ctrl> и <Shift> и щелкайте на тех элементах управления, которые нужно выделить.

Форматирование элементов управления

Вам, конечно, уже не терпится узнать, как можно использовать элементы управления, помешенные на рабочий лист. Можно назначить им макросы, как описано во 2-м часе. Но можно найти им и другое применение. Большинство элементов управления можно использовать для ввода значений в рабочий лист. Назначение задания элементу управления осуществляется путем его форматирования. Форматирование элемента управления позволяет изменить его внешний вид и определить его поведение. Для форматирования элемента управления выполните следующие действия.

  1. Выделите флажок, помещенный на рабочий лист.
  2. Щелкните на нем правой кнопкой мыши и в контекстном меню выберите команду Формат объекта. Откроется диалоговое окно Формат элемента управления.
  3. Перейдите на вкладку Элемент управления (рис. 3.11).
  4. В поле Связь с ячейкой введите А1 и щелкните на кнопке ОК.
  5. Щелкните вне области флажка для снятия с него выделения.
  6. Щелкните на флажке, чтобы поместить на него "галочку" (это называется установить флажок). В ячейке А1 появится слово ИСТИНА.
  7. Еще раз щелкните на флажке, чтобы удалить с него "галочку" (это действие называется снять флажок). В ячейке А1 появится слово ЛОЖЬ.

Для тестирования состояния ячейки А1 можно использовать функцию Excel ЕСЛИ. Затем, в зависимости от значения этой ячейки, можно выполнить разные действия или вычисления. Например, если при установке флажка надо увеличить значение ячейки А4 на 20%, то можно воспользоваться формулой =ЕСЛИ(А1=ИСТИНА;А4*1,2;А4).

  1. Выделите на рабочем листе полосу прокрутки, созданную ранее.
  2. Щелкните на ней правой кнопкой мыши и в контекстном меню выберите команду Формат объекта. Отобразится диалоговое окно Формат элемента управления.
  3. Перейдите на вкладку Элемент управления (рис. 3.12).

Рис. 3.11. Это диалоговое окно позволяет связать элемент управления и ячейку рабочего листа

Рис. 3.12. Вкладка элемент управления имеет разный вид для различных элементов управления

  1. В поле Связь с ячейкой введите A3 и щелкните на кнопке ОК.
  2. Щелкните вне полосы прокрутки, чтобы снять с нее выделение.
  3. Щелкните на полосе прокрутке на кнопке со стрелкой, направленной вправо. Значение в ячейке A3 увеличится на единицу. Продолжая щелкать на этой кнопке, вы увеличиваете значение в ячейке A3.
  4. Сохраните рабочую книгу под именем Элементы управления и закройте ее.

Имена элементов управления

При создании элементов управления Excel присваивает им невыразительные названия, подобные Флажок 1 или Кнопка 7. Когда вы начнете писать код приложения, где используются элементы управления, вы должны будете отслеживать их применение с помощью имен. Поэтому желательно назначить элементам управления содержательные и узнаваемые имена. Многие разработчики при задании имен придерживаются специального соглашения об именах. В соответствии с этим соглашением в имя элемента управления вставляется префикс из трех букв, описывающий тип этого элемента. Например, если вы хотите дать флажку имя Приоритет, то в соответствии с указанным соглашением имя флажка будет записано как chkПриоритет, где префикс chk указывает на элемент управления флажок. В табл. 3.1 приведены общеупотребительные префиксы для имен элементов управления. (При написании кода VBA вам обязательно придется столкнуться с английскими названиями элементами управления, поэтому в таблице даны русские и английские названия элементов управления. - Прим. ред.)

Таблица 3.1. Рекомендуемые префиксы для имен элементов управления

Выключатель (ToggleButton) tog
Командная кнопка (Command Button) cmb или btn
Набор вкладок (TabStrip) tab
Набор страниц (MultiPage) mul
Надпись (Label) lbl
Переключатель (Option Button) opt
Поле (Text Box) txt
Поле со свертыванием (RefEdit) ref
Поле со списком (Combo Box) cbo
Полоса прокрутки (Scrollbar) hsb и vsb, соответственно для горизонтальной и вертикальной полос прокрутки
Рамка (Group Box) grp или fra
Рисунок (Image) img
Список (List Box) lst
Счетчик (Spinner) spn
Флажок (Check Box) chk

Командная кнопка и рамка имеют по два возможных префикса из-за того, что в Excel и Visual Basic они имеют разные названия. Командная кнопка в Excel называется button (кнопка), а в Visual Basic - command button (командная кнопка), в Excel рамка имеет название group box (групповая рамка) и frame (фрейм, рамка) - в Visual Basic. Наиболее употребительные для них префиксы соответственно cmd и fra.

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

  1. Щелкните правой кнопкой мыши на элементе управления, чтобы выделить его.
  2. Щелкните в поле Имя строки формул (вы, вероятно, увидите в этом поле текущее название элемента управления наподобие Полоса прокр. 1).
  3. Введите имя элемента управления (например, hsbПример) и нажмите клавишу <Enter>.

Экранные формы

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

  1. Откройте новую рабочую книгу.
  2. Выполните команду Сервис > Макрос > Редактор Visual Basic. Откроется окно редактора Visual Basic.
  3. 3. Щелкните на кнопке Insert UserForm панели инструментов окна редактора Visual Basic или выполните команду Insert > UserForm (Вставка > Экранная форма). Появится новая экранная форма, как на рис. 3.13.

Созданная экранная форма имеет по умолчанию строку заголовка с заголовком UserForm1. Сетка на макете формы помогает размещению элементов управления, при отображении формы в приложении сетка не видна.

При создании экранной формы автоматически отображается панель инструментов Панель элементов (рис. 3.14). На этой панели вы найдете уже знакомые вам элементы управления: надпись, флажок, переключатель и командная кнопка, а также несколько новых элементов.

Выключатель (toggle button) - кнопка, которая остается нажатой после щелчка на ней, и возвращается в исходное состояние после повторного щелчка. Некоторые знакомые вам кнопки панелей инструментов Excel работают как переключатели, например кнопка Полужирный панели инструментов форматирования. Кнопка Полужирный запоминает щелчок на ней - она приобретает вид нажатой кнопки. Повторный щелчок на ней возвращает кнопку в исходное состояние.

Рис. 3.13. Экранная форма - заготовка для создания окна разрабатываемого приложения

Набор вкладок (TabStrip) - элемент управления, который содержит одну или несколько вкладок. Этот элемент используется для организации в группы связанной информации. Например, можно применить набор вкладок для показа информации, относящейся к конкретным регионам (на каждой вкладке - отдельный регион). По умолчанию набор вкладок содержит две вкладки, помеченные как Таb1 и Таb2. При необходимости можно добавить новые или удалить ненужные вкладки.

Набор страниц (MultiPage) - этот элемент управления внешне похож на набор вкладок и также содержит одну или несколько страниц. Отличие между ними заключается в том, что страницы являются формами, содержащими собственные элементы управления (включая наборы вкладок), которые можно отформатировать всеми средствами форматирования экранных форм. Хорошим примером набора страниц в Excel является диалоговое окно Параметры (открывается с помощью команды Сервис > Параметры).

Рис. 3.14. Панель элементов содержит элементы управления, которые можно использовать в экранной форме.

Элемент управления Рисунок (Image) позволяет вставлять графические элементы в экранные формы. С помощью этого элемента можно вставлять изображения из графических файлов следующих типов:

  • .bmp
  • .cur
  • .gif
  • .ico
  • .jpg
  • .wmf

Последний элемент управления на панели элементов - Поле со свертыванием (RefEdit). Этот элемент похож на обычное поле ввода, но имеет кнопку с правой стороны поля, которая сворачивает экранную форму, что позволяет легко выбрать любой диапазон ячеек на рабочем листе. На рис. 3.15 показана форма, содержащая поле со свертыванием. На рис. 3.16 представлена та же форма после щелчка на кнопке свертывания. Вы встречались с такими полями и такими кнопками свертывания окон, например, при вставке функций в формулы.

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

После успешного завершения разработки экранной формы можно просмотреть в действии полученный результат с помощью команды Run > Run Sub/UserForm (Выполнить > Выполнить процедуру/экранную форму). Форма отобразится поверх текущей рабочей книги (рис. 3.17). Щелчок на кнопке Закрыть (находится в верхнем правом углу формы) закроет экранную форму и возвратит вас в редактор Visual Basic. В последующих главах этой книги мы подробно рассмотрим применение экранных форм.

Другой путь выполнения экранной формы - нажатие клавиши <F5>.

Рис. 3.15. Поле со свертыванием широко применяется в диалоговых окнах Excel, где необходимо задавать ячейки или диапазоны ячеек

Рис. 3.16. Свернутая экранная форма

Рис. 3.17. Выполнение экранной формы дает представление о том, как эта форма будет выглядеть в приложении

Резюме

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

Теперь вы готовы приступить к программированию!

Вопросы и ответы

Вопрос. Где более предпочтительно размещать элементы управления: на рабочем листе или на экранной форме?

Ответ. Это зависит от ваших предпочтений и от уровня подготовки будущего пользователя вашего приложения. Если ваше приложение рассчитано на опытного пользователя Excel, то лучше разместить элементы управления непосредственно на рабочем листе. Если будущий пользователь малосведущ в Excel или вы хотите сделать приложение более автономным, расположите элементы управления в экранной форме.

Вопрос. Когда следует использовать набор вкладок, а когда набор страниц?

Ответ. Вы должны ответить на следующий вопрос: "Могу ли я для всех вкладок/страниц создать одинаковую структуру и внешний вид?" Если вы ответите "да", тогда используйте набор вкладок. В противном случае используйте набор страниц.

Практикум

С помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении.

Тесты

  1. Назовите два элемента управления, которые позволяют выбрать одну опцию из множества возможных опций.
  2. Истинно или ложно следующее утверждение: экранные формы можно создавать только в редакторе Visual Basic?
  3. Как связать элемент управления с ячейкой рабочего листа?
  4. Истинно или ложно следующее утверждение: сетка на экранной форме, которая видна в редакторе Visual Basic, также видна и при выполнении формы?
  5. ________ - это элемент управления, который отображает статический текст.

Упражнение

Откройте новую рабочую книгу и вставьте в рабочий лист элементы управления, показанные на рис. 3.18. Задайте переключателям имена optМужчина и optЖенщина, а флажку - chkПример.

Рис. 3.18. Рабочий лист для упражнения

[an error occurred while processing this directive]