Главная страница

Информатика VBA. Учебное пособие по дисциплинам Информатика иИнформационные технологии


Скачать 1.05 Mb.
НазваниеУчебное пособие по дисциплинам Информатика иИнформационные технологии
АнкорИнформатика VBA.pdf
Дата28.01.2017
Размер1.05 Mb.
Формат файлаpdf
Имя файлаИнформатика VBA.pdf
ТипУчебное пособие
#900
страница9 из 11
1   2   3   4   5   6   7   8   9   10   11
6.3
Лабораторная работа №2
Обработка массивов данных на VBA
В лабораторной работе №2 одно задание.
Задание для лабораторной работы №2.
Составить программу для определения среднего арифмети-
ческого положительных чисел, расположенных в первых пяти
строках и первых трех столбцах рабочего листа Excel. Вывести
положительные числа в файл с именем «Res2.txt». Записать по-
ложительные числа в одномерный массив, отсортировать их по
возрастанию и вывести полученный массив данных в файл
«Res2.txt
» и в первый столбец рабочего листа Excel, начиная с 11-
ой строки. Сохранить рабочую книгу Excel в файле с названием
Lab
2, а программу в файле Prog2.
Последовательность действий для выполнения лабораторной работы.
1
,
0
;
2 2
0
при
24 1
0 1
при
1 1
при
1 3
3
=










>



+

<


=
x
x
x
x
x
x
x
x
S
0 0,2 0,4 0,6 0,8 1
1,2
-2
-1,6
-1,2
-0,8
-0,4 0
0,4 0,8 1,2 1,6 2
1
,
0
;
2 2
0
при
)
2
(
sin
0 1
при
1
при
2 2
2 3
=










>




<
+
=
x
x
x
x
x
x
x
x
V
π
0 0,2 0,4 0,6 0,8 1
1,2
-2
-1,6
-1,2
-0,8
-0,4 0
0,4 0,8 1,2 1,6 2

102 1.
Запустите Excel. На первом листе рабочей книге наберите тестовые данные для отладки программы (например, так как показано на ри- сунке 6.4). Сохраните рабочую книгу Excel в своей папке под име- нем Lab2.
Рисунок 6.4 - Пример тестовых данных для отладки программы
2.
Вызвать редактор макроса VBA (комбинация клавиш Alt+Fl1) и набрать текст программы:
Sub Prog2()
Dim Mas() As Variant '
переменная Mas - одномерный массив
Dim S As Single '
Объявляем рабочие переменные
Dim Kol As Integer, i As Integer, j As Integer
S = 0
' переменная для вычисления суммы положительных чисел
Kol = 0
'переменная для вычисления количества положительных чисел
For i = 1 To 5 Step 1 '
цикл для перебора первых пяти строк листа Excel
For j = 1 To 3 Step 1 '
цикл для перебора первых трех столбцов листа
If Cells(i, j) > 0 Then '
если число в ячейке положительное, то
S = S + Cells(i, j) : Kol = Kol + 1 '
добавляем его к сумме
End If '
и увеличиваем количество положительных чисел на единицу
Next j '
заканчиваем цикл по столбцам
Next i '
заканчиваем цикл по строкам
'
выводим на лист ответ

103
Cells
(1,5)="Сумма положительных чисел": Cells(1, 10) = S
Cells
(2, 5)="Количество положительных чисел": Cells(2, 10) = Kol
If Kol = 0 Then '
если на листе нет положительных
Cells
(3, 5) = "Ошибка в данных" ' чисел - сообщаем об ошибке и
Exit Sub '
завершаем работу программы
End If '
завершаем If Kol = 0 Then
'на листе есть положительные числа - продолжаем работу
Cells(3, 5) = "C
реднее арифметическое"
Cells(3, 10) = S / Kol '
выводим значение среднего арифметического
Open "Res.txt" For Output As #1 '
открываем файл для вывода
' Примечание.
' Так как в имени файла путь не указан, то он будет
' сохраняться в папке "Мои документы"
' Чтобы файл сохранился в папке с книгой Excel, необходимо
' перед запуском программы выполнить сохранение
' файла с книгой Excel в свою папку
' вывод поясняющего текста в файл Res.txt
Print
#1, "Положительные числа первых пяти строк и первых трех столбцов"
'
резервируем место в оперативной памяти для массива Mas
ReDim Mas(Kol – 1) '
первый элемент массива в VBA имеет индекс 0 k = -1
For i = 1 To 5 Step 1 '
просматриваем строки и столбцы заново
For j = 1 To 3 Step 1
If Cells(i, j) > 0 Then '
если число положительное,
k = k + 1: Mas(k) = Cells(i, j) '
записываем его в массив
Print #1, Mas(k) '
и выводим в файл Res.txt
End If
Next j
Next i

104
' Сортировка массива Mas по возрастанию
For i = 0 To k - 1 Step 1
For j = 1 To k - i Step 1
If Mas(j - 1) > Mas(j) Then
' если слева число больше чем справа, r = Mas(j)
' меняем их местами
Mas(j) = Mas(j - 1)
Mas(j - 1) = r
End If
Next j
Next i
' Вывод массива Mas в файл и на текущий рабочий лист
Print
#1, "Отсортированный массив положительных чисел"
Cells
(10, 1) = "Отсортированный массив положительных чисел"
For i = 0 To k Step 1
Print #1, Mas(i)
' вывод элемента массива в файл
Cells(i + 11, 1) = Mas(i)
' вывод элемента массива в столбец Excel
Next i
Close '
закрываем файл вывода
End Sub
3.
Сохраните рабочую книгу Excel в своей папке под тем же именем -
Lab2.
4.
Запустите макрос «Prog2» на выполнение. Вид экрана после вы- полнения программы приведен на рисунке 6.5. Содержание тексто- вого файла «Res.txt» приведено на рисунке 6.6.
Примечание: чтобы файл «Res.txt» был доступен для просмотра, необходимо закрыть книгу Excel с макросом, или в редакторе макро- сов выполнить команду «Reset» меню «Run» (можно использовать панель инструментов).

105
Рисунок 6.5 - Вид рабочего листа Excel после выполнения программы
Положительные числа первых пяти строк и первых трех столб- цов
5 5
5 1,5 8,5
Отсортированный массив положительных чисел
1,5 5
5 5
8,5
Рисунок 6.6 - Текстовый файл «Res.txt», полученный после выполнения программы Prog2 5.
В тестовых данных на рабочем листе замените положительные числа нулями и заново запустите макрос на выполнение. Вид экра- на после выполнения программы с такими числами приведен на рисунке 6.7.

106
Рисунок 6.7 - Вид рабочего листа Excel после выполнения программы, если в исходных данных нет положительных чисел
6.4
Задание к расчетно-графической работе №2
Подготовка к выполнению к расчетно-графической работы:
- ознакомиться с заданием для выполнения работы в Excel. Соста- вить тестовые данные для отладки программы и записать их в от- чет. Продумать структуру входных и выходных данных;
- написать макрос для задания своего варианта;
- выполнить расчетно-графическую работу на компьютере, соблю- дая последовательность действий, аналогичную выполнению лабо- раторной работы 2. Файлу Excel дать имя «RGR_2», макрос с про- граммой сохранить в файле «RGR_Prog_2»;
- в отчет перенести вид экрана с тестовыми данными и результатом работы программы.
Варианты заданий 1-15.
Подготовить в соответствии с вариантом задания таблицу со списком наименований (фамилий) и значений необходимых полей.
Подготовить макрос, в котором для указанного (среди его операто-

107 ров) наименования (фамилии) вычислить и записать в ячейки значе- ния требуемых параметров.
1.
В списке (с колонками: наименование товара, число упаковок, вес упаковки) товаров, поступивших на склад за месяц, по наимено- ванию указанного товара определить: общее число упаковок и общий вес данного товара на складе.
2.
В таблице заказов для продукта, заданного своим наименованием, определить: общую потребность (объём требуемого продукта) и число заказов (заявок) на данный продукт.
3.
В таблице-распечатке телефонных вызовов по номеру абонента определить: число его исходящих звонков, общую продолжитель- ность разговоров и среднюю продолжительность разговора.
4.
В библиотечном списке методической литературы по названию учебной дисциплины определить: число методичек и средний объем (в страницах) одной методички по указанной дисциплине.
5.
В таблице с аттестационными оценками школьников по пройден- ным предметам определить: среднюю оценку выбранного школь- ника и число предметов с аттестацией на «5».
6.
В таблице с аттестационными оценками школьников по пройден- ным предметам определить: среднюю оценку по выбранному предмету и число отличником по данному предмету.
7.
В списке поставок (за неделю) товаров со склада в магазины опре- делить: число магазинов, в которые поставляется указанный то- вар, а также общий объем поставляемого товара.
8.
По списку повторяющихся фамилий сотрудников и часов сверх- урочной работы (в указанные дни) определить количество дней и общую сумму часов сверхурочной работы сотрудника с фамилией, указанной в этом списке.

108 9.
Для указанной фамилии в месячной распечатке (по дням) сотруд- ников, опоздавших на работу, определить число дней с опозда- ниями и общее время опозданий.
10.
В списке с названиями фирм и количеств легковых автомобилей этих фирм, проехавших по участку дороги в каждый из несколь- ких дней недели определить: процент всех автомобилей выбран- ной фирмы от общего числа автомобилей.
11.
В списке (с колонками: наименование товара, вес, сорт) товаров, поступивших на склад за месяц, по наименованию указанного то- вара данного сорта, определить: общий вес указанного товара данного сорта (1-го или 2-го).
12.
Для указанной фамилии в списке (по дням месяца) водителей ав- топредприятия, оштрафованных ГИБДД, определить: общее число нарушений правил и общую сумму штрафов.
13.
Для указанной фамилии в списке спонсорских пожертвований (за год) определить: число пожертвований и среднюю сумму одного пожертвования.
14.
Для указанной фамилии в распечатке (по дням) вложений (вкла- дов) на общий банковский счёт определить: общую сумму вкладов и среднюю сумму одного вклада.
15.
В списке (по матчам сезона) хоккеистов, имеющих удаления в матчах, для выбранного хоккеиста определить: общее время уда- лений и общее число матчей с удалениями.
Варианты заданий 16-30.
16.
Составить программу для определения суммы минимального по- ложительного и максимального отрицательного чисел, располо-

109 женных в первых десяти строках и первых трех столбцах рабочего листа Excel.
17.
Составить программу для определения суммы максимального и минимального элементов массива. Числа массива расположены в первых десяти строках и первых трех столбцах рабочего листа Ex- cel.
18.
Определить число элементов массива, превышающих среднее арифметическое его элементов. Числа массива расположены в первых десяти строках и первых трех столбцах рабочего листа Ex- cel.
19.
Определить среднее арифметическое элементов массива, имею- щих четное значение. Числа массива расположены в первых деся- ти строках и первых трех столбцах рабочего листа Excel.
20.
Определить среднее арифметическое элементов массива, имею- щих нечетное значение. Числа массива расположены в первых де- сяти строках и первых трех столбцах рабочего листа Excel.
21.
Определить значение индекса минимального положительного элемента массива. Числа массива расположены в первых десяти строках и первых трех столбцах рабочего листа Excel.
22.
Определить количество четных элементов массива. Числа массива расположены в первых десяти строках и первых трех столбцах ра- бочего листа Excel.
23.
Поменять местами элементы массива, имеющие минимальное и максимальное значения. Числа массива расположены в первых де- сяти строках и первых трех столбцах рабочего листа Excel.

110 24.
Определить индексы минимального положительного и макси- мального отрицательного элементов массива. Числа массива рас- положены в первых десяти строках и первых трех столбцах рабо- чего листа Excel.
25.
Определить число и сумму элементов массива, имеющих четное значе- ние. Числа массива расположены в первых десяти строках и пер- вых трех столбцах рабочего листа Excel.
26.
Определить разность минимального и максимального положи- тельного элементов массива. Числа массива расположены в пер- вых десяти строках и первых трех столбцах рабочего листа Excel.
27.
В массиве определить сумму индексов максимального и мини- мального элементов. Числа массива расположены в первых десяти строках и первых трех столбцах рабочего листа Excel.
28.
Поменять местами минимальный положительный и максималь- ный отрицательный элементы массива. Числа массива расположе- ны в первых десяти строках и первых трех столбцах рабочего лис- та Excel.
29.
Определить сумму элементов массива, которые имеют дробную часть меньше 0,5. Числа массива расположены в первых десяти строках и первых трех столбцах рабочего листа Excel.
30.
Определить среднее арифметическое элементов массива, имею- щих положительные значения. Числа массива расположены в пер- вых десяти строках и первых трех столбцах рабочего листа Excel.

111
ЛИТЕРАТУРА
1.
Информатика. Базовый курс: учеб. пособие для студентов втузов /
[С. В. Симонович. Г. А. Евсеев. В. И. Мураховский. С. И. Бобров- ский] ; под ред. С. В. Симоновича. - Москва; Санкт-Петербург;
Нижний Новгород [и др.]: Питер. 2010. - 640 с.
2.
Калядин В.И., Макаров А.И. Основы работы на персональном ком- пьютере: сборник лабораторных работ. - М.;МГТУ «МАМИ», 2010.
-
85с.. -58с.
3.
Калядин В.И. Решение задач в Excel на МВ: учебное пособие. -
М.;МГТУ «МАМИ», 201. - 58с.
4.
Кузьменко В.Г. VBA эффективное использование. М. БИНОМ
2009. -
617с.
5.
Антомони В.И., Архипов В.Н., Любин А.Н., Тихомиров В.Н. ПРО-
ГРАММИРОВАНИЕ НА VBA В MICROSOFT OFFICE: сборник лабораторных работ по дисциплине «Информатика» для студентов всех специальностей. - М.:МГТУ «МАМИ». 2011, 160 с.
6.
Антомони В.И., Архипов В.Н., Любин А.Н., Тихомиров В.Н. Осно- вы программирование на VBA в Microsoft Office: учебное пособие по дисциплинам «Информатика» и «Информационные технологии» для студентов всех направлений и специальностей. - М.:МГТУ
«МАМИ». 2011. - 142 с.
7.
Любин А.Н. Создание пользовательских форм в Visual Basic for
Application
: учебное пособие по дисциплинам «Информатика» и
«Информационные технологии» для студентов всех направлений и специальностей. - М.:МГТУ «МАМИ». 2012. - 60 с.
8.
Лобанов А.С., Туманова М.Б. Решение задач на языке Visual Basic for Application
: учебное пособие. - М.;МГТУ «МАМИ», 2009. - 90с.
9.
Лобанов А.С., Туманова М.Б. Решение задач на языке Visual Basic for Applications
: учебное пособие. М. МГТУ «МАМИ», 2010.
10.
Туманова М.Б. Применение Excel в решении специализирован- ных задач: учебное пособие. М. МГТУ «МАМИ», 2010.

112
Приложение А
Описание интегрированной среды разработки VBA
Разрабатываемое на языке Visual Basic for Application приложе- ние называется проектом. Проект включает в себя не только форму с размещенными на ней управляющими элементами, но и программные модули событийных процедур, которые описывают поведение объек- тов приложения и взаимодействие объектов между собой.
Вход в интегрированную среду разработки (IDE) VBA осущест- вляется в приложении Excel командой Вид Макрос, либо «горячей» клавишей [Alt]+[F11]. Редактор VBA имеет вид, представленный на рисунке А.1
Рисунок А.1 Окно интегрированной среды разработки VBA
Окно IDE VBA имеет определенное сходство с другими прило- жениями Windows. Есть заголовок, в котором, помимо имени прило- жения, видно название открытого документа, строка главного меню, строка панели инструментов (Toolbar).
Область редактора исходного кода
Окно отладки (Ctrl_G)
Окно проекта

113
Под панелью инструментов с левой стороны - специальное окно, называемое Project Explorer – Проводник Проекта (на рисунке его за- головок Project-VBAProject).
Справа – большая область, где будет происходить основная ра- бота – окно кода.
Окно проекта
В окне проекта (VBAProject) представлена иерархическая струк- тура файлов форм и модулей текущего проекта.
В проекте автоматически создается модуль для каждого рабоче- го листа и для всей книги. Кроме того, модули создаются для каждой пользовательской формы, макросов и классов. По своему предназна- чению модули делятся на два типа: модули объектов и стандартные.
К стандартным модулям относятся те, которые содержат макросы.
Такие модули добавляются в проект командой Вставка, Модуль
(Insert, Module). К модулям объектов относятся модули, связанные с рабочей книгой, рабочими листами, формами, и модули класса.
Формы создаются командой Вставка, UserForm (Insert,
UserForm), а модули класса — командой Вставка, Модуль класса
(Insert, Class
Module). По мере создания, добавления и удаления фай- лов из проекта эти изменения отображаются в окне проекта. Отме- тим, что удаление файла из окна проекта производится выбором значка файла с последующим выполнением команды Файл, Удалить
(File, Delete).
В окне проекта выводится проект всех открытых рабочих книг.
Это позволяет легко копировать формы и коды из одного проекта в другой, что убыстряет процесс создания новых приложений.
Главное меню
Главное меню, как и во всех приложениях Microsoft, представ- ляет собой линейку раскрывающихся меню. Оно содержит следую- щие основные команды: File (Файл), Edit (Правка), View (Вид),

114
Format (Формат), Debug (Отладка), Run (Запуск), Tools (Сервис), Add-
Ins (Надстройки), Window (Окно), Help (Справка).
Наиболее часто используемые команды инструментальной сре- ды VBA отображены в виде кнопок со значками на панели инстру- ментов. Основные команды главного меню.
1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта