Лабораторная работа3_VBA
.pdfВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
1 |
Лабораторная работа № 3
Структура редактора VB. Создание и реализация процедуры Sub
сиспользованием встроенных диалоговых окон
взадачах структуры Следование.
Цели: Рассмотреть основные этапы создания процедуры Sub на VBA; научиться использовать функции InputBox() и MsgBox() для ввода и вывода информации в процедурах Sub задач структуры Следование.
1) Теоретическая часть |
|
|
|
||
Базовая структура Следование (линейный |
|
|
|||
Оператор 1 |
|||||
процесс) – это структура, которая предполагает |
|||||
|
|
||||
|
|
||||
последовательное |
выполнение |
действий |
|
|
|
Оператор 2 |
|||||
(операторов). Структура следования определяется |
|||||
|
|
||||
|
|
||||
блок-схемой. |
|
|
|
|
|
|
|
Оператор n |
|||
|
|
|
|||
|
|
|
|
|
Встроенные диалоговые окна
Для ввода и вывода информации в процедурах VBA используются встроенные диалоговые окна: окно ввода и окно сообщения.
Окно ввода – диалоговое окно, содержащее поле ввода и сообщение, поясняющее ввод. Окно ввода создается с помощью функции InputBox(). Функция InputBox() устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа String, содержащее текст, введенный в поле ввода.
При вводе функции появляется подсказка об аргументах данной
функции |
|
|
|
Структура окна |
Синтаксис |
|
|
|
(аргументы указаны на русском языке) |
||
InputBox (Сообщение, Заголовок, |
|||
Поле |
ввода, |
Хпоз, |
Yпоз, |
ФайлСправки, Содержание)
Окно сообщения – диалоговое окно, содержащее сообщение пользователя и командные кнопки, одну из которых может выбрать пользователь. Окно сообщения создается с помощью функции MsgBox(). Функция MsgBox() возвращает значение типа integer, указывающее какая
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
2 |
кнопка была выбрана. В случае создания окна без возвращения результата в операторе MsgBox круглые скобки вокруг списка аргументов функции опускаются. Для объединения нескольких текстовых строк в одну используется символ конкатенации &.
При вводе функции появляется подсказка об аргументах данной
функции
Структура окна Синтаксис
(аргументы указаны на русском языке)
MsgBox (Сообщение , Кнопки, Заголовок , ФайлСправки, Содержание)
Установки для аргумента Buttons (Кнопки) функции MsgBox
Группа 1. Значения, определяющие отображаемые кнопки в окне
Константа |
Значения |
Отображаемые кнопки |
|
|
|
vbOKOnly |
0 |
|
|
|
|
vbOKCancel |
1 |
|
|
|
|
vbAbortRetryIgnore |
2 |
|
|
|
|
vbYesNoCancel |
3 |
|
|
|
|
vbYesNo |
4 |
|
|
|
|
vbRetryCancel |
5 |
|
|
|
|
Группа 2. Значения, определяющие отображаемые информационные значки в окне сообщения
Константа |
|
Значение |
Значок сообщения |
|
|
|
|
|
|
vbCritical |
|
16 |
|
|
|
|
|
|
|
vbQuestion |
|
32 |
|
|
|
|
|
|
|
vbExclamation |
|
48 |
|
|
|
|
|
|
|
vbInformation |
|
64 |
|
|
|
|
|
|
|
|
Значения, возвращаемые функцией MsgBox() |
|
||
|
|
|
|
|
Константа |
|
Значение |
Нажатая кнопка |
|
|
|
|
|
|
vbOk |
|
1 |
Ok |
|
|
|
|
|
|
vbCancel |
|
2 |
Отмена (Cancel) |
|
|
|
|
|
|
vbAbort |
|
3 |
Прервать (Abort) |
|
|
|
|
|
|
vbRetry |
|
4 |
Повторить (Retry) |
|
|
|
|
|
|
vbIgnore |
|
5 |
Пропустить (Ignore) |
|
|
|
|
|
|
vbYes, vbNo |
|
6,7 |
Да (Yes), Нет (No) |
|
|
|
|
|
|
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
3 |
Понятие и типы процедур VBA
Процедура (Procedure) - поименованная, самостоятельно выполняемая компонента программ на VBA. Каждая процедура имеет уникальное имя, по которому она вызывается на выполнение.
В VBA используются процедуры двух типов: процедуры-функции Function и процедуры-подпрограммы Sub.
Процедура Function – это процедура-функция, которая выполняет набор действий и возвращает значение, которое присваивается ее имени внутри процедуры.
Процедура Sub – это процедура-подпрограмма, которая выполняет набор действий, приводящих к решению задачи, и не возвращает значение вызывающей программе.
Структура процедуры Sub
[Private/Public] [Static] Sub Имя_процедуры [список аргументов]
Инструкция описания переменных Dim
Dim Имя_переменной As Тип_данных
Инструкция описания констант Const
Const Имя_константы As Тип_данных = Значение
Инструкции операторов
Операторы VBA |
|
End Sub |
|
Элементы описания процедуры Sub: |
|
Public |
Указывает, что процедура Sub является общей, т. е. доступной для |
|
всех других процедур во всех модулях. |
Private |
Указывает, что процедура Sub доступна для других процедур только |
|
того модуля, в котором она написана. |
Static |
Указывает, что локальные переменные процедуры Sub сохраняются |
|
между вызовами этой процедуры. |
Sub, End Sub |
Начало и конец процедуры |
Имя |
Имя процедуры Sub, удовлетворяющее стандартным правилам |
|
именования переменных. |
Список |
Список переменных, представляющий аргументы, которые |
аргументов |
передаются в процедуру Sub при ее вызове. Имена переменных |
|
разделяются запятой. |
Понятия модуля проекта документа
Проект (Project) - набор всех программных составляющих документа. В редакторе VB окно проекта отражает иерархическую структуру модулей текущего проекта.
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
4 |
Модуль (Module) - это элемент проекта, содержащий |
набор |
описаний и процедур на языке VBA.
В VBA используются основные типы модулей: стандартные модули (Module), модули форм и отчетов (UserForm), модули класса (Class), модули рабочих книг (ЭтаКнига), модули рабочих листов (Лист).
В стандартных модулях (Module) хранятся процедуры типа Sub и Function. В проекте документа стандартные модули создаются командой
Insert, Module (Вставка, Модуль).
Этапы создания процедуры Sub Этап 1. Вставка модуля в проект
Активизируйте редактор VB. В окне проекта кликните правой кнопкой мыши на элементе . Выполните команду Insert, Module (Вставка, Модуль). В проекте появится новый модуль Module1 и окно для редактирования кода процедур этого модуля. В окне Properties можно установить значение свойства Name (Имя) модуля.
Этап 2. Вставка процедуры в модуль
Выполните команду Insert, Procedure (Вставка, Процедура) с
помощью команды меню Insert или кнопки на стандартной панели инструментов.
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
5 |
В окне Add Procedure (Добавить,
Процедура) введите имя процедуры и
нажмите на кнопку . На экране появится код новой процедуры, состоящий из строк заголовка и конца процедуры.
Этап 3. Ввод кода процедуры
Введите код процедуры, используя операторы и функции VBA.
Этап 4 . Сохранение и выполнение процедуры.
Для сохранения и выполнения процедуры нажмите соответственно кнопки , стандартной панели инструментов редактора VB.
2) Практическая часть
Пример 1. Создание встроенных диалоговых окон
Создать процедуру СтудентВуза (), которая отображает на экране диалоговые окна.
1
Окно сообщения о действиях пользователя
2
Окно ввода ФИО
3
Окно ввода ВУЗ
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
6 |
4
Окно ввода Факультет
5
Окно сообщения о студенте.
Этап 1. Вставка модуля в проект
1)Откройте новую рабочую книгу и активизируйте редактор VB (Alt+F11).
2)В окне проектов нажмите правой кнопкой мыши на элементе
3)Выполните команду Insert, Module (Вставка, Модуль). В проекте появится новый модуль Module1 и окно для редактирования кода процедуры.
4)Установите значения свойства Name (Имя) в окне свойств Properties. Модуль называется Лаб3.
Этап 2. Вставка процедуры в модуль
1)Выполните команду Insert, Procedure (Вставка, Процедура) с помощью команды меню Insert или кнопки на стандартной панели инструментов.
2)Задайте имя процедуры в окне Add Procedure (Добавить, Процедура) и нажмите на кнопку .
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
7 |
Этап 3. Ввод кода процедуры. Введите код процедуры:
Символ конкатенации & используется для объединения нескольких текстовых строк в одну.
Этап 4. Сохранение и выполнение процедуры
1)Сохраните рабочую книгу с процедурой под именем Лаб3 в личной папке.
2)Выполните процедуру с помощью кнопки стандартной панели инструментов редактора VB.
Пример 2. Этапы создания процедуры Sub
Создать процедуру ДавлениеШара (), которая вычисляет значение давления N шара c радиусом R и массой m на стену, к которой он подвешен на нитке длиной b.
|
= |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 + 2 |
|
|
||
Этап 1. Постановка задачи |
|
|
|
||
|
|
|
|
||
Данные |
Обозначение |
|
Тип данных |
||
Исходные данные |
b - длина нити |
|
действительное число |
||
(ввод с клавиатуры) |
|
|
|
||
m - масса шара |
|
действительное число |
|||
|
|
|
|
||
|
R - радиус шара |
|
действительное число |
||
|
|
|
|
||
Результат |
N - давление |
|
действительное число |
||
|
|
|
|
|
|
Этап 2. Построение математической модели
Цель задачи |
Исходные данные |
Расчетные данные |
Ограничения |
||||||||||
|
|
|
|
||||||||||
Давление |
b, m, R |
P mg - момент силы P |
b>0; m>0; R>0 |
||||||||||
шара |
|
|
|
g=9.8 |
N |
|
|
PR |
|
||||
|
|
|
|
|
|
|
|
|
|
||||
N |
|
|
PR |
|
|
|
|
|
-давление |
N>0 |
|||
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
b2 |
2Rb |
|
|||
|
|
|
|
|
|
|
|||||||
b2 |
2Rb |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
8 |
Этап 3. Разработка алгоритма:
Базовая структура программирования – Следование.
Начало
Ввод
исходных
данных
b,m,R,g
P mg
N |
|
PR |
|
|
|
||
|
|
||
b2 2Rb |
|||
|
|
Вывод
результата
N
Конец
Этап 4. Программирование на VBA
1)В окне проекта нажмите мышью по элементу , чтобы добавить в модуль Лаб3 новую процедуру. В окне редактирования кода процедур этого модуля установите курсор (ниже первой процедуры).
2)Вставьте процедуру с именем ДавлениеШара в модуль Лаб3.
3)Введите код процедуры и исправьте ошибки ввода.
4) Cохранить процедуру из редактора VB комбинацией клавиш Ctrl+S.
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
9 |
Этап 5. Тестирование и отладка программы
При выполнении тестирования и отладки программ используется меню
Debug (Отладка).
1)Выполните процедуру кнопкой стандартной панели инструментов для исходных данных: b=0,04; m=0,3; R=0,25.
2)Проверьте логику выполнения процедуры в режиме пошагового выполнения процедуры. Для перехода в этот режим выполните команду Debug Step Into (Отладка, Шаг с заходом), а затем клавишу F8 для перехода на новый шаг. После выполнения всей процедуры выйти из режима клавишей F5.
Этап 6. Анализ результатов решения задачи
1)Проверьте, что найденный результат значения N удовлетворяет ограничениям математической задачи (N>0).
2)Проанализируйте истинность результата с учетом физического смысла.
Этап 7. Сопровождение программы
Сохранение целого модуля как текстового файла (с расширением
.bas) называется экспортированием модуля. Осуществляется командой File, Export File (Файл, Экспорт файла) или комбинацией Ctrl+E.
1)Сделайте резервную копию модуля Лаб3 , сохранив его как текстовый файл Лаб3.bas в личную папку группы.
2)Распечатайте модуль Лаб3 с помощью команды File, Print или комбинации клавиш Ctrl+P.
3) Задания для самостоятельной работы
Процедуры задач самостоятельной работы создайте в модуле
Задачи_СР документа Лаб3.
1.Создайте в процедуру Приветствие, которая выводит на экран окно ввода Диалог и окно сообщения Приветствие. Для форматирования сообщения в окне Приветствие используйте символ vbCr для начала новой строки.
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева
ВГСХА, каф. «Информатика, теоретическая механика и ОНИ» |
10 |
2.С крыши падают одна за другой две капли. Через t2=2 с. после начала падения второй капли расстояние между каплями стало s=25 м. Создайте процедуру для вычисления значения t, определяющего насколько раньше первая капля оторвалась от крыши.
= |
2 |
+ 2 |
− |
|
|||
|
|
2 |
2 |
|
|
|
3.Человек, имеющий массу M, прыгает под углом α к горизонту со
скоростью v0. В верхней точке траектории он бросает со скоростью v1 вертикально вниз груз массой m. Создайте процедуру для вычисления значения общей высоты H, на которую подпрыгнул человек.
|
2 |
2 |
|
2 2 |
= |
0 |
|
+ |
1 |
|
2 |
2 2 |
4.Точечный источник света с силой света I кд (кандела) освещает точку, находящуюся от него на расстоянии s м. Сбоку от источника света на том же расстоянии помещено плоское зеркало, отражающее свет в точку под углом 4 . Вычислить освещенности точки E1, E2 при наличии зеркала и без него.
|
|
|
|
3 |
|
|
|
I |
||
E1 |
I |
|
|
I cos |
|
; E2 |
|
|
; I=100 кд; s=2,5 м. |
|
|
|
|
|
|
|
2 |
||||
2 |
2 |
(1 cos ) |
2 |
s |
||||||
|
s |
s |
|
|
|
|
5.Вычислить общее сопротивление R трех параллельных сопротивлений
R1,R2, R3.
R |
|
|
|
1 |
|
|
|
. |
|
|
|
|
|
|
|||
|
1 |
|
1 |
|
1 |
|||
|
|
|
|
|
|
|
||
|
|
R1 |
R2 |
|
R3 |
6.Создайте процедуру для вычисления параметров прямоугольного параллелепипеда со сторонами a, b, c:
|
|
|
|
|
|
|
|
|
|
a) |
длины диагонали d a2 b2 c2 ; |
|
|
|
|||||
b) |
угла между диагональю и плоскостью основания arctg ( |
|
|
c |
|
) ; |
|||
|
|
|
|
||||||
|
|
|
|
||||||
a2 |
b2 |
||||||||
|
|
|
|
|
|
|
|||
c) |
объема шара, диаметром которого является диагональ, V d 3 / n , n=6. |
7.Определить радиус R круговой орбиты искусственного спутника, период
обращения которого Т равен одним суткам. Радиус Земли R0 принять равным 6400 км.
R 3 |
gR02T 2 |
|
4 2 |
||
|
8.Найти период колебаний T с математического маятника длиной l м, подвешенного в вагоне, движущегося горизонтально с ускорением a м/с2.
T 2 |
|
|
|
l |
|
|
|
|
|||
|
|
|
|||
a2 |
g 2 |
||||
|
|
|
Составители ст. преподаватели С. И. Калмыкова, М. Н. Елисеева, Е. В. Ширяева