ЛР 8-1 - Разработка форм пользователя. Занятие 8 Разработка форм пользователя
![]()
|
Лабораторное занятие 8-1. Разработка форм пользователя. Повторить следующие темы: структура редактора VBA; элементы управления: свойства и методы; оператор выбора; область видимости переменных. Задача 1. Разработать форму пользователя для вычисления годовой процентной ставки контракта по кредиту, взятого на определенный срок при известных сумме долга и сумме, подлежащей возврату. Используйте формулу: ![]() где Р – сумма кредита; S – сумма, подлежащая возврату; Т – срок кредита. Решение. Создание проекта на языке VBA предполагает конструирование интерфейсной части (чаще всего форм пользователя) и разработку программного кода. Откройте редактор VBA и вставьте форму пользователя командой Insert UserForm. В ![]() Д Рис. 1 Вставка элемента управления обавьте на форму элемент надпись. Для этого на панели элементов управления Toolbox нажмите кнопку ![]() Введите значение свойства Caption – Сумма кредита. Настройте цвет надписи с помощью свойства BackColor, цвет букв с помощью свойства ForeColor, шрифт, начертание и размер букв – Font. Р ![]() П Рис. 2 Форма к задаче 1 осле настройки интерфейсной части приступаем к созданию программного кода. Программный код для кнопки Выход состоит всего из одного оператора End (конец программы). Откройте окно редактирования кода (например, двойным щелчком по этой кнопке) и введите оператор (Рис. 3). ![]() П Рис. 3 Окно редактирования кода ри нажатии кнопки Очистить все текстовые поля должны стать пустыми. Для этого изменим значение свойства Text элемента TextBox. Значение любого свойства в программе можно поменять строкой вида: Объект.Свойство = Значение В итоге программный код для кнопки Очистить будет иметь следующий вид: TextBox1.Text = “” TextBox2.Text = “” TextBox3.Text = “” TextBox4.Text = “” TextBox1.SetFocus Метод SetFocus делает элемент управления активным. В нашем случае после того, как все поля станут пустыми, курсор будет установлен в первое текстовое поле. Наберите полученную программу в окне редактирования кода для кнопки Очистить. При нажатии кнопки Вычислить из текстовых полей должны быть прочитаны исходные данные и преобразованы в числовые, затем вычислено значение годовой процентной ставки и выведено в четвертом текстовом поле. Но прежде чем считывать исходные данные, необходимо проверить, правильно ли они введены. Ошибка возникает, когда текстовое поле остается пустым или в него введено не число. Проверить правильность можно с помощью логической функции IsNumeric, которая принимает значение True (Истина), если аргументом является число и значение False (Ложь) в противном случае. Блок проверки правильности введенных данных для текстового поля TextBox1 будет иметь вид: If IsNumeric(TextBox1.Text) = False Then MsgBox «Проверьте правильность введенного данного» TextBox1.SetFocus Exit Sub End If Обратите внимание, что условный оператор используется в блочной форме. Аналогичные блоки нужно использовать и для проверки правильности других введенных данных. Далее считываем исходные данные и преобразуем их в нужный тип: ИсходнаяСумма = CDbl(TextBox1.Text) ВыплаченнаяСумма = CDbl(TextBox2.Text) Срок = CInt (TextBox3.Text) Затем находим по формуле нужную величину и выводим результат в текстовое поле TextBox4. ГодоваяСтавка = (ВыплаченнаяСумма – ИсходнаяСумма) / (ИсходнаяСумма * Срок / 12)*100 TextBox4.Text = ГодоваяСтавка Если результат нужно вывести на элементе надпись, то строка имела бы вид: Label4.Caption = ГодоваяСтавка Для форматированного вывода можно воспользоваться также функцией Format: TextBox4.Text = Format (ГодоваяСтавка, "####.##") В итоге программа для кнопки Вычислить будет иметь вид: DimИсходнаяСумма, ВыплаченнаяСумма AsDouble, Срок AsInteger, Dim ГодоваяСтавка AsSingle If IsNumeric(TextBox1.Text) = False Then MsgBox "Проверьте правильность введенного данного" TextBox1.SetFocus Exit Sub End If If IsNumeric(TextBox2.Text) = False Then MsgBox "Проверьте правильность введенного данного" TextBox2.SetFocus Exit Sub End If If IsNumeric(TextBox3.Text) = False Then MsgBox "Проверьте правильность введенного данного" TextBox3.SetFocus Exit Sub End If ИсходнаяСумма = CDbl(TextBox1.Text) ВыплаченнаяСумма= CDbl(TextBox2.Text) Срок = CInt(TextBox3.Text) ГодоваяСтавка=(ВыплаченнаяСумма–ИсходнаяСумма)/(ИсходнаяСумма*Срок/12)*100 TextBox4.Text = Format (ГодоваяСтавка, "####.##") Наберите этот программный код. Выполним проверку. Для этого запустим форму командой Run →RunSub/ UserForm, нажав F5 или кнопку ![]() Для удобства вызова формы можно использовать командную кнопку на рабочем листе, как показано в задаче 3.1. Программный код для вызова формы кнопкой будет иметь вид: UserForm1.Show Задача 2. Разработать форму пользователя, имитирующую работу калькулятора. Решение. Вставьте форму пользователя в проект и разместите на ней элементы управления (текстовое поле и семь кнопок) как показано на рис. 4. П ![]() П Рис. 4 Форма к задаче 2 рограммные коды соответственно имеют вид: кнопка «+» a = CDbl(TextBox1.Text) n = 1 TextBox1.Text = “” TextBox1.SetFocus кнопка «-» a = CDbl(TextBox1.Text) n = 2 TextBox1.Text = “” TextBox1.SetFocus кнопка «*» a = CDbl(TextBox1.Text) n = 3 TextBox1.Text = “” TextBox1.SetFocus кнопка «/» a = CDbl(TextBox1.Text) n = 4 TextBox1.Text = “” TextBox1.SetFocus При нажатии на кнопку «=» должен быть считан второй операнд, выполнено действие и выведен результат в текстовое поле. При этом для выбора действия будет использован оператор выбора SelectCase. b = CDbl(TextBox1.Text) Select Case n Case 1 c = a + b Case 2 c = a - b Case 3 c = a * b Case 4 If b = o Then c = "ERROR" Else c = a / b EndSelect TextBox1.Text = c При делении двух чисел следует обратить внимание на делитель (он должне быть отличен от нуля, в противном случае выводится сообщение об ошибке). Чтобы данная форма работала корректно, необходимо глобально описать переменные (они будут принимать одинаковые значения для всех подпрограмм, а значит для всех кнопок). Делается это строками: Dim a, b As Double Dim c As Variant DimnAsInteger, которые следует разместить в области описания глобальных переменных (над самой первой строкой заголовка процедуры). (Рис. 5) ![]() Рис. 5 Область описания глобальных переменных Настройте кнопку, вызывающую форму с рабочего листа и проверьте работу формы для всех действий. Самостоятельно разработайте программные коды для кнопок Очистить и Корень, причем для последней предусмотреть случай отрицательного подкоренного выражения. |