8569
.pdfEnd Sub |
|
Private Sub CommandButton2_Click() |
‘Выход из формы |
Unload Me |
|
End Sub |
|
Private Sub CommandButton3_Click() |
‘Очистка полей ввода |
Label3.Caption = "" |
|
TextBox1 = "" |
|
TextBox2 = "" |
|
End Sub |
|
Примеры работы программы показаны на рисунке 17.
Рисунок 17. ‒ Результат работы программного кода
Запуск пользовательской формы
Для запуска созданной пользовательской формы можно использовать оператор Show. Пример запуска Формы:
Sub show_userform() my_userform.Show
End Sub
Задание
Создать экранную форму «Ведомость лабораторных работ» для заполнения журнала учёта лабораторных работ (Рисунок 18).
61
Рисунок 18. экранная форма «Ведомость лабораторных работ»
Алгоритм решения задачи
1. Создать экранную форму
1.1.Создать новую рабочую книгу в Excel и перейти в редактор
Visual Basic (Разработчик – Visual Basic).
1.2.Создать пользовательскую форму (Insert UserForm).
Переименовать форму. Для этого на панели Properties меняем свойство
Caption ‒ ввести «Ведомость лабораторных работ» (форма должна быть активной). Выбрать свойство Name, вместо UseiForm1 ввести «Ведомость».
Это имя, по которому к форме будет обращаться программа.
1.3. Добавить элементы управления в экранную форму как показано на рисунке 18. Вставить в левый верхний угол формы три надписи (Label).
Задать свойству Caption значения для соответствующих надписей: «Дата
занятия», «Фамилия И.О. студента» «Факультет».
62
1.4. Чуть правее этих трех надписей создать текстовые поля для последующего ввода информации в них (Рисунок 18). Не менять свойства для этих элементов.
1.5. По образцу (рисунка 18) аналогично создавать элементы управления и описывать значения их свойств согласно таблице 6. При этом необходимо учитывать замечания представленные ниже.
|
|
|
|
Таблица 6 |
|
Свойства элементов управления |
|
||
|
|
|
|
|
Тип элемента |
Значение |
Значение свойства |
|
Другие |
свойства |
|
|||
управления |
Caption |
|
свойства |
|
Name |
|
|||
|
|
|
|
|
Надпись |
Label1 |
Дата занятий |
|
- |
|
|
|
|
|
Поле |
TextBoxl |
- |
|
- |
|
|
|
|
|
Надпись |
Label2 |
Фамилия И.О. студента |
|
_ |
|
|
|
|
|
Поле |
TextBox2 |
- |
|
- |
|
|
|
|
|
Надпись |
Label3 |
Факультет |
|
- |
|
|
|
|
|
Поле |
TextBox3 |
- |
|
- |
|
|
|
|
|
Рамка |
Frame1 |
Форма обучения |
|
- |
|
|
|
|
|
Переключатель |
OptionButtonl |
Очная |
|
Value=True |
|
|
|
|
|
Переключатель |
OptionButton2 |
Вечерняя |
|
- |
|
|
|
|
|
Переключатель |
OptionButton3 |
Заочная |
|
_ |
|
|
|
|
|
Рамка |
Frame2 |
Данные по лаб. работе |
|
- |
|
|
|
|
|
Надпись |
Label4 |
Тема занятия |
|
- |
|
|
|
|
|
Поле со |
ComboBoxl |
- |
|
- |
списком |
|
|||
|
|
|
|
|
Флажок |
CheckBoxl |
Исх. данные взять с |
|
Value=False |
носителя |
|
|||
|
|
|
|
|
|
|
|
|
|
Надпись |
Label5 |
Имя файла на носителе |
|
Enabled=False |
|
|
|
|
|
Поле со |
ComboBox2 |
- |
|
- |
списком |
|
|||
|
|
|
|
|
|
|
|
|
63 |
Командная |
ComandButtonl |
Сохранить |
Default=True |
|
кнопка |
||||
|
|
|
||
|
|
|
|
|
Командная |
ComandButton2 |
Отмена |
Cancel=True |
|
кнопка |
||||
|
|
|
||
|
|
|
|
Замечание 1. Вставить в форму дважды элемент Рамка (Frame).
Сначала нужно этот элемент разместить на форме, а затем в нём поместить другие элементы управления.
Замечание 2. При создании элементов управления необходимо придерживаться того порядка, который указан в таблице 6. Иначе VBA
присвоит им имена с другой нумерацией, а при запуске формы они будут работать неправильно.
Замечание 3.
Для элементов Надпись. Переключатель, Рамка и Флажок задать свойство Caption. Для ряда элементов управления необходимо также задать дополнительные свойства.
Свойства командных кнопок
Кнопка «Сохранить». Чтобы командная кнопка выполняла функцию сохранения, необходимо задать ей значение свойства Default (По умолчанию), равное True (Истина). При этом в экранной форме только одна командная кнопка может иметь значение True свойства Default.
Кнопка «Отмена». Щелчок по этой кнопке должен вызывать отмену введённых команд. Для этого необходимо задать для неё свойству Cancel
значение True. При этом так же как и в случае свойства Default только одна командная кнопка в экранной форме может иметь значение True свойства
Cancel.
Свойства переключателей
Для переключателей в группе «Форма обучения» нужно указать,
какой из них будет выбран по умолчанию (будет находиться во включённом состоянии до выбора, выполненного пользователем).
64
Для этого нужно задать значение True свойства Value. Установим его
для первого переключателя Очная. Отметим, что в группе только один
переключатель может иметь значение True свойства Value.
Блокировка элементов управления
В форме элемент управления «Имя файла на носителе» необходим только, когда установлен флажок «Исходные данные взять с носителя».
Чтобы поле со списком «Имя файла на носителе» было недоступно пользователю, а также отображалось серым цветом (это говорит о недоступности элемента), его свойство Enabled (Разблокировка) нужно установить равным False (Ложь). Когда флажок «Исходные данные взять с носителя» будет установлен, свойство Enabled следует поменять на True.
Это будет осуществляться программным путём.
Свойства флажка
Чтобы в исходном состоянии флажок не был установлен, следует задать равным False значение его свойства Value.
Сохранить созданную форму с именем «Ведомость».
Практические задания
Написать программу на VBA с использованием пользовательских форм и процедур к ним в соответствии с вариантом. На форме использовать кнопки для повторения, завершения работы программы и кнопку запуска программы с листа Excel.
Варианты заданий
1.Написать программу на VBA, которая определяет количество дней оставшихся до дня рождения некоторого человека. Использовать на форме ввод имени этого человека, даты его рождения и вывод результата с приветствием пользователя.
2.Написать программу на VBA, которая определяет количество дней прошедших со дня рождения некоторого человека. Использовать на форме
65
ввод имени этого человека, даты его рождения и вывод результата с приветствием пользователя.
3. Написать программу на VBA, которая определяет количество дней оставшихся до студенческих каникул. Использовать на форме ввод имени,
дату начала каникул и вывод результата с приветствием пользователя.
4.Написать программу на VBA, которая определяет количество дней прошедших со дня некоторой указанной вами даты. Использовать на форме ввод имени, указанной даты и вывод результата с приветствием пользователя.
5.Написать программу на VBA под названием «Кухонный таймер», в
которой при достижении указанного времени готовки блюда, выдаѐтся соответствующее сообщение. На форме показать имя повара и название приготовляемого блюда.
6.Написать программу на VBA под названием «Секундомер», в
которой одна кнопка отвечает за запуск секундомера (начинается отчет времени в секундах), а другая кнопка выдает информацию о количестве прошедших секунд. На форме предусмотреть вывод имени пользователя.
7.Написать программу на VBA под названием «Будильник» с
использованием формы, в которой при достижении указанного времени выдаѐтся надпись «Подъѐм!».
8.Написать программу на VBA с использованием формы, которая через каждые 30 секунд выдаѐт сообщение с указанием количества минут оставшихся до конца занятия. Предусмотреть ввод времени до конца занятий.
10. Написать программу на VBA с использованием формы под названием «Жребий», в которой пользователь должен угадать, что выдаст случайным образом программа «орѐл» или « решка». На форме предусмотреть ввод стороны монеты и вывод результата.
66
11.Написать программу на VBA с использованием формы под названием «Очередь», в которой нужно ввести пять фамилий, организовать вывод фамилий случайным образом.
12.Написать программу на VBA с использованием формы в которой происходит перевод одних единиц измерения в другие, по выбору. Для температуры ‒ градусы по Цельсию и в градусы по Форенгейту, сантиметры
вдюймы, угловые градусы в радианы.
13.Написать программу на VBA с использованием формы под названием «Вопрос», в которой на заданный вопрос предлагается выбрать один из трѐх предложенных вариантов ответа. Предусмотреть вывод сообщения о том правильный ли нет был ответ.
14.Написать программу на VBA с использованием формы под названием «Телефонный справочник». Использовать пять фамилий. Для выбора нужной фамилии использовать список фамилий. После выбора нужной фамилии предусмотреть вывод соответствующего номера телефона.
Использовать добавление и удаление фамилий из списка справочника.
15. Написать программу на VBA с использованием формы для вычисления нескольких тригонометрических функций для угла, задаваемого в градусах и вывода полученного результата.
67
Лабораторные работы 8. Построение калькулятора с помощью
пользовательской формы
Цель работы: отработка навыков построения пользовательских форм c
использованием изображений, логических операторов, операторов обработки текстовой информации.
Теоретические сведения
Рисунки в пользовательских формах. На пользовательских формах можно размещать графическую информацию. Для этого используется элемент управления Image, имеющее свойство Picture в котором нужно указать графический файл с картинкой (либо вставить из буфера обмена). В
таблице 7 представлены ряд свойств, которые можно использовать для элемента управления Image.
|
|
Таблица 7 |
|
Свойства элемента управления Image |
|
|
|
|
Свойство |
|
Значение |
AutoSize |
|
Допустимые значения: True и False. True – |
|
|
автоматически изменяет размер рисунка, чтобы он |
|
|
целиком отображался, иначе False. |
BackColor |
|
Цвет области фона. Можно закрасить фон, если |
|
|
картинка меньше объекта. |
BorderColor |
|
Цвет рамки. |
BorderStyle |
|
Допустимые значения: 0 fmBorderStyler и 1 |
|
|
fmBorderStyler. 0 используется, когда нет рамки |
|
|
вокруг рисунка, 1 означает наличие рамки. |
Picture |
|
Задает графический файл с картинкой. |
PictureAligment |
|
Определяет режимы выравнивания рисунка |
|
|
относительно границ объекта. |
PictureSizeMode |
|
Определяет режим согласования размеров рисунка |
|
|
и размеров элемента управления. |
PictureTiling |
|
Разрешение (запрет) размещения рисунка по всей |
|
|
поверхности элемента управления, если размер |
|
|
рисунка меньше размера объекта. |
SpecialEffect |
|
Применение к области рисунка различных |
|
|
эффектов. |
|
68 |
Обработка текстовой информации. VBA имеет возможность обработки текстовой информации. Для этих целей используются функции обработки строк. Рассмотрим некоторые из них.
Выделение подстроки. В строке символов можно выделить подстроку символов с помощью функций: Left(), Right() и Mid(). Функции Left() и Right() выделяют строку символов, начиная с крайнего левого (крайнего правого) символа, а функция Mid() позволяет выделить любую подстроку символов.
Синтаксис функций:
Left(<строка>, <число символов>)
Right(<строка>, <число символов>)
Mid(<строка>, <номер позиции>, <число символов>)
Другими часто используемыми строковыми функциями являются:
Len(<строка>) ‒ определяет длину строки; InStr(<старт>, <строка1>, <строка2>, <сравнение>) ‒ возвращает позицию первого совпадения строки 2
со строкой 1, поиск начинается с аргумента <старт>, <сравнение>
(необязательный параметр) означает тип сравнения; Replace(<строка>, <поиск>, <замена>) ‒ заменяет в строке символов <строка> символы
<поиск> на символы <замена>.
Объединение строк. В VBA для работы со строками используется один лишь оператор ‒ оператор объединения (конкатенация) нескольких строк в одну. Он обозначается знаком «&» или «+» (в зависимости от версии).
Работа с массивами строк. Для этого есть функции: Split(<строка>, <разделитель>) – преобразование строки символов <строка> в массив из подстрок, разделенных по умолчанию пробелом; Join(<массив строк>, <разделитель>) – преобразование массива строк <массив строк> в одну строку с указанным разделителем <разделитель>; Filter(<массив строк>,
69
<поиск>, <включение>, <сравнение>) – ищет в массиве строк <массив строк>
подстроку <поиск>. <включение> и определяет будут ли возвращаться только те строки массива, которые содержат искомую подстроку или наоборот используется <сравнение> (метод сравнения строк).
Генерация строки символов. В этом случае можно использовать функции: Space(), String(). Space(<число>), которая создаёт строку пробелов из числа <число> пробелов; String(<число>, <символ>), которая создаёт строку символов из указанного числа символов <число> <символ>.
Пример работы со строковыми функциями
Private Sub Button_Click()
If OptionButton1.Value = True Then
‘конкатенация строк
Result.Caption = TextBox1.Text & TextBox2.Text
ElseIf OptionButton2.Value = True Then
‘ вырезание подстроки символов
Result.Caption = Replace(TextBox1.Text, TextBox2.Text, "")
ElseIf OptionButton3.Value = True Then
‘определение длины строки
Result.Caption = Len(TextBox1)
End If
End Sub
Данная программа при щелчке на объект Button будет проверять какой флажок активен в данный момент и, основываясь на этом, будет выбирать формулу для решения действия. При сложении строк (конкатенации) строки
TextBox1 и TextBox2 будут объединяться с помощью оператора &. При вырезании подстроки будет использоваться функция Replace, которая заменит искомую подстроку TextBox2 в строке TextBox1 на пустую строку
«». Для нахождения длины строки используется функция Len, которая и возвращает длину строки TextBox1.
70