Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Інф_сист_методичка.doc
Скачиваний:
12
Добавлен:
20.02.2016
Размер:
585.22 Кб
Скачать

Лабораторна робота №6

Тема: Створення функцій користувача.

Мета роботи: Ознайомитися з поняттям функції користувача, навчитися будувати власні функції

Вони створюються в стандартному модулі редактора VBA. Для входу в редактор треба вибрати команду: Сервіс\Макрос\Редактор Visual Basic або натиснути комбінацію клавіш Alt+F11. У результаті ви потрапляєте в середовище розробки додатків – редактор Visual Basic. Воно має стандартний вигляд для Windows – додатків: рядок меню, панель інструментів (Standart) і два вікна Projekt – VBAProjekt й Propetiers.

Нас у першу чергу цікавить стандартний модуль. Для того щоб його додати в проект, треба набрати команду Insert Module.

Структура коду функції користувача:

Function name (arglist)

[statements]

End Function

де name – ім'я функції користувача;

arglist – список аргументів;

statements – послідовність інструкцій, що виконуються при знаходженні значення функції.

У сукупності вони утворять, так назване, тіло функції. Важлива особливість функції користувача полягає в тому, що носієм значення, що повертає, є її ім'я, тобто ідентифікатор name. Тому серед інструкцій повинна бути присутня, принаймні одна, котра є оператором присвоювання імені функції значення якого-небудь вираження.

Приклад 1. Побудуємо функцію, що повертає вартість товару по його вартості без ПДВ і значенню ставки ПДВ. Наберемо наступний код:

Function Вартість (Вартість_без_ПДВ, ПДВ)

Вартість=Вартість_без_ПДВ*(1+ПДВ/100)

End Function

При правильному наборі першого рядка й натисканні клавіші Введення остання інструкція End Function створюється редактором VBA автоматично. Створена функція за замовчуванням попадає в розділ Визначені користувачем списку Категорія вікна Майстер функцій.

Знайдемо вартість товару з урахуванням ПДВ, якщо його вартість без обліку ПДВ дорівнює 3000 грн., а ПДВ дорівнює 20%.

Для цього:

  1. В комірку A1 ввести текст «Вартість без ПДВ».

  2. В комірку B1 ввести текст «ПДВ».

  3. В комірку C1 ввести текст «Вартість».

  4. В комірку A2 ввести число – 3000.

  5. В комірку B2 ввести – 20.

  6. Виділити комірку C2.

  7. Виконати команду Вставка\Функція.

  8. У першому вікні Майстра функцій у списку Категорія знайти значення Визначені користувачем, а потім у списку Функція вибрати Вартість і натиснути кнопку Ok.

  9. У другому вікні Майстра функцій у поле Вартість_без_ПДВ ввести посилання на комірку A2, а в поле ПДВ – посилання на комірку B2, Ok.

Приклад 2. Створити таблицю і функцію користувача, що нараховує премії за підсумками роботи мережі N магазинів з липня по листопад за такими правилами:

– Якщо продукції продано менше чим на 6500 грн. , то комісійні складають 1%;

– За перше місце автоматично нараховується 5%, за друге – 2,5%;

– За трете – 1,25%.

Прибуток кожного магазину за липень, серпень, вересень, жовтень і листопад задається довільно. Потім підсумовується прибуток для кожного магазину за вказаний період з липня по листопад.

Для обчислення загальних комісійних, а також комісійних за перше і друге місця використовується функція ЕСЛИ (...). Якщо сумарна виручка не менше контрольної, то сумарна виручка множиться на загальний відсоток і ділиться на 100.

Для обчислення премії за перше місце за допомогою функції МАКС (МАССИВ ЗНАЧЕНИЙ СУММАРНОЙ ВЫРУЧКИ) знаходиться максимальне значення сумарної виручки, множиться на відсоток за перше місце і ділиться на 100.

Премія за друге місце обчислюється за допомогою функції НАЙБОЛЬШИЙ (МАССИВ ЗНАЧЕНИЙ СУММАРНОЙ ВЫРУЧКИ; 2), яка дозволяє визначити друге найбільше значення сумарної виручки. Сумарна премія є сума всіх комісійних. Початкові дані наведені в таблиці 6.1.

Таблиця 6.1 – Вихідні дані

Мага зин

Виручка за

липень

Виручка за серпень

Виручка

за вересень

Виручка за жовтень

Виручка за листопад

Сумарна виручка

Премія

1

2 957

46 342

62 977

68 739

44 884

=СУММ(C4:G4)

=премія(H4;C12;D12;E12;F12;G12;J4)

2

21 204

3 923

8 059

4 806

47 516

=СУММ(C5:G5)

=премія(H5;C12;D12;E12;F12;G12;J5)

3

67 291

6 715

50 499

7 009

5 855

=СУММ(C6:G6)

=премія(H6;C12;D12;E12;F12;G12;J6)

4

82 086

50 638

79 047

16 210

44 941

=СУММ(C7:G7)

=премія(H7;C12;D12;E12;F12;G12;J7)

5

5 664

3 099

30 918

5 243

6 676

=СУММ(C8:G8)

=премія(H8;C12;D12;E12;F12;G12;J8)

Текст функції:

Private Function премия(prod As Double, C As Double, i As Double, j1 As Double, j2 As Double, j3 As Double, mesto As Double) As Double

Dim temp As Double

If mesto = 1 Then

temp = prod * j1 / 100

End If

If mesto = 2 Then

temp = prod * j2 / 100

End If

If mesto = 3 Then

temp = prod * j3 / 100

End If

If mesto > 3 Then

temp = 0

End If

If C <= prod Then

Премия = prod * i / 100 + temp

Else

Премия = 0 + temp

End If

End Function

Результати обчислення наведені в таблиці 6.2.

Таблиця 6.2 – Результати обчислення

Місяць роботи магазинів

Всього

Премія

Місце

Липень

Серпень

Вересень

Жовтень

Листопад

1

2 957

46 342р.

62 977

68 739

44 884

=СУММ(C4:G4)

12 424

2

2

21 204

3 923

8 059

4 806

47 516

=СУММ(C5:G5)

2 565

4

3

67 291

6 715

50 499

7 009

5 855

=СУММ(C6:G6)

5 838

3

4

82 086

50 638

79 047

16 210

44 941

=СУММ(C7:G7)

21 834

1

5

5 664

3 099

30 918

5 243

6 676

=СУММ(C8:G8)

0

5