- •Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Объекты UserFormиControls
- •Режим выполнения
- •Разработка приложения
- •Пример 1
- •Конструирование основной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с рабочей книгой
- •Элемент TextBox
- •Элемент ListBox
- •Пример 2
- •Конструирование форм
- •Процедуры
Связь формы с рабочей книгой
Некоторые элементы управления могут быть связаны с объектами рабочей книги, например, с объектом Range, представляющим интервал ячеек рабочего листа.
Элемент TextBox
Свойство ControlSource элемента TextBox указывает на ячейку рабочего листа, связывая этот элемент формы с объектом Range, таким образом, что в режиме выполнения формы содержимое заданной ячейки высветится в элементе TextBox и, наоборот, текст, введенный в TextBox, автоматически попадает в связанную с ним ячейку.
Свойство ControlSource задается как ссылка на ячейку, например, B2. В таком виде ссылка указывает на ячейку активного рабочего листа. Для ссылки на ячейку произвольного листа адрес ячейки указывается после имени листа, разделитель – восклицательный знак, например, MySheet!B2.
Оператор установки свойства ControlSource объекта Inp_Box рассмотренного выше примера может выглядеть так: Inp_Box.ControlSource="B2"
Элемент ListBox
Свойство RowSource объекта ListBox связывает список с ячейками рабочего листа. Интервал ячеек задается ссылкой обычным образом: адрес ячейки левого верхнего угла и адрес ячейки нижнего правого угла, между которыми двоеточие. Если интервал ячеек расположен на определенном листе, то имя листа предшествует границам интервала с восклицательным знаком в качестве разделителя, например, MySheet!A15:C43.
В событийной процедуре инициализации формы рассмотрен третий способ создания списка.
Private Sub UserForm_Initialize() 'значения списка из ячеек рабочего листа Dim wSheets As Integer Dim i As Integer wSheets = WorkSheets.Count lst_Sheet.Clear Worksheets(Worksheets.Count).Activate For i = 1 To wSheets Cells(i, 1) = WorkSheets(i).Name Next i lst_Sheet.RowSource = ActiveSheet.Name & "!A1:A" & wSheets End Sub
|
Подсчитывается количество рабочих листов, список очищается и активизируется последний рабочий лист. Перечень имен рабочих листов создается в последовательных ячейках столбца A, начиная с первой. В свойстве RowSource устанавливается ссылка на созданный перечень листов, таким образом связывая элемент ListBox формы Act_Sheet с ячейками последнего рабочего листа. |
Пример 2
Форма должна имитировать электронные часы, которые посекундно отсчитывают время. Пользователь вводит количество секунд, в течение которых будет высвечиваться время. Возможен отсчет вперед от текущего времени или назад от предполагаемого времени останова до времени запуска формы.
Конструирование форм
Для приложения спроектируем две формы.
Первая форма (основная) будет выполнять настройки пользователя.
Рис. 7.12. Форма для пользовательских настроек
Пользователь может выбрать из списка цвет фона электронных часов. При выборе CountUpустанавливается прямой отсчет времени, а при выбореCountDownустанавливается обратный отсчет времени. При щелчке на любую опцию из этих двух загружается следующая форма. Нажатие на кнопкуExitзакрывает форму.
Bторая форма будет запускать электронные часы.
Рис. 7.13. Форма для запуска электронных часов |
Пользователь может установить количество секунд, в течение которых будет высвечиваться время. Нажатие командной кнопки Startили щелчок на свободное пространство формы инициализирует ход электронных часов. Кнопки со стрелками инициируют отсчет времени назад (левая кнопка) или отсчет времени вперед (правая кнопка) без возвращения в основную форму. |
Командная кнопка New_select позволяет вернуться в основную форму и сделать новые настройки.
Вставьте две новые формы, расположите на них элементы управления и установите их свойства в соответствии с рисунками и таблицей.
Свойства элементов управления форм
Тип элемента |
Комментарий |
Свойства |
Значение свойства |
Основная форма для настроек пользователя | |||
UserForm |
Основная форма |
Name |
el_watch_custom |
Caption |
Make Selection | ||
Label |
Поясняющий текст для списка цветов |
Name |
Label1 |
Caption |
Select color of e_watch | ||
Label |
Поясняющий текст для опции отсчета времени вперед |
Name |
Label2 |
Caption |
Count_Up | ||
Label |
Поясняющий текст для опции отсчета времени назад |
Name |
Label3 |
Caption |
Count_Down | ||
CommandButton |
Кнопка завершения работы с формой |
Name |
Cmd_exit |
Caption |
Exit | ||
Accelerator |
E | ||
ListBox |
Список цветов |
Name |
theColors |
Frame |
Рамка для переключателей |
Name |
Frame1 |
Caption |
Indicator | ||
OptionButton |
Отсчет вперед от текущего времени до времени останова |
Name |
Count_Up |
OptionButton |
Отсчет назад от времени останова до времени запуска формы |
Name |
Count_Down |
Форма с электронными часами | |||
UserForm |
Вызываемая форма |
Name |
ew |
Caption |
Electronic Watch | ||
Label |
Поясняющий текст |
Name |
Label1 |
Caption |
Enter second from 1 to 10 and click Start | ||
Label |
Элемент для высвечивания времени |
Name |
watch |
Caption |
(пустая строка) | ||
Font |
Жирное начертание, размер 16 | ||
TextBox |
Поле для ввода числа секунд |
Name |
sec |
ToggleButton |
Установка порядка отсчета времени назад |
Name |
left_but |
Рисунок на кнопке |
Picture |
Из файла left_arrow_normal, находящегося в папкеProgram Files\common Files\Roxio shared\Tutorial\Graphics | |
Высота кнопки |
Height |
29,5 | |
Ширина кнопки |
Width |
29,5 | |
ToggleButton |
Установка порядка отсчета времени вперед |
Name |
right_but |
Рисунок на кнопке |
Picture |
Из файла right_arrow_normal, находящегося в папке Program Files\common Files\Roxio shared\Tutorial\Graphics | |
Высота кнопки |
Height |
29,5 | |
Ширина кнопки |
Width |
29,5 | |
CommandButton |
Пуск электронных часов |
Name |
cmd_Go |
Caption |
Start | ||
Accelerator |
S | ||
CommandButton |
Изменение установок пользователя |
Name |
cmd_new_select |
Caption |
New_Select | ||
Accelerator |
N |