- •Кафедра учета, анализа и аудита
- •«Компьютерные системы и сети»
- •Часть 2. Программирование на vba
- •Введение
- •Тема № 1 создание пользовательских функций
- •Тема № 2 пользовательские процедуры
- •Тема 2.1 Ввод записей в базу данных
- •Тема 2.2 Поиск уникальной записи по указанным критериям
- •Тема 2.3 Расчет итоговых показателей по всем и группе записей.
- •Тема 2.4 Поиск записей согласно критериям.
- •Тема № 3 отладка программ и обработка ошибок
- •Тема № 4 проектирование пользовательских форм для ввода-вывода информации
- •Тема 4.1 Использование формы в процедуре Auto_Open
- •Тема 4.2 Ввод новой записи в форме, обработка записей
- •Тема № 5 проектирование системного меню и справочной информации
- •Приложение
- •Оглавление
Тема 2.3 Расчет итоговых показателей по всем и группе записей.
В представленной ниже процедуре осуществляется расчет суммарного оклада всех сотрудников предприятия и оклад сотрудников, работающих на определенной должности. Результат выводится на второй лист, не являющийся текущим рабочим листом.
Subсумма()
i = 2
s = 0: s1 = 0
dol=InputBox("Введите должность", "Ввод данных")
While Cells(i, 1) <> Empty
s = s + Cells(i, 3)
If Cells(i, 2) = dol Then s1 = s1 + Cells(i, 3)
i = i + 1
Wend
Sheets(“Лист2”).Cells(1, 5) = "Результаты"
Sheets(“Лист2”).Cells(2, 5) = "Итого = " & s
Sheets(“Лист2”).Cells(3, 5) = "Итого по должности " + dol + "= " & s1
End Sub
Тема 2.4 Поиск записей согласно критериям.
Осуществляется поиск записей по вводимым с клавиатуры критериям. Интересующие поля найденных записей копируются на другой лист с расчетов итоговых показателей. В представленной ниже процедуре осуществляется вывод на второй лист фамилий сотрудников, работающих на интересующей должности, и их численность.
Sub поиск_копир()
i = 1: i1 = 2
dol=InputBox("Введите должность", “Ввод”)
Sheets("Лист2").Activate
Columns("A:A").Select
Selection.ClearContents
Range("A1").Select
Cells(1, 1) = "Сотрудники, работающие на должности " +dol
While Sheets("Лист1").Cells(i, 1) <> Empty
If Sheets("Лист1").Cells(i, 2) = dol Then
Cells(i1, 1) = Sheets("Лист").Cells(i, 1)
i1 = i1 + 1
End If
i = i + 1
Wend
Cells(i1, 1) = "Всего сотрудников - " &i1 - 2
EndSub
Задание № 4. Создать процедуру по вводу новой записи согласно заданию табл. 5. Процедура должна содержать команды форматирования новой строки (добавление рамок, изменение типа , размера шрифта и цвета шрифта, выравнивание в пределах ячейки или таблицы), записанные с помощью макрорекордера.
Таблица 5
Особенности ввода записи
№ |
Дополнительное требование |
1 |
Символьное поле не может содержать точку и запятую |
2 |
Разница между двумя датами записи не должна превышать заранее известное значение |
3 |
Проверка даты на диапазон дат |
4 |
Дата не должна приходиться на субботу и воскресенье |
5 |
Проверка правильности ввода логического поля |
6 |
Символьное поле может принимать одно из заранее известных значений |
7 |
Длина символьного поля не должна превышать заранее установленной длины |
8 |
Проверка числового поля на возможный диапазон значений |
9 |
Числовое поле может принимать только целые значения |
10 |
Символьное поле не может содержать пробелы |
Задание № 5. Создать процедуру по обработке записей (табл. 6).
Таблица 6
Обработка записей в таблице
№ |
Задание |
1 |
Определить суммарное и среднее значение числового поля записей, отобранных по символьному и логическому полю. |
2 |
Осуществить поиск записей по двум символьным полям. Найденные записи отобразить на втором листе. |
3 |
Определить среднее значение поля даты для записей, отобранных по символьному полю. |
4 |
Осуществить поиск уникальной записи по символьному, числовому полю и дате. Найденную запись отобразить на втором листе. |
5 |
Определить суммарное и среднее значение числового поля записей, число записей, отобранных по двум символьным полям. В случае отрицательного результата – вывести сообщение об этом. |
6 |
Определить количество записей, в которых числовое поле принадлежит определенному диапазону чисел. |
7 |
Определить число записей, найденных по числовому полю и дате. Результат отразить на текущем листе. |
8 |
Осуществить поиск записей по числовому и логическому полю. Предусмотреть проверку правильности ввода логического поля. |
9 |
Осуществить поиск уникальной записи по символьному, числовому и логическому полю. В случае отрицательного результата – вывести сообщение об этом |
10 |
Осуществить поиск уникальной записи по символьному, числовому полю и дате. Найденную запись удалить. |
Задание № 6. Создать процедуру, перемещающую последнюю введенную запись на место первой записи.
Задачи для самостоятельной работы приведены в табл. 7.
Таблица 7
Создание процедур
Вариант |
Задание |
1 |
Дано натуральное число. Определить, является ли сумма минимальной и максимальной цифры четным числом |
2 |
Дано натуральное число, в котором две известные цифры встречаются по одному разу. Определить, какая из этих цифр расположена левее |
3 |
Дан одномерный массив. Определить, есть в нем хотя бы пара одинаковых соседних чисел |
4 |
Дан одномерный массив натуральных чисел. Отсортировать его в порядке возрастания |
5 |
Дан одномерный массив натуральных чисел. Определить, равны ли все числа между собой |
6 |
Найти все целые числа из вводимого диапазона, у которых только пять делителей |
7 |
Найти из указанного диапазона все простые числа |
8 |
В столбцах А и В (n строк) введены натуральные числа. Заполнить столбец С числами из столбцов А и В в порядке их увеличения |
9 |
На рабочем листе заполнена натуральными числами квадратная область (n на n). Определить, является ли она магическим квадратом |
10 |
Заполнить n- строк (n<50) столбца А случайными числами из диапазона [1..100] в порядке их возрастания |
11 |
В столбце А (n строк, n - четное) введены натуральные числа. Поменять местами числа, расположенные в четных и нечетных строках |
12 |
В столбце А (n строк) введены вещественные числа. Определить, сколько раз происходит смена знака |
13 |
Определить, гласных или согласных букв больше во введенном с клавиатуры символьном выражении |
14 |
В столбце А (n строк) введены символьные строки (предложения), отдельные слова отделяются друг от друга несколькими пробелами. В столбце В отразить предложения без лишних пробелов |
15 |
Имеются два предложения. Отразить в столбце С слова, встречающиеся в обоих предложениях |
16 |
В символьном выражении (слове) имеются только две одинаковые буква. Найти и вывести их |
17 |
Дана строка символов. Удалить из нее каждое слово нечетной длины. Слова разделяются одним пробелом |
18 |
Дана строка символов. Удалить из нее каждое слово нечетной длины. Слова разделяются группой пробелов |
19 |
Дана строка символов. Удалить из нее все цифры, если они имеются |
20 |
Дано предложение. Записать слова в нем в обратном порядке. Слова разделяются одним пробелом |