VBA — универсальный язык программирования. С помощью его можно создавать полноценные приложения на Visual Basic, поскольку эти языки — близкие родственники. Создавать программы на нем можно очень быстро и легко, не нужно заботиться об установке и настройке среды программирования и наличии нужных библиотек на компьютере пользователя — MS Office есть практически на любом компьютере. Рассмотрим пример создания программы с использованием двумерных массивов.
Удобство среды VBA заключается в том, что она внедрена в пакет прикладных программ Microsoft Office и, соответственно, является доступной практически на любом ПК, не требует установки дополнительного программного обеспечения.
Немногие учителя используют в своей работе возможности так называемого офисного программирования. С помощью языка VBA можно создавать различные проекты, которые пригодны к использованию, в том числе на уроках информатики.
Массив — набор однотипных переменных, объединенных одним именем и доступных через это имя и порядковый номер переменной в наборе. Организуем в электронных таблицах Excel двумерный массив А, состоящий из 20 х 10 = 200 элементов. Для этого в Excel создадим поле, в котором определим элементы массива целыми случайными числами от 1 до 100.
Рис. 1. Поле двумерного массива в Excel
Перейдём во вкладку Разработчик → Visual Basic. Затем вкладка Insert → Module. Откроется окно для создания программного кода.
Рис. 2. Окно для создания программного кода
Sub Двумерный_Массив()
Dim A(20, 10) As Integer
For i = 1 To 20 'Число строк в массиве
For j = 1 To 10 'Число столбцов в массиве
A(i, j) = Int(Rnd * 100 + 1) 'Задание массива целыми числами от 1 до 100
Cells(i, j) = A(i, j)
Next j
Next i
При выполнении программы на активном листе Excel образуется следующее поле:
Рис. 3. Заполнение двумерного массива в Excel
Определим переменные для нахождения максимального, минимального, среднего значения в таблице, кроме того, вычислим сумму и размах таблицы. Все перечисленные переменные целые, кроме действительного среднего значения. Присвоим им соответствующие типы данных: Dim Max, Min, Сумма, Размах As Integer, Среднее As Single.
Используя принцип математической индукции, найдём наибольшее и наименьшее значения таблицы: If A(i, j) >Max Then Max = A(i, j)
If A(i, j) < Min Then Min = A(i, j)
Для вычисления суммы: Сумма = Сумма + A(i, j), среднего значения: Среднее = Сумма / 200, размаха таблицы: Размах = Max — Min. Результат программы будет следующий:
Sub Двумерный_Массив()
Dim A(20, 10) As Integer
Dim Max, Min, Сумма, Размах As Integer, Среднее As Single
Max = 0 'Начальное значение Максимального элемента в массиве
Min = 100 'Начальное значение Минимального элемента в массиве
Сумма = 0
For i = 1 To 20 'Число строк в массиве
For j = 1 To 10 'Число столбцов в массиве
A(i, j) = Int(Rnd * 100 + 1) 'Задание массива целыми числами от 1 до 100
Cells(i, j) = A(i, j)
If A(i, j) >= Max Then Max = A(i, j) 'Вычисление Максимального элемента в массиве
If A(i, j) <= Min Then Min = A(i, j) 'Вычисление Минимального элемента в массиве
Сумма = Сумма + A(i, j) 'Вычисление Суммы
Next j
Next i
Среднее = Сумма / 200 'Вычисление Среднего значения
Размах = Max — Min
Range(«A22").Value = «Max ="
Range(«A23").Value = «Min ="
Range(«A24").Value = «Сумма ="
Range(«A25").Value = «Среднее ="
Range(«A26").Value = «Размах ="
Range(«B22").Value = Max
Range(«B23").Value = Min
Range(«B24").Value = Сумма
Range(«B25").Value = Среднее
Range(«B26").Value = Размах
End Sub
Для создания копии таблицы, сдвинем её на 11 позиций вправо.
'Создание копии таблицы
For i = 1 To 20
For j = 1 To 10
Cells(i, j + 11) = A(i, j)
Next j
Next i
Наглядно видно, что перед нами копия таблицы.
Рис. 4. Копия таблицы
С этой таблицей мы может выполнять какие-либо действия, например: Заменим все числа кратные 2 на 2, кратные 3 на 3, кратные 5 на 5, остальные на «*». Произведём подсчёт таких чисел. Для этого добавим строки:
'Обработка таблицы
Dim Кратные2, Кратные3, Кратные5, Звезд As Integer
Кратные2 = 0
Кратные3 = 0
Кратные5 = 0
Звезд = 0
For i = 1 To 20
For j = 1 To 10
If A(i, j) \ 2 = A(i, j) / 2 Then Cells(i, j + 22) = 2
If A(i, j) \ 3 = A(i, j) / 3 Then Cells(i, j + 22) = 3
If A(i, j) \ 5 = A(i, j) / 5 Then Cells(i, j + 22) = 5
If A(i, j) \ 2 <> A(i, j) / 2 And A(i, j) \ 3 <> A(i, j) / 3 And A(i, j) \ 5 <> A(i, j) / 25 Then Cells(i, j + 22) = "*"
If A(i, j) \ 2 = A(i, j) / 2 Then Кратные2 = Кратные2 + 1 'Подсчёт количества чисел кратных 2
If A(i, j) \ 3 = A(i, j) / 3 Then Кратные3 = Кратные3 + 1 'Подсчёт количества чисел кратных 3
If A(i, j) \ 5 = A(i, j) / 5 Then Кратные5 = Кратные5 + 1 'Подсчёт количества чисел кратных 5
If Cells(i, j + 22) = "*" Then Звезд = Звезд + 1 'Подсчёт количества "*"
Next j
Next i
Range(«D22").Value = «Таблица»
Range(«O22").Value = «Копия Таблицы»
Range(«Z22").Value = «Обработанная таблица»
Range(«W22").Value = «Кратные 2" 'Вывод результатов
Range(«W23").Value = «Кратные 3"
Range(«W24").Value = «Кратные 5"
Range(«W25").Value = «Кол-во *"
Range(«X22").Value = Кратные2
Range(«X23").Value = Кратные3
Range(«X24").Value = Кратные5
Range(«X25").Value = Звезд
Рис. 5. Обработанная таблица
Используя офисное программирование можно сформировать у студентов комплекс знаний, умений и навыков, необходимых для решения профессиональных задач в области автоматизации работы с офисным пакетом Microsoft Office.
Литература:
- И. Г. Фризен. Офисное программирование: Учебное пособие / М. Издательско-торговая корпорация «Дашков и К», 2013 г.
- Языки управления приложениями: Учебно-методическое пособие. — М.: Издательский отдел факультета ВМиК МГУ имени М. В. Ломоносова № 05899; 2015 г.
- https://studfiles.net/preview/2897110/
- https://www.intuit.ru/studies/courses/23/23/info