- •Кафедра учета, анализа и аудита
- •«Компьютерные системы и сети»
- •Часть 2. Программирование на vba
- •Введение
- •Тема № 1 создание пользовательских функций
- •Тема № 2 пользовательские процедуры
- •Тема 2.1 Ввод записей в базу данных
- •Тема 2.2 Поиск уникальной записи по указанным критериям
- •Тема 2.3 Расчет итоговых показателей по всем и группе записей.
- •Тема 2.4 Поиск записей согласно критериям.
- •Тема № 3 отладка программ и обработка ошибок
- •Тема № 4 проектирование пользовательских форм для ввода-вывода информации
- •Тема 4.1 Использование формы в процедуре Auto_Open
- •Тема 4.2 Ввод новой записи в форме, обработка записей
- •Тема № 5 проектирование системного меню и справочной информации
- •Приложение
- •Оглавление
Тема № 1 создание пользовательских функций
Пользовательская функция – набор инструкций, предназначенных чаще всего для расчета, анализа и преобразования данных. Функция всегда возвращает результат. Вызов функции можно использовать на рабочем листе, обращаться к ней по имени из других функций и процедур.
По умолчанию функцию можно использовать в пределах данной книги, чтобы вызвать ее из других рабочих книг, надо установить ссылку на книгу с данной функцией.
Functionимя([ аргументы ])
инструкции
имя=<выражение>
EndSub
Пользовательские функции не могут изменять значения свойств или выполнять методы. Следовательно, в них нельзя выполнить следующие операции:
задать свойство объекта;
вставить, удалить или отформатировать ячейки;
задать или изменить содержимое ячейки;
переименовать, удалить, добавить рабочий лист;
создать, открыть, удалить рабочую книгу и пр.
Пример 1. Создать функцию, определяющую сумму или разность двух чисел по желанию пользователя
Function выбор ( a, b as Currency)
q=MsgBox (“Сложить ?” ; vbYesNo ; “Ваше решение ?” )
If q = vbYes Then
vibor = a + b
else
vibor = a - b
End If
EndFunction
Пример 2. Определить, возможно ли одну символьную строку сформировать из символов другой символьной строки.
Function проверка (a, s As String)
For i = 1 To Len (a)
For j = 1 To Len (s)
If Mid (a, i, 1) = Mid (s, j, 1) Then fl = fl + 1
Next j
Next i
Iffl>=Len(a)Thenпроверка = "Возможно"elseпроверка = "Нельзя"
End Function
Задание № 1. Создать пользовательскую функцию по обработке символьных строк согласно номеру варианта (табл. 1).
Таблица 1
Пользовательские функции по обработке символьных строк
№ |
Задача |
1 |
Удвоить каждый символ в строке |
2 |
Переставить символы попарно |
3 |
Прописные буквы заменить на строчные, строчные на прописные |
4 |
Заменить каждый четный символ в символьном выражении на прописной |
5 |
Заменить каждый нечетный символ на строчный, после него добавить пробел |
6 |
Из символьного выражения сделать обратное с пробелами между символами |
7 |
В символьной строке заменить символы на соответствующие им ASCII коды, разделенные пробелом |
8 |
Преобразовать символьную строку в строку, в которой после каждого символа стоят две звездочки |
9 |
Определить число вхождений символа в символьную строку без учета регистра. |
10 |
Поменять местами левую и правую части символьного выражения (например «зачет» преобразуется в «етчза») |
Задание № 2. Создать пользовательскую функцию, рассчитывающую показатель, представленный в табл. 2.
Таблица 2
Пользовательские функции
№ |
Задача |
1 |
Комиссионные от продаж, вычисляемые как процент от суммы продаж и премии, зависящей от объема продаж |
2 |
Комиссионные от продаж, вычисляемые как процент от суммы продаж и фиксированной премии, начисляемой по желанию пользователя |
3 |
Стоимость услуг за телефонные переговоры (фиксированная сумма за установленное время и дополнительная за каждую минуту превышения установленного предельного времени) |
4 |
Оплату услуг за телефон с начислением пени за каждый просроченный день |
5 |
Оплату услуг за телефон и возможностью начисления пени |
6 |
Стоимость приобретенного товара при наличии постоянной скидки |
7 |
Стоимость приобретенного товара с возможностью предоставления скидки |
8 |
Стоимость приобретенного товара с возможностью предоставления различных скидок |
9 |
Сумма ежемесячных выплат за приобретенный в кредит товар по принципу первоначальный взнос 10% от стоимости товара, срок 10 месяцев, процент за весь срок 10% годовых |
Задание №3. Сформировать таблицу и ввести в нее три записи. Количество полей и их тип выбираются с учетом номера варианта (табл. 3). Создать функцию, определяющую суммарное значение первого числового поля записей, в которых первое символьное поле удовлетворяет заданному условию.
Таблица 3
Типы полей и их количество
№ |
Количество полей соответствующего типа | |||
Символьное |
Числовое |
Дата |
Логическое | |
1 |
2 |
2 |
1 |
2 |
2 |
2 |
2 |
2 |
1 |
3 |
2 |
1 |
1 |
2 |
4 |
2 |
1 |
2 |
1 |
5 |
2 |
3 |
1 |
1 |
6 |
3 |
1 |
1 |
2 |
7 |
3 |
2 |
1 |
1 |
8 |
3 |
1 |
2 |
1 |
9 |
4 |
1 |
1 |
1 |
10 |
3 |
3 |
1 |
1 |
Задачи для самостоятельной работы приведены в табл. 4. В них требуется создать пользовательскую функцию по обработке числовой информации. При решении не переводить числовую информацию в символьную и, следовательно, не применять стандартные функции по обработке символьных строк.
Таблица 4
Создание пользовательских функций для обработки числовой информации.
№ |
Задача |
1 |
Определить, делится ли натуральное трехзначное число на три без остатка по признаку делимости |
2 |
Перевести натуральное трехзначное число, представленное в определенной системе счисления, в десятичную систему счисления. |
3 |
Дано натуральное двухзначное число. Определить количество натуральных делителей данного числа |
4 |
Определить, делится ли натуральное двухзначное число без остатка на сумму своих цифр. |
5 |
Дано натуральное четырехзначное число. Определить, является ли оно числом Армстронга. Числом Армстронга считается число, равное сумме степеней всех цифр. Степень определяется числом цифр в числе. |
6 |
Дано натуральное четырехзначное число. Определить, какая цифра больше, первая или последняя. |
7 |
Дано натуральное трехзначное число, цифры в котором не повторяются. Переставить цифры числа в порядке их увеличения |
8 |
Определить, сколько раз в натуральном четырехзначном числе встречается данная цифра |
9 |
Дано натуральное трехзначное число. Верно ли, что произведение его цифр больше пятидесяти |
10 |
Дано натуральное трехзначное число. Верно ли, что сумма его цифр – четное число |
11 |
Даны два натуральных числа (трехзначное и двузначное). Верно ли, что сумма цифр первого числа равна второму числу |
12 |
Дано натуральное трехзначное число. Определить разность между максимальной и минимальной цифрой |
13 |
Дано натуральное четырехзначное число. Определить, какая цифра расположена левее – максимальная или минимальная |
14 |
Дано натуральное четырехзначное число. Определить, сколько раз в нем встречается максимальная цифра |
15 |
Дано натуральное четырехзначное число. Определить сумму двух его максимальных цифр |
16 |
Определить, есть ли в натуральном четырехзначном числе хотя бы две одинаковые цифры. |
17 |
Дано натуральное четырехзначное число. Определить сумму трех минимальных цифр |
18 |
Дано натуральное четырехзначное число. Определить, что больше – произведение цифр, стоящих на четных или нечетных позициях |
19 |
Дано натуральное четырехзначное число. Определить сумму двух последних цифр |
20 |
Определить количество чисел из указанного диапазона двузначных чисел, в которых имеется цифра семь |
21 |
Дано натуральное четырехзначное число. Определить порядковый номер максимальной цифры, считая с начала числа |
22 |
Дано натуральное четырехзначное число. Записать его наоборот. |
23 |
Дано натуральное двухзначное число. Определить наибольший делитель, отличный от самого числа |
24 |
Даны два натуральных двузначных числа. Определить количество общих делителей |
25 |
Определить, может ли существовать данное натуральное число в представленной системе счисления. |
26 |
Найти сумму всех цифр натурального числа |
27 |
Определить количество неповторяющихся цифр в натуральном числе |
28 |
Дано натуральное число. Определить, является ли оно числом Армстронга. Числом Армстронга считается число, равное сумме степеней всех цифр. Степень определяется числом цифр в числе |
29 |
Дано натуральное число. Определить, есть ли в нем хотя бы две одинаковые цифры |
30 |
Определить, есть ли в натуральном числе хотя бы одна цифра ноль |