Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Тема: Створення функцій користувача.
Мета роботи: Ознайомитися з поняттям функції користувача, навчитися будувати власні функції
Вони створюються в стандартному модулі редактора 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 – Вихідні дані
Мага зин | Виручка за липень | Виручка за серпень | Виручка за вересень | Виручка за жовтень | Виручка за листопад | Сумарна виручка | Премія |
2 957 | 46 342 | 62 977 | 68 739 | 44 884 | =СУММ(C4:G4) | =премія(H4;C12;D12;E12;F12;G12;J4) | |
21 204 | 3 923 | 8 059 | 4 806 | 47 516 | =СУММ(C5:G5) | =премія(H5;C12;D12;E12;F12;G12;J5) | |
67 291 | 6 715 | 50 499 | 7 009 | 5 855 | =СУММ(C6:G6) | =премія(H6;C12;D12;E12;F12;G12;J6) | |
82 086 | 50 638 | 79 047 | 16 210 | 44 941 | =СУММ(C7:G7) | =премія(H7;C12;D12;E12;F12;G12;J7) | |
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 – Результати обчислення
Дата публикования: 2015-04-10; Прочитано: 253 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!