- •1.Программирование в vba. Объекты Application, Workbook, Worksheet и Range
- •2.Редактор Visual Basic
- •2.1.Запуск программы
- •2.1.1.Панель инструментов Стандарт
- •2.2.Отладка программ
- •2.2.1.Ошибки при написании программ
- •2.2.1.1.Ошибки компиляции
- •2.2.1.2.Ошибки выполнения
- •2.2.2.Инструкция Option Explicit
- •2.2.3.Пошаговое выполнение программ
- •2.2.4.Точка останова (Toggle Breakpoint)
- •2.2.5.Отслеживание значений свойств и переменных
- •3.Объекты Application, Workbook, Worksheet и Range. Встроенные функции Dir, MkDir, MsgBox, InputBox
- •3.1.Программа СлучайныеЧисла
- •3.2.Программа УдалениеКниги
- •3.3.Программа СлучайныеЧислаОформление
- •4.Переменные
- •4.1.Объектные переменные
- •4.2.Пользовательский тип данных
- •5.Массивы
- •5.1.1.Функция Erase
- •5.1.2.Функции lBound и uBound
- •6.Подпрограммы. Функции. Область видимости переменных, подпрограмм и функций.
- •6.1.Вызов подпрограммы
- •6.2.Передача данных при вызове программы
- •6.2.1.Передача по ссылке и по значению
- •6.3.Функции
- •6.4.Область видимости переменных
- •6.4.1.Переменные уровня процедуры
- •6.4.2.Переменные уровня модуля
- •6.4.3.Переменные уровня проекта
- •6.4.4.Сохраняемые переменные
- •6.4.5.Область видимости подпрограмм и функций
- •6.4.6.Сохраняемые подпрограммы и функции
- •7.Управляющие структуры: If-Then-Else, Select Case, For-Next, While-Wend, Do-Loop, For-Each-Next
- •8.Инструкция With
- •9.Встроенные функции vba
- •9.1.Математические функции
- •9.2.Функции проверки типов
- •9.3.Функции преобразования форматов
- •9.4.Функции обработки строк
- •9.5.Функции времени и даты
- •10.Обработка ошибок: инструкция On Error
- •11.Пользовательский интерфейс
- •11.1.Создание формы (UserForm) и добавление кнопок (СоmmandButton)
- •11.2.Вывод формы на экран (запуск формы)
- •11.3.Поле (TextBox) и надпись (Label).
- •11.4.Список (ListBox) и поле со списком (ComboBox)
- •11.4.1.Список (ListBox)
- •11.4.2.Определение выбранных элементов списка
- •11.4.3.Поле со списком (ComboBox)
- •11.4.4.Определение выбранного элемента
- •11.4.5.Создание взаимосвязанных элементов управления
- •11.5.Флажок (CheckBox)
- •11.6.Выключатель (ToggleButton)
- •11.7.Переключатель (OptionButton)
- •11.8.Счетчик (SpinButton)
- •11.9.Создание нестандартных меню и панелей инструментов.
- •11.9.1.Пример создания/удаления панели инструментов
- •11.9.2.Пример создания/удаления меню
- •12.События объектов Workbook и Worksheet
- •12.1.События объекта Workbook
- •12.2.События объекта Worksheet
- •Домашнее задание №1
- •Домашнее задание №2 и №3. Типовые варианты.
- •Вариант 1. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 2. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 3. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 4. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 5. Домашнее задание №2
- •Домашнее задание №3
11.Пользовательский интерфейс
Теперь мы рассмотрим такую важную тему как создание пользовательского интерфейса, который позволяет нам управлять ходом выполнения программы, передавать в неё те или иные параметры, задавать различные критерии поиска информации.
11.1.Создание формы (UserForm) и добавление кнопок (СоmmandButton)
Создадим форму с двумя кнопками, как показано на Рис. 10 -20, и напишем программу, которая бы сообщала, какую кнопку нажал пользователь.
Рис. 10‑20. Форма с командными кнопками
Сначала создадим форму:
Чтобы вставить форму в проект воспользуйтесь командой Insert/UserForm (Рис. 10 -21).
Рис. 10‑21. Вставка формы
В результате выполнения данной команды (Рис. 10 -22) на экране появится форма и панель Элементы управления (Controls ТооlBох):
Рис. 10‑22. Новая форма и панель элементов управления
В Окне свойств (Рис. 10 -23) задайте имя формы (свойство Name – frmКомандныеКнопки) и заголовок (свойство Caption – Командные кнопки). В результате у Вас получится форма как на Рис. 10 -24.
Рис. 10‑23. Окно свойств формы |
Рис. 10‑24
|
ВНИМАНИЕ! При именовании форм и элементов управления пользуйтесь соглашением об именах, называемое венгерской нотацией. Суть соглашения состоит в том, что имя объекта начинается с префикса, который определяет вид этого объекта. Далее следует собственно имя объекта, которое отображает его суть. В таблице 1 приведены префиксы и примеры имен для элементов управления.
Таблица 1
Элемент управления |
Префикс |
Пример имени |
|
TextBox |
Поле |
txt |
txtФамилия |
Label |
Надпись |
lbl |
lblИнформ |
CommandBar |
Кнопка |
cmd |
cmdОК |
ListBox |
Список |
lst |
lstСтуденты |
ComboBox |
Поле со списком |
cbo |
cboФакультеты |
ScrollBar |
Полоса прокрутки |
scr |
scrВниз |
SpinButton |
Счетчик |
spn |
spnВыбор |
OptionButton |
Переключатель |
opt |
optВыбор |
CheckBox |
Флажок |
chk |
chkПол |
ToggleButton |
Выключатель |
tgl |
tglПереключатель |
Frame |
Рамка |
fra |
fraСтатус |
Image |
Рисунок |
img |
imgСпутник |
MultiPage |
Набор страниц |
mlt |
mltСтраницы |
TabStrip |
Набор вкладок |
tab |
tabДва |
UserForm |
Форма |
frm |
frmСессия |
Чтобы добавить в форму кнопку щелкните по значку
,
расположенному на панели элементов
управления, и очертите мышкой контуры
кнопки. Форма с кнопкой будет выглядеть
примерно так:
Размеры формы и кнопок, их месторасположение в любой момент можно исправить (либо перетаскивая размерные маркеры, либо сам элемент). Чтобы удалить ненужный элемент управления щелкните по нему мышкой и нажмите клавишу [Delete].
В окне свойств кнопки CommandButton измените её имя (cmdOK), надпись (ОК), шрифт надписи (Tahoma, 9 пунктов, жирный) и свяжите её с клавишей [Enter] (Рис. 10 -25). В результате Ваша форма будет иметь вид (Рис. 10 -26):
Рис. 10‑25. Окно свойств кнопки CommandButton
Рис. 10‑26.Форма с кнопкой
Аналогично добавьте кнопку Отмена, связав её с кнопкой [Escape] (для этого в окне её свойств для свойства Cancel установите True).
Измените размеры формы, сделайте кнопки одного размера и расположите их симметрично. Помните: Ваша форма должна быть аккуратной, удобной и строгой, а все её элементы - соразмерными. Чтобы посмотреть, как форма будет выглядеть на экране, нажмите кнопку [F4]. Чтобы убрать форму с экрана, щелкните по кнопке Закрыть.
Замечания:
В окне свойств прописываются те свойства, которыми форма будет обладать при вызове её на экран. В процессе выполнения программы свойства формы и расположенных на ней элементов управления могут меняться. Классический пример - недоступность какого-то элемента управления (например, кнопки ОК) до тех пор, пока пользователь не введет/выберет все значения, которые он должен указать в форме.
Свойства формы и элементов управления можно задавать в процедуре инициализации формы. Пропишем, например, программными средствами некоторые свойства формы frmКомандныеКнопки: определим заголовок формы – Командные кнопки, кнопку ОК свяжем с клавишей [Enter], а кнопку Отмена – с клавишей [Escape]. Для этого дважды щелкните по форме (на экране появится пустая процедура Private Sub UserForm_Click()), в списке процедур выберите процедуру Initialize, а затем введите код:
Private Sub UserForm_Initialize()
Caption = "Командные кнопки"
cmdOK.Default = True
cmdОтмена.Cancel = True
End Sub
Эту же программу можно было бы поместить в любой модуль с произвольным именем:
Sub КомандныеКнопки()
frmКомандныеКнопки.Caption = "Командные кнопки"
frmКомандныеКнопки.cmdOK.Default = True
frmКомандныеКнопки.cmdОтмена.Cancel = True
frmКомандныеКнопки.Show
End Sub
Сравните ссылки на одни и те же объекты в этих двух программах!
Теперь «скажем», что должно происходить, если пользователь щелкнет по кнопке ОК. Для этого дважды щелкните в форме по кнопке ОК – на экране появится пустая процедура Private Sub cmdOK_Click()(событие – щелчок по кнопке ОК)
Введите в ней следующий код:
Private Sub cmdOK_Click()
MsgBox "Вы нажали на кнопку ОК!", vbInfomation, _
"Нажатая кнопка"
Unload Me
End Sub
Аналогично создайте процедуру обработки события «Щелчок по кнопке Отмена»:
Private Sub cmdОтмена_Click()
MsgBox "Вы нажали на кнопку Отмена!", vbInfomation, _
"Нажатая кнопка"
Unload Me
End Sub
Осталось теперь запустить созданное приложение и протестировать его работу.
