Программирование на VBA в MS Excel
Лабораторная работа № 1.
Линейные алгоритмы
Время выполнения
4 часа
Цель работы
Научиться использовать язык программирования Visual Basic for Applications (VBA) для разработки модулей в Excel на основе линейных алгоритмов.
Задачи лабораторной работы
После выполнения данной работы студент должен знать и уметь:
- знать все операторы, используемые в программах;
- уметь применять любые из изученных операторов для написания своих модулей;
- уметь объяснить написанную программу.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система Windows XP, электронные таблицы Excel с приложением в виде языка Visual Basic for Applications.
Общие теоретические сведения
VBA – это язык объектно-ориентированного программирования.
Основными парадигмами являются объект, свойство, метод, событие, класс и семейство объектов.
Объект – это инкапсуляция данных вместе с кодом, предназначенным для их обработки.
Семейство – объект, содержащий несколько других объектов того же типа:
Worksheets (“Лист 1”) – рабочий лист с имени Лист1,
Worksheets (1) – первый лист рабочей книги.
Классы – это проект, на основе которого будет создан объект, т.е. класс определяет имя объекта, его свойства и действия, над ним выполняемые. А каждый объект, свою очередь, является экземпляром класса.
Методы – это действия, выполняемые над объектом.
Объект.метод – синтаксис метода
Пример.
Application.Quit – закрыть объект Application.
Worksheets (“Лист1”).Chartobjects.Delete – удалит все диаграммы с листа “Лист1”.
Свойства – это атрибут объекта, определяющий его характеристики: размер, цвет, положение на экране или состояние (доступность, видимость).
Для изменения характеристик меняют его свойства:
Объект.Свойство=Значение свойства
Пример.
Worksheets.Visible = False
Есть свойства, возвращающие объект:
ActiveCell возвращает активную ячейку активного листа активной рабочей книги.
ActiveWindow – активное окно.
Свойства ActiveCell, ActiveWindow. ActiveCell и Application. ActiveWindow. ActiveCell возвращают одну и ту же активную ячейку.
События – это действия, распознаваемые объектом.
Суть программирования на VBA и заключается в том, чтобы на событие получить отклик.
Пример 1. Написать программу, которая вычисляет периметр треугольника.
Запись программы в виде блок-схемы (рис. 1) и визуальное представление формы для ввода данных (рис. 2) и результата (рис. 3):
Рисунок 1. Блок-схема решения задачи
Рисунок 2. Ввод исходных данных в процессе выполнения программы
Рисунок 3. Вывод результата в процессе выполнения программы
Программный код
Option Explicit
Sub ПериметрТреугольника()
Dim ВтораяСторона, ТретьяСторона, Периметр As Single
ВтораяСторона = 3.5
ТретьяСторона = InputBox("Введите значение третьей стороны треугольника", "Третья сторона")
Периметр = Cells(1, 4) + ВтораяСторона + ТретьяСторона
MsgBox "Периметр треугольника = " & Периметр
End Sub
Пример 2. Вычислите значение квадратного корня из суммы трех переменных.
Запись программы в виде блок-схемы (рис. 4) и визуальное представление формы для ввода данных (рис. 5) и результата (рис. 6):
Рисунок 4. Блок-схема решения задачи
а)
б)
в)
Рисунок 5. Ввод исходных данных в процессе выполнения программы
Рисунок 6. Вывод результата в процессе выполнения программы
Программный код
Option Explicit
Sub КореньКвадратныйИзСуммыТрехПеременных()
Dim ПерваяПеременная, ВтораяПеременная, ТретьяПеременная, Сумма As Single
Dim Корень As Double
ПерваяПеременная = InputBox("Введите значение первой переменной", "Первая Переменная")
ВтораяПеременная = InputBox("Введите значение второй переменной", "Вторая Переменная")
ТретьяПеременная = InputBox("Введите значение третьей переменной", "Третья Переменная")
Сумма = ТретьяПеременная + ВтораяПеременная + ПерваяПеременная
Корень = Sqr(Сумма)
MsgBox "Корень из суммы трех переменных = " & Корень
End Sub
Пример 3. Вычислить Y, задав значения переменным:
Программный код
Sub Main()
Dim x, b, a, res As Single
x = -3
b = 2
a = 0,5
res = (Sqr(5 * x ^ 4 + 2 * Sin(b) ^ 2)) / Cos(Abs(a ^ 3 - 3 * Tan(b)))
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton1_Click()
Dim x, b, a, res As Single
x = Cells(3, 1)
b = Cells(3, 2)
a = Cells(3, 3)
res = (Sqr(5 * x ^ 4 + 2 * Sin(b) ^ 2)) / Cos(Abs(a ^ 3 - 3 * Tan(b)))
Cells(5, 2) = res
End Sub
Визуальное представление решения задачи представлено на рис. 7.
Рисунок 7. Визуальное представление решения задачи
Пример 4. Вычислить f, задав значения переменным:
Программный код
Sub Main()
Dim x, y, t, res As Single
x = -3
y = 2
t = 0.5
res = (x / (4.8 * x ^ 3 - y) ^ 3) + 1 / 4 * (t - 3 / x)
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton2_Click()
Dim x, y, t, res As Single
x = Cells(3, 9)
y = Cells(3, 10)
t = Cells(3, 11)
res = (x / (4.8 * x ^ 3 - y) ^ 3) + 1 / 4 * (t - 3 / x)
Cells(5, 10) = res
End Sub
Визуальное представление решения задачи представлено на рис. 8.
Рисунок 8. Визуальное представление решения задачи
Видеоурок по выполнению заданий лабораторной работы http://informatics.ssga.ru/practics/lab-28.
Варианты заданий
Задание 1. Составить блок-схему и написать программный код согласно условию задачи.
- Вычислите значение квадратного корня из суммы трех переменных.
- Вычислите значение суммы обратных величин трех переменных.
- Найдите сумму первой и второй переменных и разность первой и третьей переменной.
- Найти объем цилиндра.
- Вычислить площадь прямоугольника.
- Вычислите значение куба, квадрата и обратной величины переменных.
- Найдите площадь круга по формуле .
- Найти расстояние от точки М до начала координат.
- Найти сторону квадрата, площадь которого равна площади прямоугольника.
- Найти площадь ромба.
- Определите произведение трех переменных.
- Найти гипотенузу треугольника.
- Найти остаток от деления двух действительных чисел.
- Найти сумму квадратов трех чисел.
- Найти среднее арифметическое трех введенных чисел.
Задание 2. Вычислить для своего варианта Y, задав значения переменным:
Задание 3. Вычислить для своего варианта f, задав значения переменным
Технология выполнения работы
- Разработать алгоритм для написания программы в виде блок-схемы.
- Написать программу.
- Протестировать ее с разными исходными данными.
Содержание отчета
- Цель работы, условие задачи
- Алгоритм в виде блок-схемы.
- Исходный текст программы.
- Вводимые данные и результаты.
- Фрагменты экрана с диалоговыми окнами Excel.
- В программе значение одной из переменных должно быть записано в ячейке электронной таблицы.
- Значение другой переменной задается в программе или вводится с помощью окна-диалога.
- Все типы переменных и констант, которые используются в программе, должны быть объявлены и отражать смысловое значение переменных или констант.
- Результат работы программы должен иметь наглядный вид.
- Для запуска макроса создать кнопку с соответствующей надписью.
Вопросы для защиты работы
- Какие встроенные типы данных вы знаете?
- Как описываются переменные?
- Как объявляют константы?
- Какие операции языка VBA вы знаете?
- Какие операторы языка VBA вы знаете?
- Перечислите операторы управления
- Укажите операторы, используемые для ввода данных с рабочего листа.
- Как заменить Arcsin в VBA?
- Укажите формулу, которая заменит Arcctg в VBA.