IV этап – Запуск программы
Запуск программы может быть осуществлен следующим образом:
1 Выбрать команду из меню Run→Run Sub/UserForm. Программа Вычисление запустится в среде программирования VBA. На экране появится разработанный программный интерфейс.
2 В поле ввода числа 1, где мигающий курсор, ввести произвольное число (целое или с дробной частью).
3 Нажать клавишу Tab или щелкнуть мышью на поле ввода числа 2. Мигающий курсор появится в поле числа 2.
4 Ввести второе произвольное число в поле 2.
5 Аналогично ввести третье число в поле 3.
6 Щелкнуть на кнопке <Вычислить>. В поле результата будет показан окончательный результат вычисления выражения.
7 Для продолжения работы программы, то есть для вычисления выражения при других входных данных, надо щелкнуть мышью на поле ввода числа 1 и ввести его.
8 Выполнить действия п.3-7 и т.д. Работа программы в подобном режиме диалога будет продолжаться до тех пор, пока не будет произведен щелчок мыши по кнопке <End>. В этом случае программа завершит работу, и среда программирования VBA вновь появится на экране.
V этап
Сохранить созданную программу создания приложения
Пример 2. Расчет стоимости с учетом НДС.
Постановка задачи. Создать диалоговое окно, в котором производится расчет стоимости товара с учетом НДС по его стоимости без НДС и значению ставки НДС.
Технология выполнения задания:
1 В редакторе Visual Basic в проект добавьте форму. На ней расположить три надписи, три поля ввода и две командные кнопки, как показано на рисунке 33.
Рисунок 33 – Диалоговое окно «Расчет стоимости»
2 При помощи окна Properties задать элементам управления значения следующим образом, как показано в таблице 26.
Таблица 26
Элемент управления | Свойство | Значение |
Форма | Caption | Расчет стоимости |
Надпись | Caption | Стоимость без учета НДС |
Поле ввода | Name | TextBox1 |
Надпись | Caption | НДС |
Поле ввода | Name | TextBox2 |
Надпись | Caption | Стоимость с учетом НДС |
Поле ввода | Name | TextBox3 |
Кнопка | Name Caption | CommandButton1 ОК |
Кнопка | Name Caption | CommandButton2 Отмена |
3 В модуле проекта набрать следующий код, изображенный на рисунке 34:
Рисунок 34 – Программный код
4 Запустить проект.
- нажать клавишу <F5>;
- в поле Стоимость без учета НДС ввести 1000;
- в поле НДС ввести 25;
- нажать кнопку ОК.
В поле Стоимость с учетом НДС будет выведена искомая стоимость. Для закрытия окна нажать кнопку Отмена.
Лабораторная работа № 8
Разработка пользовательского приложения с помощью объектов Форм
Цель: приобретение навыков разработки пользовательского приложения с помощью объектов Формы, вычисляющее значение выражения в заданных точках, вводимых с клавиатуры. Индивидуальные варианты лабораторной работы № 8 выполняются в соответствии с индивидуальными вариантами лабораторной работы № 1 (4 часа).
3.2 Встроенные диалоговые окна в VBA
В проектах VBA часто встречаются две разновидности встроенных диалоговых окон: окна сообщений и окна ввода.
3.2.1 Окна сообщений (MsgBox)
Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа Integer, указывающее, какая кнопка была нажата.
Окно сообщения является модальным по отношению к приложению. Это означает, что приложение не сможет продолжить работу, пока окно сообщения не будет закрыто. Иногда окно сообщения отображает пиктограмму или содержит несколько кнопок, с помощью которых пользователь может сделать выбор. В этом случае окно сообщения позволяет получить информацию о принимаемом пользователем решении.
Отобразить окно сообщения можно с помощью оператора MsgBox или функции MsgBox (). Разница между ними заключается в том, что функция отображает окно сообщения и возвращает некоторое значение, а оператор только отображает окно сообщения.
Синтаксис оператора MsgBox:
MsgBox <Строковое выражение> [ , целая константа] [ , строковое выражение]
Синтаксис функции MsgBox ():
Переменная = MsgBox (Строковое выражение [ , целая константа]
[ , строковое выражение]
где
переменная – переменная целого типа, которой присваивается значение, возвращаемое функцией MsgBox ();
MsgBox – имя оператора/функции;
строковое выражение - строковое выражение, которое будет отображаться в поле сообщения окна сообщения (заключается в кавычки);
целая константа – или группа констант, определяющая, какие кнопки (комбинации кнопок) и пиктограммы будут отображаться в окне сообщения;
строковое выражение – строковое выражение, которое будет отображаться в строке заголовка окна сообщения (заключается в кавычки);
В окне сообщения можно выбрать одну из четырех пиктограмм. Эти пиктограммы и их свойства представлены в таблице 27.
Таблица 27 - Константы процедуры MsgBox, определяющие отображаемые информационные значки в диалоговом окне
Пиктограмма | Имя пиктограммы | Константа | Назначение |
vbCritical | Critical message (Критическое сообщение) | Указывает, что произошла серьезная ошибка. Часто после такого сообщения программа прекращает работу | |
vbExclamation | Warning message (Предупреждение) | Сообщает о возникновении ошибки, которая требует исправления или может привести к нежелательным последствиям | |
vbQuestion | Query (Запрос) | Указывает, что для продолжения работы программе требуется дополнительная информация от пользователя | |
vbInformation | Information message (Информационное сообщение) | Информирует пользователя о состоянии программы. Чаще всего используется для сообщения о завершении выполнения некоторой задачи. |
В функции MsgBox () можно использовать шесть наборов кнопок, задаваемых константами в соответствии с таблицей 28. Значение константы в соответствии с выбранным набором кнопок принимает аргумент Options.
Таблица 28 - Константы процедуры MsgBox, определяющие отображаемые кнопки в диалоговом окне
Набор кнопок | Значение | Константа |
<OK> | vbOKOnly | |
<ОК>, <Отмена> | vbOKCancel | |
<Стоп>, <Повтор>, <Пропустить> | vbAbortRetryIgnore | |
<Да>, <Нет>, <Отмена> | vbYesNoCancel | |
<Да>, <Нет> | vbYesNo | |
<Повтор>, <Отмена> | vbRetryCancel |
Если требуется поместить в окно пиктограмму и набор кнопок, то аргумент Options набирается, как две константы, соединенные знаком «+». Первая константа выбирается из таблицы 27, вторая – из таблицы 28. Если используется несколько кнопок, то можно указать, какая из них будет кнопкой команды по умолчанию, т.е. кнопкой, которая сработает при нажатии клавиши [Enter] (кнопка, получающая фокус при отображении окна сообщения). В этом случае в аргумент Options добавляется третья константа в соответствии с таблицей 29.
Каждая из кнопок диалогового окна после щелчка на ней мышью во время выполнения программы возвращает соответствующее ей значение переменной (таблица 30).
Таким образом, имеется возможность программного определения, какая из кнопок диалогового окна нажата, и в соответствии с этим выполнить то или иное действие.
Таблица 29 - Константы процедуры MsgBox, определяющие основную кнопку в диалоговом окне
Кнопка команды по умолчанию | Значение | Константа |
Первая | vbDefaultButton1 | |
Вторая | vbDefaultButton2 | |
Третья | vbDefaultButton3 | |
Четвертая | vbDefaultButton4 |
Таблица 30 - Значения, возвращаемые функцией MsgBox
Кнопка | Значение | Константа |
<OK> | vbOK | |
<Отмена> | vbCancel | |
<Стоп> | vbAbort | |
<Повтор> | vbRetry | |
<Пропустить> | vbIgnore | |
<Да> | vbYes | |
<Нет> | vbNo |
Пример 1.
Постановка задачи. Создать окно информационного сообщения с заголовком «Окно» и текстом «Нажмите кнопку» с пиктограммой информационного сообщения и с двумя кнопками <Да> и <Нет>. При нажатии кнопки <Да> надпись на командной кнопке <Command1> формы требуется заменить на значение Да, а при нажатой кнопки <Нет> на значение Нет.
Технология выполнения задания:
1 Запустить VBA.
2 В проект добавить форму. На панели инструментов выбрать элемент CommandButton и поместить на поле формы. Появится командная кнопка <CommandButton1>.
3 Дважды щелкнуть на командной кнопке <CommandButton1> и в окне программного кода между строками Private Sub и End Sub набрать следующие утверждения:
Private Sub CommandButton1_Click()
Dim A As Long
A = MsgBox ("Нажмите кнопку", vbInformation + vbYesNo, "Окно")
If A = 6 Then
CommandButton1.Caption = "Да"
ElseIf A = 7 Then
CommandButton1.Caption = "Нет"
End If
End Sub
Примечание.
В первой строке функция MsgBox выводит на экран диалоговое окно с текстом «Нажмите кнопку», двумя кнопками <Yes> и <No> и заголовком окна «Окно».
Вторая строка проверяет возвращаемое значение переменной А на его равенство числу 6.
Если условие выполняется, то это означает, что нажата кнопка <Yes>, и тогда в третьей строке свойству Caption (Надпись) командной кнопки <CommandButton1> присваивается значение Да.
Если возвращаемое значение не равно 6, то четвертая строка проверяет его на значение, равное 7, поскольку при нажатии кнопки <No>, возвращаемое значение А равно 7.
Если А действительно равно 7, то в пятой строке надписи на командной кнопке присваивается значение Нет.
Шестая строка закрывает условный оператор.
4 Запустить программу и проверить ее работоспособность, как показано на рисунке 35.
Рисунок 35 – Проверка работоспособности программы
3.2.2 Окна ввода
Если в программе необходимо получить какую-либо информацию от пользователя (ввести свое имя, имя файла, входные данные для расчетов и т.п.), можно воспользоваться функцией ввода.
Она выводит на экран диалоговое окно, содержащее сообщение, после ввода и две кнопки ОК и Cancel.
Устанавливает режим ожидания ввода текста пользователем и нажатия кнопки <ОК> или <Отмена>,
Если пользователь выбрал <ОК>, окно ввода возвращает значение типа String, находящийся в поле ввода.
Если же пользователь выбрал <Отмена>, окно ввода возвращает пустую строку (Empty) независимо от того, что напечатал пользователь.
Синтаксис функции:
Строковая переменная = InputBox (Строковое выражение [, константа заголовка] [, константа поля ввода] [, xPos] [, yPos])
где
Строковая переменная – переменная, в которой хранится значение,
возвращаемое функцией InputBox ();
InputBox – имя функции;
строковое выражение – выражение, которое будет отображаться в области
сообщения окна ввода;
константа заголовка – строковая константа или переменная, значение
которой будет отображаться в заголовке окна ввода;
константа поля ввода – строковая константа или переменная, значение
которой будет отображаться в поле ввода;
xPos, yPos – положение окна ввода соответственно по
горизонтали и вертикали (в твипах).
Пример 2.
Постановка задачи. Иллюстрация использования окна ввода.
Технология выполнения задания:
1 Запустить VBA.
2 В проект добавить форму. На панели инструментов выбрать элемент CommandButton и поместить на поле формы. Появится командная кнопка <CommandButton2>.
3 Щелкнуть мышью дважды на командной кнопке <CommandButton2> и в окне программного кода между строками Private Sub и End Sub набрать следующие утверждения:
Private Sub CommandButton2_Click()
A = InputBox ("Введите информацию", "Окно ввода")
If A <> " " Then
CommandButton2.Caption = A
Else
CommandButton2.Caption = "Строка ввода пуста"
End If
End Sub
Примечание.
Первая строка отображает окно ввода и присваивает возвращаемое значение переменной А.
Вторая строка проверяет содержимое поля ввода.
Если в поле набраны какие-либо данные, т.е. строка ввода непустая, то утверждение третьей строки после нажатия кнопки <OK> меняет название кнопки <CommandButton2> на содержимое введенных данных.
В противном случае (строка 4) в пятой строке <CommandButton2> присваивается значение Строка ввода пуста.
4 Запустить программу и проверить ее работоспособность, как показано на рисунке 36.
Рисунок 36 – Запуск созданной программы
Лабораторная работа № 9
Встроенные диалоговые окна в VBA
Цель: приобретение навыков разработки проекта встроенных диалоговых окон в VBA. Индивидуальные варианты лабораторной работы № 9 представлены в таблице 31 (2 часа).
Таблица 31
№ В | Варианты индивидуальных заданий | ||
Разработать проект диалоговых окон в VBA | |||
Элемент управления | Свойство | Значение | |
Форма | Caption | Диалоговое окно1 | |
Кнопка (CommandButton1) | Caption | Критическое сообщение с тремя кнопками Стоп, Повтор, Пропустить | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, Отчество, Факультет, Группу» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint |
Продолжение таблицы 31
Форма | Caption | Диалоговое окно2 | |
Кнопка (CommandButton1) | Caption | Предупреждение с одной кнопкой ОК | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, Отчество, дату рождения» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно3 | |
Кнопка (CommandButton1) | Caption | Запрос с двумя кнопками ОК, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, адрес местожительства» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно4 | |
Кнопка (CommandButton1) | Caption | Информационное сообщение с двумя кнопками Повтор, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, паспортные данные» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно5 | |
Кнопка (CommandButton1) | Caption | Критическое сообщение с двумя кнопками Да, Нет | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, домашний телефон» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint |
Продолжение таблицы 31
Форма | Caption | Диалоговое окно6 | |
Кнопка (CommandButton1) | Caption | Предупреждение с двумя кнопками ОК, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, адрес местожительства» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно7 | |
Кнопка (CommandButton1) | Caption | Запрос с одной кнопкой ОК | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, расписание занятий на понедельник В\Н» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно8 | |
Кнопка (CommandButton1) | Caption | Информационное сообщение с двумя кнопками Да, Нет | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, перечень дисциплин, изучаемых в текущем семестре» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно9 | |
Кнопка (CommandButton1) | Caption | Предупреждение с тремя кнопками Стоп, Повтор, Пропустить | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, Отчество, год рождения» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно10 | |
Кнопка (CommandButton1) | Caption | Запрос с тремя кнопками Да, Нет, Отмена |
Продолжение таблицы 31
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Группу» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно11 | |
Кнопка (CommandButton1) | Caption | Информационное сообщение с одной кнопкой ОК | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, адрес местопроживания» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно12 | |
Кнопка (CommandButton1) | Caption | Критическое сообщение с двумя кнопками ОК, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Факультет» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно13 | |
Кнопка (CommandButton1) | Caption | Информационное сообщение с тремя кнопками Да, Нет, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, адрес прописки» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно14 | |
Кнопка (CommandButton1) | Caption | Запрос с тремя кнопками Стоп, повтор, Пропустить | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, расписание занятий на среду по Н/Н» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint |
Продолжение таблицы 31
Форма | Caption | Диалоговое окно15 | |
Кнопка (CommandButton1) | Caption | Предупреждение с двумя кнопками Повтор, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Пол, группу крови» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно16 | |
Кнопка (CommandButton1) | Caption | Критическое сообщение с тремя кнопками Да, Нет, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, специальность» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно17 | |
Кнопка (CommandButton1) | Caption | Предупреждение с двумя кнопками Да, Нет | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, № зачетной книжки» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно18 | |
Кнопка (CommandButton1) | Caption | Запрос с двумя кнопками Повтор, Отмена | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, Отчество, паспортные данные» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно19 | |
Кнопка (CommandButton1) | Caption | Информационное сообщение с тремя кнопками Стоп, Повтор, Пропустить |
Продолжение таблицы 31
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, почтовый индекс» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint | |
Форма | Caption | Диалоговое окно20 | |
Кнопка (CommandButton1) | Caption | Критическое сообщение с одной кнопкой ОК | |
Кнопка (CommandButton2) | Caption | Ввод сообщения «Введите, пожалуйста свою Фамилию, Имя, Отчество, текущую дату и время» в «Окно ввода» | |
Изображение (Image1) | Picture | Произвольный рисунок, созданный в Paint |
3.3 Объекты формы в VBA: Кнопки-переключатели, Контрольные индикаторы, Рамки
Кнопки-переключатели. Элемент управления OptionButtons (Переключатель) позволяют пользователю выбрать одну или несколько взаимоисключающих альтернатив. Эти элементы управления обычно появляются группами по две или более, и все они взаимосвязаны (если нет рамок, в противном случае кнопки взаимосвязаны внутри рамок). Эти элементы управления состоят из кружка и текста, находящегося рядом. Свойство Aligment может быть установлено в 0 и 1 в зависимости от того, справа или слева от кружка должен находиться текст. Свойство Value может иметь установку True или False в зависимости от того, может быть выбрана кнопка или нет. В каждый момент времени может быть выбрана только одна кнопка, внутри такой кнопки появляется точка. Для выбранной кнопки свойство Value устанавливается в значение True, для всех других кнопок – в значение False.
Контрольные индикаторы (Флажок). Элемент управления CheckBox (Флажок) предоставляет пользователю возможность выбрать одну или несколько альтернатив, но независимо друг от друга. Флажок имеет два состояния: установлен и сброшен, но может настраиваться на выбор из трех альтернатив. В результате пользователь может выбрать несколько контрольных индикаторов одновременно. Изображаются контрольные индикаторы маленькими квадратиками. Выбранный контрольный индикатор имеет внутри знак «R» («галочку»).
Свойства контрольных индикаторов аналогичны, за исключением свойства Value, для которого возможными установками являются: 0 (не выбрано), 1 (выбрано), 2 (недоступно). При установке 2 контрольный индикатор и отметка обесцвечиваются.
Флажок обладает уникальным свойство TripleState, позволяющим проивзодить выбор из трех альтернатив. Допустимыми значениями свойства TripleState являются:
- False (выбор из двух альтернатив True и False, т.е. флажок может находиться только в двух состояниях – установлен и сброшен);
- True (выбор из трех альтернатив True, False, Null, т.е. флажок может находиться в трех состояниях – установлен, сброшен и нейтрален).
Рамки. Элемент управления Frame (Рамка) предназначена для объединения элементов управления в группы. С функциональной точки зрения рамки необходимы в том случае, если на форме надо установить более одного набора кнопок-переключателей. Внутри рамки набор кнопок-переключателей работает как группа, независимо от других кнопок. Следует помнить, что сначала на форму добавляется рамка, а после этого внутрь рамки добавляются кнопки-переключатели. Рамки также могут быть использованы для улучшения внешнего вида окна. Свойство рамки Caption хранит текст, размещенный в левом верхнем углу рамки.
Пример 1.
Постановка задачи. Разработать приложение нахождения минимального или максимального значения среди трех чисел, заданных формульными зависимостями и среднеарифметического среди этих же трех чисел. Исходные данные вводятся в два поля. Результат должен отображаться после нажатия кнопки <ОК>. При выборе первого переключателя после нажатия кнопки ОК будет находиться минимальное число среди трех чисел, а при выборе второго – максимальное среди этих же трех чисел. С помощью контрольного индикатора (флажка) будет вычисляться среднеарифметическое среди полученных трех чисел. Программа должна заканчивать работу после нажатия кнопки <END>. Окно программы должно иметь вид, показанный на рисунке 37.
Рисунок 37 – Диалоговое окно программы, вычисляющее минимальное
(максимальное) число среди трех полученных чисел
Технология выполнения задания:
1 Исходные данные:
a, b Î Z
а = 2; b = 4
Результат: Min (Max) Î Z
2 Конструирование проекта.
Процесс программирования приложения Рамки и переключатели предусмотрен тремя этапами, как показано в таблице 32.
Таблица 32 - Этапы программирования
Этапы программирования | Число объектов |
1. Создание пользовательского интерфейса | 18 объектов |
2. Установка свойств объектов | 18 объектов |
3. Составление программного кода | 2 объекта |
Создать форму с семью полями ввода, семью надписями, командной кнопкой, рамкой, внутри которой, как в контейнере, расположите два переключателя, с одним контрольным индикатором (флажком).
При помощи окна Properties установить значения свойств Name и Caption полей элементов управления следующим образом, как показано в таблице 33.
Таблица 33
Элемент управления | Свойство | Значение | Примечание |
Поле ввода | Name | TextBox1 | Число а |
Поле ввода | Name | TextBox2 | Число b |
Поле ввода | Name | TextBox3 | Число у1 |
Поле ввода | Name | TextBox4 | Число у2 |
Поле ввода | Name | TextBox5 | Число у3 |
Поле ввода | Name | TextBox6 | Результат |
Поле ввода | Name | TextBox7 | Результат |
Надпись | Caption | Label1 | Исходные данные |
Надпись | Caption | Label2 | а |
Надпись | Caption | Label3 | b |
Надпись | Caption | Label4 | Y1 |
Надпись | Caption | Label5 | Y2 |
Надпись | Caption | Label6 | Y3 |
Надпись | Caption | Label7 | Результат |
Командная кнопка | Name Caption | CommandButton1 | ОК |
Командная кнопка | Name Caption | CommandButton2 | End |
Рамка | Caption | Frame | Операция |
Переключатель | Name Caption | OptionButton1 | Минимум |
Переключатель | Name Caption | OptionButton2 | Максимум |
Контрольный индикатор | CheckBox1 | Вычислить среднеарифметическое среди 3-х чисел |
3 В модуле формы набрать следующий код, как изображено на рисунке 38.
Рисунок 38 – Программный код
4 Запустить приложение.
Пример 2. Расчет ренты.
Постановка задачи. Создать проект для решения следующего типа задач по расчету ренты. Выкупается страховка, по которой выплачивается по 500 р. в конце каждого месяца в течение 20 последующих лет. Стоимость ренты составляет 60000 р. и выплачиваемые деньги принесут 8% годовых. Необходимо определить, будет ли выгодным инвестирование капитала.
Рисунок 39 – Окно «Рента». Флажок установлен
Таблица 34
Элемент управления | Свойство | Значение |
Форма | Caption | Рента |
Надпись | Caption | Стоимость ренты |
Поле ввода | Name | TextBox1 |
Надпись | Caption | Процентная ставка, годовых |
Поле ввода | Name | TextBox2 |
Надпись | Caption | Разовая выплата |
Поле ввода | Name | TextBox3 |
Надпись | Caption | Срок, лет |
Поле ввода | Name | TextBox4 |
Надпись | Caption | Настоящий объем вклада |
Поле ввода | Name | TextBox5 |
Кнопка | Name Caption | CommandButton1 ОК |
Флажок | Name Caption | CheckBox1 Выплата в конце каждого месяца |
Технология выполнения задания:
1 Создать форму, на которой расположить пять надписей и пять полей ввода, одну кнопку и флажок, как показано на рисунке 39.
2 При помощи окна Properties установить значения свойств Name и Caption элементов управления следующим образом, как показано в таблице 34.
3 Настоящий объем вклада находится финансовой функцией PV: PV (0.08/12, 12*20, 500, , 0), которая возвращает -59 777,15 р.
Результат получает отрицательный, поскольку он представляет сумму, которую необходимо выплатить. Настоящий объем вклада (59777,15 р.) меньше, чем запрашиваемая цена (60000 р.). Следовательно, можно сделать вывод, что это не самый лучший способ инвестирования денег.
Если же выплаты производились в начале каждого периода, то настоящий объем PV (0.08/12, 12*20, 500, , 1) возвращает 60 175,66 р. Это немного больше запрашиваемой цены и, поэтому, стоит подумать о предложении.
4 В модуле формы набрать следующий код, изображенный на рисунке 40.
Рисунок 40 – Программный код
Примечание. Если флажок установлен, то в заголовке окна появится текст Рента: выбрана выплата в конце каждого месяца, а если сброшен, то Рента: выбрана выплата в начале каждого месяца. Таким образом, флажок в данном проекте не только фиксирует тот или иной выбор, но и управляет заголовком окна.
5 Запустить проект.
Лабораторная работа № 10
Разработка пользовательского приложения с помощью объектов: кнопки-переключателя, контрольного индикатора, рамки
Цель: приобретение навыков разработки проекта VBA с помощью объектов Формы - кнопка-переключатель, контрольный индикатор, рамка. Индивидуальные варианты лабораторной работы представлены в таблице 35 (2 часа).
Таблица 35
№ В | Варианты индивидуальных заданий |
Разработать проект VBA с помощью объектов: кнопки-переключателя, контрольного индикатора, рамки | |
; x=-1.23 | |
Даны действительные числа x, y, z. Вычислить: ; | |
Даны действительные числа x, y, z. Вычислить: | |
; b=0.251, x=0.004 | |
; x=1.14 | |
; где | |
; x=0.15394 |
Продолжение таблицы 35
; a=1.618, b=0.992, x=0.018 | |
; y=0.1465, x=2.3864 | |
; a=0.647, b=1.546, x=1.667 | |
; a=0.361, x=0.852 | |
; c=0.983, x=0.89 | |
; a=0.185, b=0.256, x=0.246 | |
; x=0.29 | |
; a=0.357, b=0.128, x=0.634 | |
; x=0.324, a=0.421, b=0.722 |
Продолжение таблицы 35
; где х = 0.256, b = 0.147 | |
; где а = 0.504, х = 0.112 | |
; где а = 0.125, b = 1.320, x = 1.257 | |
; где а = 0.849, х = 0.560 |
3.4 Объекты формы в VBA: Полоса прокрутки и Счетчик
Элемент управления ScrollBar (Полоса прокрутки) предлагает установить числовое значение, основываясь на положение ползунка, причем этот элемент может устанавливать только целые значения. Полоса прокрутки часто находится в текстовых полях, но ее можно добавлять и в другие места. Как правило, она может быть присоединена к краям окон, например, при выводе на экран части растрового рисунка.
Основным событием элемента управления Полоса прокрутки является событие Change, генерируемое при изменении текущего значения полосы. В таблице 36 перечислены основные свойства, которыми может обладать объект «Полоса прокрутки».
Таблица 36 - Основные свойства полосы прокрутки
Свойство | Описание |
Value | Возвращает или устанавливает текущее значение ползунка на полосе прокрутки |
Min | Минимальное значение полосы прокрутки |
Max | Максимальное значение полосы прокрутки |
SmallChange | Устанавливает шаг изменения значения при щелчке по одной из стрелок полосы прокрутки. Это свойство определяет величину, на которую изменится Value при щелчке по стрелке на конце линейки прокрутки. |
Продолжение таблицы 36
LargeChange | Устанавливает шаг изменения при щелчке между ползунком и одной из стрелок полосы прокрутки |
Orientation | Устанавливает ориентацию полосы прокрутки. Допустимые значения: - fmOrientationAuto или -1 (ориентация зависит от размера элемента управления. Используется по умолчанию); - fmOrientationVertical или 0 (вертикальное расположение); - fmOrientationHorizontal или 1 (горизонтальное расположение) |
Элемент управления SpinButton (Счетчик) можно рассматривать, как полосу прокрутки без ползунка, и он выполняет те же функции, что и полоса прокрутки. Он имеет те же свойства Value, Min, Max, SmallChange, что и полоса прокрутки.
Пример 1.
Постановка задачи. Разработать программу вычисления значения выражения, состоящее из вычисления произведения конечного ряда . Вводить пользователем с клавиатуры в одно (два) поле с именем «Исходное число А» («Исходное число В» и т.д.) при установке начального и конечного значения параметра цикла с помощью счетчика и полосы прокрутки, с отображением результата в поле «Результат».
Рисунок 41 – Окно программы «Вычисление значения произведения»
Результат должен отображаться после нажатия кнопки <ОК>. Программа должна заканчивать работу после нажатия кнопки <END>. Окно программы должно иметь вид, показанный на рисунке 41.
Технология выполнения задания:
1 Исходные данные:
i, k Î Z
a Î R, a = 2,71
Результат: P Î R.
2 Процесс программирования приложенияВычисление значения произведения предусмотрен тремя этапами, как показано в таблице 37.
Таблица 37 - Этапы программирования
Этапы программирования | Число объектов |
1. Создание пользовательского интерфейса | 18 объектов |
2. Установка свойств объектов | 12 объектов |
3. Составление программного кода | 2 объекта |
3 При помощи окна Properties установить значения свойств Name и Caption элементов управления, как указано в таблице 38.
Таблица 38 – Свойства элементов управления
Элемент управления | Свойство | Значение |
Форма | Caption | Вычисление значения произведения |
Надпись | Caption | Исходное число А |
Поле ввода | Name | TextBox1 |
Надпись | Caption | Начальное значение i |
Поле ввода | Name | TextBox2 |
Счетчик | Name | SpinButton1 |
Надпись | Caption | Конечное значение i |
Поле ввода | Name | TextBox3 |
Счетчик | Name | SpinButton2 |
Надпись | Caption | Начальное значение k |
Поле ввода | Name | TextBox4 |
Полоса прокрутки | Name | ScrollBar1 |
Надпись | Caption | Конечное значение k |
Поле ввода | Name | TextBox5 |
Продолжение таблицы 38
Полоса прокрутки | Name | ScrollBar2 |
Надпись | Caption | Результат |
Поле ввода | Name | TextBox6 |
Кнопка | ОК | CommandButton1 |
Кнопка | END | CommandButton2 |
4 В модуле формы набрать следующий код, изображенный на рисунках 42а, 42б, 42в.
Рисунок 42а – Программный код кнопки «ОК»
Рисунок 42б – Программный код кнопки «End», «Счетчика1» («Счетчика2»),
«Полосы прокрутки1», («Полосы прокрутки2»), инициализации формы
Обратить внимание на две группы процедур:
1 ScrollBar1_Change () (ScrollBar2_Change ()), SpinButton1_Change () (SpinButton2_Change ()).
2 TextBox2_Change () (TextBox3_Change (), TextBox4_Change (), TextBox5_Change ()).
Первая из них обрабатывает событие Change счетчика (полосы прокрутки), при изменении значения которого его текущее значение отображается в поле ввода Начальное значение k, Конечное значение k, Начальное значение i, Конечное значение i.
Пользователь может ввести значение в поле ввода Начальное значение k, Конечное значение k, Начальное значение i, Конечное значение i с клавиатуры. В этом случае, текущее значение счетчика должно быть автоматически установлено тому значению, которое введено в это поле ввода. Как раз это и делает вторая группа процедур, обрабатывая событие Change поля ввода Начальное значение k, Конечное значение k, Начальное значение i, Конечное значение i. Таким образом, обе процедуры синхронизируют работу поля ввода и счетчика.
Рисунок 42в – Программный код процедур полей ввода «Начальное значение i»,
«Конечное значение i», «Начальное значение k», «Конечное значение k»
Пример 2. Определение размера платежей с целью накопления искомой суммы.
Постановка задачи. Предположим, что за 18 лет необходимо иметь в распоряжении 50000 р. С этой целью решено откладывать постоянную сумму каждый месяц. Если предположить, что удастся обеспечить 6% годовых, сколько денег надо откладывать каждый месяц?
Технология выполнения задания:
1 Создать форму, на которой расположить четыре надписи, четыре поля ввода, одну кнопку, счетчик, как показано на рисунке 43.
2 При помощи окна Properties установить значения свойств Name и Caption элементов управления следующим образом, как показано в таблице 39.
Рисунок 43 – Диалоговое окно «Размер платежей»
Таблица 39 – Свойства элементов управления
Элемент управления | Свойство | Значение |
Форма | Caption | Размер платежей |
Надпись | Caption | Искомая сумма |
Поле ввода | Name | TextBox1 |
Надпись | Caption | Процентная ставка, годовых |
Поле ввода | Name | TextBox2 |
Надпись | Caption | Срок, лет |
Поле ввода | Name | TextBox3 |
Надпись | Caption | Размер ежемесячных выплат |
Поле ввода | Name | TextBox4 |
Кнопка | Name Caption | CommandButton1 ОК |
Счетчик | Name | SpinButton1 |
3 Определение размера платежей с целью накопления искомой суммы находится при помощи финансовой функции Pmt.
Pmt (0.06/12, 18*12, 0, 50000), которая возвращает -129,08 р.
Таким образом, каждый месяц надо откладывать по 129,08 р.
4 В модуле формы набрать следующий код, показанный на рисунке 44.
Примечание. Обратить внимание на две процедуры: SpinButton1_Change и TextBox2_Change. Первая из них обрабатывает событие Change счетчика, при изменении значения которого его текущее значение отображается в поле ввода Процентная ставка, годовых.
Рисунок 44 – Программный код
Можно ввести значение в поле ввода Процентная ставка, годовых с клавиатуры. В этом случае, текущее значение счетчика должно быть автоматически установлено тому значению, которое введено в это поле ввода. Как раз это и делает вторая процедура, обрабатывая событие Change поля ввода Процентная ставка, годовых.
Таким образом, обе процедуры синхронизируют работу поля ввода и счетчика.
5 Запустить проект.
Лабораторная работа № 11
Разработка пользовательского приложения с помощью объектов: полоса прокрутки, счетчик
Цель: приобретение навыков разработки пользовательского приложения с помощью объектов формы - полоса прокрутки, счетчик. Индивидуальные варианты лабораторной работы № 11 выполняются в соответствии с индивидуальными вариантами лабораторной работы № 4 (2 часа).
3.5 Объекты формы в VBA: Список и Поле со списком
Элемент управления ListBox (Список) предназначен для отображения и хранения списка значений. В списке пользователь может выбрать одно или несколько значений, которые в последующем используются в тексте программы. Обычно выбор элемента из списка производится щелчком по элементу. Двойной щелчок по элементу применяется с целью выполнения каких-либо действий в программе, связанных с этим элементов. В таблице 40 приведены основные свойства объекта «Список».
Таблица 40 - Свойства объекта «Список»
Свойство | Описание |
ListIndex | Возвращает номер выбранного элемента списка. Нумерация элементов списка начинается с нуля. Если ни один элемент списка не выбран, то возвращает -1 |
ListCount | Возвращает число элементов списка |
TopIndex | Возвращает элемент списка с наибольшим номером |
ColumnCount | Устанавливает число столбцов в списке |
TextColumn | Устанавливает столбец в списке, элементы из которого возвращаются в качестве значения свойства Text |
Text | Возвращает выбранной в списке элемент |
List | Возвращает элемент списка, стоящий на пересечении указанной строки и столбца. Синтаксис: List (row, column) Row – строка Column - столбец |
RowSource | Устанавливает диапазон, содержащий элементы списка |
ControlSource | Устанавливает диапазон (ячейку), куда возвращается выбранный элемент из списка |
MultiSelect | Устанавливает способ выбора элементов списка. Допустимые значения: fmMultiSelectSingle или 0 (выбор только одного элемента); fmMultiSelectMulti или 1 (разрешен выбор нескольких элементов, выбор осуществляется либо щелчком, либо нажатием клавиши <Пробел>); fmMultiSelectExtended или 2 (разрешено использование клавиши <Shift> при выборе ряда последовательных элементов списка) |
Selected | Логическое свойство, которое возвращает значение True, если элемент списка выбран, и False – в противном случае. Используется для определения выбранного элемента, когда значение свойства MultiSelect установлено равным fmMultiSelectMulti или fmMultiSelectExtended |
ColumnWidths | Устанавливает ширину столбцов списка. Синтаксис: ColumnWidths = String где String – строка, устанавливающая ширину столбцов в пунктах. В следующем примере устанавливается ширина каждого из трех столбцов списка: With ListBox1 .ColumnCount = 3 .ColumnWidths = “20:30:30” End With |
Продолжение таблицы 40
ColumnHeads | Логическое свойство, определяющее, выводить ил в списке заголовки столбцов |
ListStyle | Устанавливает способ выделения элементов. Допустимые значения: fmListStylePlain или 0 (выбранный элемент из списка выделяется цветом); fmListStyleOption или 1 (перед каждым элементом в списке располагается флажок, и выбор элемента из списка соответствует установке флажка) |
MathEntry | Выводит первый подходящий элемент из списка при выборе его имени с клавиатуры. Допустимые значения: fmMathEntryFirstLetter или 0 (выводит подходящий элемент по набранной первой букве. В этом случае, предпочтительно, чтобы элементы списка были упорядочены в алфавитном порядке); fmMathEntryComplete или 1 (выводит подходящий элемент по полному набранному имени); fmMathEntryNone или 2 (режим вывода подходящего элемента в списке отключен) |
BoundColumn | Устанавливает данные, возвращаемые свойством Value. Допустимые значения: 0 (свойством Value возвращается индекс выбранной строки, т.е. в этом случае оно действует как свойство ListIndex); От 1 до количества столбцов в списке (свойством Value возвращается элемент из выбранной строки, стоящий в столбце, заданным значением свойства BoundColumn) |
3.5.1 Заполнение списка и удаление его элементов
Для поэлементного заполнения списка и удаления из него выбранного элемента применяются методы Clear, RemoveItem и AddItem.
Метод Clear удаляет все элементы из списка.
Метод RemoveItem удаляет из списка элемент с указанным номером.
Синтаксис:
RemoveItem (index)
где
index – номер удаляемого элемента из списка.
Примечание. Этот метод не работает, если список заполнен элементами из диапазона при помощи свойства RowSource.
Метод AddItem добавляет элемент в список.
Синтаксис:
AddItem ([item [, varIndex]])
где
item – элемент (строковое выражение) добавляемый в список;
varIndex – номер добавляемого элемента.
Метод AddItem позволяет заполнять список как в цикле, так и поэлементно.
Пример 1.
Постановка задачи. Создать форму, которая добавляет и удаляет список. Расположить в ней три командные кнопки и один список.
Технология выполнения задания:
1 При помощи окна Properties установить значения свойств Name и Caption элементов управления следующим образом, как показано в таблице 41.
Таблица 41 – Свойства элементов управления
Элемент управления | Свойство | Значение |
Форма | Caption | Список |
Кнопка | Name Caption | Добавить |
Кнопка | Name Caption | Удалять из списка |
Кнопка | Name Caption | Удалить все |
Список | Name | ListBox1 |
2 В модуле формы набрать следующий код, изображенном на рисунке 45.
3 Проект готов (рисунок 46).
Примечание. В этом проекте при нажатии на кнопку Add в список добавляется новый элемент. При нажатии кнопки Remove удаляется выделенный элемент, а при нажатии кнопки Clear – весь список очищается.
3.5.2 Список с несколькими столбцами
Для создания многоколоночного списка следует установить значение свойства ColumnCount, которое и задает, сколько столбцов имеется в списке. Кроме того, при работе с подобным списком полезно определить значение свойства ColumnWidths, которое устанавливает ширину каждого столбца. А затем список надо заполнить либо посредством массива, либо поэлементно.
В качестве примера создания списка с несколькими столбцами рассмотрим проект, в котором производится табулирование функции sin (x) на промежутке от а до b с шагом h, а результат табуляции (значения аргумента и функции) выводится в список.
Пример 1.
Постановка задачи. Создать форму, позволяющую табулировать функцию sin (x). Расположить три надписи, три поля ввода, одну кнопку и список, как показано на рисунке 47.
Рисунок 45 – Код программы
Рисунок 46 – Приложение Список
Рисунок 47 – Диалоговое окно Табулирование функции sin (x)
Технология выполнения задания:
1 При помощи окна Properties установить значения свойств Name и Caption элементов управления следующим образом, как показано в таблице 42.
Таблица 42 – Свойства элементов управления
Элемент управления | Свойство | Значение |
Форма | Caption | Табулирование функции sin (x) |
Надпись | Caption | а |
Поле ввода | Name | TextBox2 |
Надпись | Caption | b |
Поле ввода | Name | TextBox3 |
Надпись | Caption | h |
Поле ввода | Name | TextBox4 |
Кнопка | Name Caption | OK CommandButton1 |
Список | Name | ListBox1 |
2 В модуле формы набрать следующий код, указанный на рисунке 48. Проект готов
Дата добавления: 2016-03-22; просмотров: 1456;