ЛР 8-1 - Разработка форм пользователя. Занятие 8 Разработка форм пользователя
Скачать 96 Kb.
|
Лабораторное занятие 8-1. Разработка форм пользователя. Повторить следующие темы: структура редактора VBA; элементы управления: свойства и методы; оператор выбора; область видимости переменных. Задача 1. Разработать форму пользователя для вычисления годовой процентной ставки контракта по кредиту, взятого на определенный срок при известных сумме долга и сумме, подлежащей возврату. Используйте формулу: где Р – сумма кредита; S – сумма, подлежащая возврату; Т – срок кредита. Решение. Создание проекта на языке VBA предполагает конструирование интерфейсной части (чаще всего форм пользователя) и разработку программного кода. Откройте редактор VBA и вставьте форму пользователя командой Insert UserForm. В окне свойств найдите в левой колонке свойство Caption, а в правой введите значение Расчет годовой процентной ставки. Значением данного свойства является символьная константа, отображающаяся в заголовке данной формы. Найдите в левом столбце свойство BackColor, в правом столбце откройте список, перейдите на вкладку Palette и выберите цвет формы. Можно также разместить на форме рисунок с помощью свойства Picture. Д Рис. 1 Вставка элемента управления обавьте на форму элемент надпись. Для этого на панели элементов управления Toolbox нажмите кнопку (Label), наведите указатель мыши на форму и, не отпуская левой кнопки, растяните объект до нужного размера (Рис. 1). Введите значение свойства Caption – Сумма кредита. Настройте цвет надписи с помощью свойства BackColor, цвет букв с помощью свойства ForeColor, шрифт, начертание и размер букв – Font. Р азместите на форме все остальные элементы управления (Рис. 2). Это четыре надписи (Label), четыре текстовых поля (TextBox) и три кнопки (CommandButton). Настройте свойства. П Рис. 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 или кнопку на панели инструментов. Введите исходные данные: сумма кредита – 1000; сумма, подлежащая возврату – 1100; срок кредита – 12. Должен появиться результат 10. Для удобства вызова формы можно использовать командную кнопку на рабочем листе, как показано в задаче 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 Область описания глобальных переменных Настройте кнопку, вызывающую форму с рабочего листа и проверьте работу формы для всех действий. Самостоятельно разработайте программные коды для кнопок Очистить и Корень, причем для последней предусмотреть случай отрицательного подкоренного выражения. |