VBA Excel. Первая форма (для начинающих)
Пример создания пользовательской формы в редакторе VBA Excel для начинающих программировать с нуля. Добавление на форму текстового поля и кнопки.
Начинаем программировать с нуля
Часть 4. Первая форма
[Часть 1] [Часть 2] [Часть 3] [Часть 4]
Создание пользовательской формы
Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».
В открывшемся окне редактора VBA выберите вкладку «Insert» главного меню и нажмите кнопку «UserForm». То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.
На экране редактора VBA появится новая пользовательская форма с именем «UserForm1»:
Добавление элементов управления
Обычно вместе с пользовательской формой открывается панель инструментов «Toolbox», как на изображении выше, с набором элементов управления формы. Если панель инструментов «Toolbox» не отобразилась, ее можно вызвать, нажав кнопку «Toolbox» во вкладке «View»:
При наведении курсора на элементы управления появляются подсказки.
Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «TextBox», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «TextBox» (текстовое поле) будет добавлен на форму.
Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «CommandButton», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «CommandButton» (кнопка) будет добавлен на форму.
Кликнув по элементу управления на форме, вы можете изменять его размер, перетягивая границы за белые квадратики, и перетаскивать по форме, ухватив за одну из границ. Кликнув по заголовку формы или по ее рабочему полю, вы можете также изменять ее размер, перетягивая границы за белые квадратики.
Нажатием клавиши «F4» вызывается окно свойств, с помощью которого можно вручную задавать значения свойств пользовательской формы и элементов управления. В окне свойств отображаются свойства выбранного элемента управления или формы, если выбрана она. Также окно свойств можно вызвать, нажав кнопку «Properties Window» во вкладке «View».
Отображение формы на экране
Чтобы запустить пользовательскую форму для просмотра из редактора VBA, необходимо выбрать ее, кликнув по заголовку или свободному от элементов управления полю, и совершить одно из трех действий:
Для запуска пользовательской формы с рабочего листа Excel, можно использовать кнопки, описанные в этой статье. Например, чтобы отобразить форму с помощью «кнопки – элемента ActiveX», используйте в модуле рабочего листа следующий код:
Элементы управления и пользовательская форма VBA
Элементы управления и пользовательская форма VBA
Элементы управления
VВА обладает встроенным набором элементов управления. Используя этот набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. В данной главе дан обзор встроенных элементов управления VBA. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями. Элементы управления создаются при помощи панели инструментов Элементы управления (Control Toolbox). На этой панели представлены кнопки, позволяющие конструировать элементы управления, а также кнопки вызова окна свойств, перехода в режим конструктора и редактор кода.
Рисунок 2.1 Панель инструментов Элементы управления
Создание элементов управления на рабочем листе или в форме, как правило, происходит на начальном этапе конструирования приложения. Иногда используется программное их создание в процессе работы приложения. Но этот подход применяется реже. Большинство элементов управления можно располагать как на рабочем листе, так и в форме. Но существуют такие элементы управления, как RefEdit, Набор страниц и Набор вкладок, которые можно располагать только в форме. Ниже приведен список основных элементов управления и соответствующих кнопок панели инструментов Элементы управления (Control Toolbox).
Элемент управления | Имя | Кнопка для создания элемента |
Поле | TextBox | |
Надпись | Label | |
Кнопка | CommandButton | |
Список | ListBox | |
Поле со списком | ComboBox | |
Полоса прокрутки | ScrollBar | |
Счетчик | SpinButton | |
Переключатель | OptionButton | |
Флажок | CheckBox | |
Выключатель | ToggleButton | |
Рамка | Frame | |
Рисунок | Image | |
RefEdit | RefEdit | |
Набор страниц | MultiPage |
Для размещения элемента управления на листе или в форме нажмите соответствующую кнопку панели инструментов Элементы управления (Control Toolbox) и с помощью мыши перетащите рамку элемента управления в нужное место. После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена и вставлять из буфера обмена. Для разработки простейших программ удобно использовать пиктограммы (рис. 2.2).
Режим конструктора
Для удобства работы с элементами управления в период их конструирования в Excel введен режим конструктора, который активизируется нажатием кнопки Режим конструктора (Design Mode) панели инструментов Элементы управления (Control Toolbox). В режиме конструктора отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. На рис. 2.3 показано создание элемента управления CommandButton (кнопка) на рабочем листе. После того как пользователь решит, что созданный элемент управления имеет тот вид, который ему нужен, и все требуемые свойства элемента управления установлены, он должен отключить режим конструктора повторным нажатием кнопки Режим конструктора (Design Mode).
Рисунок 2.3 Создание элемента управления CommandButton на рабочем листе
в режиме конструктора
Редактор кода
После установки свойств элемента управления или формы переходят к написанию кода, связанного с ними. Особое место в этом коде занимают процедуры обработки событий. У каждого элемента управления есть целый набор событий, обрабатывающих те или иные действия. Приведем некоторые из них:
Click | Щелчок |
DblClick | Двойной щелчок |
GotFocus | Кнопка в фокусе |
LostFocus | С кнопки снят фокус |
Код обработки события записывается на листе модуля. Для активизации модуля в том месте, где надо ввести код по обработке события, связанного с выделенным элементом управления, или отредактировать уже написанный код достаточно нажать кнопку Исходный текст (View Code) панели инструментов Элементы управления (Control Toolbox).
Нажатие на кнопку Исходный текст (View Code) активизирует модуль с именем лист1, т. е. модуль, относящийся к рабочему листу, на котором создана кнопка (рис. 2.5). Вся рабочая книга, а также каждый рабочий лист, диаграмма или форма имеют связанные с ними модули кода. Кроме того, можно создать модули кода для макросов и модули класса.
Рисунок 2.5 Модуль кода и окно Проект
В левой верхней части модуля кода находится раскрывающийся список с именами объектов, для которых в данном модуле создаются процедуры обработки событий. В этом списке также представлен раздел модуля Общая часть (General), где описываются переменные и константы уровня модуля.
В правой верхней части модуля кода находится раскрывающийся список с именами событий, связанных с данным объектом.
Составим процедуру обработки события Click так, чтобы нажатие на кнопку отображало на экране диалоговое окно, уведомляющее пользователя о случившемся действии (нажатии кнопки).
Private Sub Conimancffluttonl_Click()
MsgBox «Ты нажал на меня»
Семейство Controls
Доступ к семейству всех элементов управления, расположенных в пользовательской форме UserForm, осуществляется с помощью семейства Controls. Например, чтобы скрыть все элементы управления формы UserForm, можно использовать код, в котором свойству Visible элемента управления, определяющему, отображается ли этот элемент на экране или нет, устанавливается значение False:
For Each Элемент in UserFormI.Controls
Соглашения об именах
При создании формы или элемента управления, VBA устанавливает свойство объекта Name (т. е. его имя) по умолчанию. Например, для первой созданной кнопки свойство Name устанавливается равным CommandButton1, для второй – CommandButton2 и т. д. При разработке приложений с одной формой имя объекта, устанавливаемое по умолчанию, обычно не вызывает никаких проблем и в этом случае имена объектов оставляют без изменения. Если приложение обладает сложной структурой и состоит из нескольких форм, будет трудно отличить первую кнопку CommandButton1 первой формы, от первой кнопки CommandButton1 второй формы. В этом случае полезно переименовать объекты так, чтобы они легче различались. Для переименования объектов и переменных в среде Windows существует соглашение об именах, называемое венгерской нотацией. Суть соглашения состоит в следующем: имя объекта начинается с короткого префикса, одинакового для объектов одного и того же рода. За префиксом следует собственно имя, отображающее суть объекта. Ниже приведены префиксы и примеры имен управляющих элементов.
Примеры префиксов и имен | ||
Управляющий элемент | Префикс | Пример имени |
TextBox | txt | txtAcount |
Label | lbl | lblInform |
CommandButton | cmd | cmdOK |
ListBox | lst | lstNames |
ComboBox | cbo | cboFirms |
ScrollBar | scr | scrDown |
SpinButton | spn | spnUp |
OptionButton | opt | optChoice |
CheckBox | chk | chkSex |
ToggleButton | Tgl | TglSwitch |
Frame | fra | fraStatus |
Image | img | imgBall |
RefEdit | ref | ref Fun |
MultiPage | mit | rnltPages |
TabStrip | tab | tabTwoTabs |
UserForm | frm | frmGame |
Объект DataObject
Объект DataObject предназначен для передачи текстовой информации при выполнении операций drag-and-drop между элементами управления. По своему действию объект DataObject в основном аналогичен буферу обмена, но в отличие от него он может хранить только текстовую информацию, которая исчезает при закрытии приложения. Рассмотрим методы объекта DataObject.
Перейдем теперь к обсуждению каждого из элементов управления по отдельности.
Поле
Элемент управления TextBox (поле) создается с помощью кнопки Поле (TextBox) панели элементов управления (рис. 2.8). В основном TextBox используется для ввода текста, который в последующем используется в программе, или для вывода результатов расчетов программы. Текст, введенный в поле, обычно в программе преобразуется либо в числа, либо в формулы
Рисунок 2.8 Поле в форме
Основные свойства элемента управления TextBox перечислены ниже.
Text | Возвращает текст, содержащийся в поле |
Visible | Допустимые значения: True (поле отображается во время выполнения программы) и False (в противном случае) |
Enabled | Допустимые значения: True (пользователь непосредственно может вносить изменения в содержание поля) и False (в противном случае) |
Multiline | Допустимые значения: True (устанавливается многострочный режим ввода текста в поле) и False (однострочный режим) |
Wordwrap | Допустимые значения: True (устанавливается режим автоматического переноса) и False (в противном случае) |
AutoSize | Допустимые значения: True (устанавливается режим автоматического изменения размера поля так, чтобы весь вводимый текст помещался в нем) и False (устанавливается фиксированный размер поля) |
ScrollBars | Устанавливает режим отображения в поле полос прокрутки. Допустимые значения: СЧ fmScrollBarsNone (не выводить полос прокрутки) fmScrollBarsHorizontal (выводить горизонтальную полосу прокрутки) fmScrollBarsVertical (выводить вертикальную полосу прокрутки) fmScrollBarsBoth (выводить горизонтальную и вертикальную полосы прокрутки) |
SelLenght, SelStart И SelText | Эти свойства характеризуют выделенный в поле фрагмент текста (длина, начало и сам фрагмент текста соответственно) |
MaxLength | Устанавливает максимальное допустимое количество вводимых в поле символов. Если это свойство равно 0, то нет ограничений на вводимое количество символов. |
PasswordChar | Устанавливает символ, отображаемый при вводе пароля. Если это свойство определено, то вместо вводимых символов в поле будет отображаться установленный символ |
Надпись
Элемент управления Label (надпись) создается с помощью кнопки Надпись (Label) панели элементов управления (рис. 2.9). В основном Label используется для отображения надписей, например заголовков, не имеющих свойства caption. Надпись не может быть изменена пользователем, но код программы во время ее выполнения может управлять текстом надписи.
Рисунок 2.9 Надпись в форме
Основные свойства элемента управления Label перечислены ниже.
Caption | Возвращает текст, отображаемый в надписи |
Visible | Допустимые значения: True (поле отображается во время выполнения программы) и False (в противном случае) |
Multiline | Допустимые значения: True (устанавливается многострочный режим ввода текста в поле) и False (однострочный режим) |
Wordwrap | Допустимые значения: True (устанавливается режим автоматического переноса) и False (в противном случае) |
AutoSize | Допустимые значения: True (устанавливается режим автоматического изменения размера поля так, чтобы весь вводимый текст помещался в нем) и False (устанавливается фиксированный размер поля) |
Кнопка
Элемент управления СommandButton (кнопка) создается с помощью кнопки Кнопка (CommandButton) (рис. 2.10). Элемент управления СommandButton в основном используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск программы или остановка ее выполнения, печать результатов и т. д.
Рисунок 2.10 Кнопка в форме
Приведем наиболее часто используемые свойства элемента управления CоmmandButton.
Caption | Возвращает текст, отображаемый на кнопке |
Cancel | Допустимые значения: True (устанавливаются отменяющие функции для кнопки, т. е. нажатие клавиши приводит к тем же результатам, что и нажатие кнопки) и False (в противном случае) |
Visible | Допустимые значения: True (кнопка отображается во время выполнения программы) и False (в противном случае) |
Enabled | Допустимые значения: True (запрещено нажатие кнопки пользователем) и False (в противном случае) |
Accelerator | Назначает клавишу, при нажатии на которую одновременно с клавишей происходит запуск действий, связанных с кнопкой. Например, CommandButton1. Accelerator = «С» |
Picture | Внедряет на поверхность кнопки картинку. Например, CommandButton1. Picture = _ LoadPicture («с: \mydoc\Kpyг.bmp») функция LoadPicture (ПолноеИмяФайла) считывает Графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла |
Default | Задает кнопку по умолчанию, т. е. устанавливает ту кнопку, для которой действия, связанные с ней, будут выполняться при нажатии клавиши |
Список
Элемент управления ListBox (список) создается с помощью кнопки Список (ListBox) (рис. 2.11). Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы.
Рисунок 2.11 Список в форме
Приведем наиболее часто используемые свойства элемента управления ListBox.
Приведем наиболее часто используемые методы элемента управления ListBox.
Рисунок 2.12 Список с одной колонкой элементов
Заполнить список можно одним из следующих способов
Выбор нескольких элементов из списка
Свойство Multiselect позволяет устанавливать режим, при котором допустим выбор нескольких элементов из списка. Свойство Selected предоставляет возможность проверить, выбран ли элемент с указанным индексом. На рис. 2.13 показан выбор нескольких элементов из списка. Приведём пример использования этих свойств при вычислении среднего значения выбранных в списке элементов.
Рисунок 2.13 Выбор нескольких элементов из списка
Элементы управления и пользовательская форма
Элементы управления
VBA обладает встроенным набором элементов управления. Используя этот набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. В данной главе дан обзор встроенных элементов управления VBA. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями. Элементы управления создаются при помощи панели инструментов Элементы управления (Control Toolbox) (рис. 7.1). На этой панели представлены кнопки, позволяющие конструировать элементы управления, а также кнопки вызова окна свойств, перехода в режим конструктора и редактор кода.
Рис. 7.1. Панель инструментов Элементы управления
Создание элементов управления на рабочем листе или в форме как правило происходит на начальном этапе конструирования приложения. Иногда используется программное их создание в процессе работы приложения. Но этот подход применяется реже.
Большинство элементов управления можно располагать как на рабочем листе, так и в форме. Но существуют такие элементы управления, как RefEdit, Набор страниц и Набор вкладок, которые можно располагать только в форме. В табл. 7.1 приведен список основных элементов управления и соответствующих кнопок панели инструментов Элементы управления (Control Toolbox).
Таблица 7.1. Панель инструментов Элементы управления
Кнопка для создания элемента
Для размещения элемента управления на листе или в форме нажмите соответствующую кнопку панели инструментов Элементы управления (Control Toolbox) и с помощью мыши перетащите рамку элемента управления в нужное место. После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена и вставлять из буфера обмена.
Для удобства работы с элементами управления в период их конструирования в Excel введен режим конструктора, который активизируется нажатием кнопки
Режим конструктора (Design Mode) панели инструментов Элементы управления (Control Toolbox). В режиме конструктора отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. На рис. 7.2 показано создание элемента управления CommandButton (кнопка) на рабочем листе. После того как пользователь решит, что созданный элемент управления имеет тот вид, который ему нужен, и все требуемые свойства элемента управления установлены, он должен отключить режим конструктора повторным нажатием кнопки Режим конструктора (Design Mode).
Рис. 7.2. Создание элемента управления CommandButton на рабочем листе в режиме конструктора
Установка свойств элемента управления
Для установки свойств элемента управления вручную при его конструировании необходимо выделить элемент управления и нажать кнопку Свойства (Properties) панели инструментов Элементы управления (Control
ТоoolBох). На экране отобразится диалоговое окно Свойства (Properties) (рис. 7.3). Оно аналогично окну Свойства (Properties) редактора Visual Basic. Вручную при помощи этого окна обычно устанавливается свойство Caption, возвращающее отображаемый текст элемента управления. На рис. 7.3 значение свойства Caption элемента управление CommandButton изменено с установленного ПО умолчанию (CommandButtonl) на текст Нажми меня. Кроме
того, внесены изменения в параметры свойства Font, устанавливающее шрифт выводимого на поверхности кнопки текста, а именно, увеличен размер шрифта с 8 до 12, шрифт MS sans serif заменен на courier New и изменено начертание букв с обычного на полужирное. Также свойство shadow установлено равным True, вместо False, как это имеет место по умолчанию. Свойство shadow устанавливает, отображается ли элемент управления с тенью или без нее.
Рис. 7.3. Диалоговое окно Свойства и элемент управления CommandButton с измененными свойствами Caption, Font и Shadow
После установки свойств элемента управления или формы переходят к написанию кода, связанного с ними. Особое место в этом коде занимают процедуры обработки событий. У каждого элемента управления есть целый набор событий, обрабатывающих те или иные действия. Приведем некоторые из них: