- •7.050105 “Банківська справа”, 7.050104 “Фінанси”
- •Донецьк 2005
- •1 Створення програм у середовищі Visual Basic 6.0. Основні поняття - об'єкт, властивість, подія.
- •1.1 Візуальне створення програми
- •1.2 Створення вихідного коду
- •1.3 Контрольні запитання
- •1.4 Практичні завдання
- •1.5 Тест
- •2 Основні оператори мови
- •2.1 Організація розгалужених обчислювальних процесів
- •2.1.1 Умовний оператор If
- •If умова Then
- •2.1.2 Оператор варіанти Select Case
- •2.2 Організація циклічних обчислювальних процесів
- •2.2.1 Оператор циклу For . . . Next
- •Частина початкового рядка циклу Step n може бути пропущена, коли крок зміни перемінної циклу дорівнює одиниці. Приклад використання циклу For … Next
- •2.2.2 Оператор циклу Do While . . . Loop
- •2.2.3 Оператор циклу Do. . . Loop While
- •2.3 Контрольні запитання
- •2.4 Практичні завдання
- •2.5 Тест
- •3 Використання елементів управління в програмах. Робота з формами. Поняття методу
- •3.1 Елементи управління - смуги прокручування, перемикачі, прапорці, групи, списки, що розчиняються
- •3.2 Робота з формами. Поняття методу
- •Приклад програми
- •3.2 Контрольні запитання
- •3.4 Практичні завдання
- •3.5 Тест
- •4 Управління програмою за допомогою меню. Робота з масивами елементів управління, змінних
- •4.1 Управління програмою за допомогою меню
- •4.2 Робота з масивами елементів управління, змінних
- •4.3 Контрольні запитання
- •4.4 Практичні завдання
- •Картка кількісного обліку товарів
- •Аналіз виконання плану товарообігу за структурою
- •Відомість розрахунків покупців по кредитах
- •Відомість результатів інвентаризації товарів
- •Рахунок-фактура
- •Відомості про вибірку фондів по плодоовочевим культурам за декаду
- •Відомість залишків основних фондів
- •Реєстр листків по тимчасовій непрацездатності
- •Відомість відрахувань із зарплати
- •Меню на відпустку харчування співробітникам столової
- •Аналіз забезпеченості кадрами
- •4.5 Тест
- •5 Розробка програм з використанням підпрограм – процедур і функцій, вікон повідомлень
- •5.1 Підпрограми – процедури і функції
- •5.2 Вікна повідомлень
- •Коди сполучень кнопок у вікні повідомлення
- •Коди значків у вікні повідомлення
- •Приклад програми з використанням підпрограм, вікон повідомлень
- •5.3 Контрольні запитання
- •5.4 Практичні завдання
- •5.5 Тест
- •6 Робота з файлами
- •6.1 Файли довільного доступу
- •6.2 Файли послідовного доступу
- •6.3 Бінарні файли
- •Приклад виконання програми роботи з файлом
- •5.4 Контрольні запитання
- •5.5 Практичні завдання Завдання №1
- •Завдання №2
- •Завдання №3
- •7 Використання Visual Basic for Application у Microsoft Excel
- •7.1 Основні поняття
- •7.2 Редактор vba
- •7.3 Створення функцій користувача
- •7.4 Автоматизація розрахунків на робочому листі
- •7.5 Робота з формами у середовищі vba
- •7.6 Контрольні запитання
- •7.7 Практичні завдання
- •7.8 Тест
- •Література
- •7.050105 “Банківська справа”, 7.050104 “Фінанси”
7.5 Робота з формами у середовищі vba
Розглянемо приклад створення форми для розрахунку показників по документу “Видаткова накладна”. Припустімо, що на підприємстві часто формуються видаткові накладні, у яких містяться відомості про постачальника, одержувача товарів, номер і дату документа, вводяться найменування товарів, одиниці виміру для кожного товару, ціна товару без податку на додану вартість (ПДВ) і без знижки. Попередньо підготовлений документ може виглядати так:
Для прискорення створення заголовку та шапки документу доречно підготувати макрос, за допомогою якого на будь-якому листі книги можна швидко приступити до створення предметної частини видаткової накладної.
Менеджерами підприємства можуть надаватися знижки покупцям – 1% або 2% для постійних покупців. У залежності від наданої знижки розраховується ціна кожного товару зі знижкою, суми реалізації товарів, підсумкові значення по документу.
Для початку розрахунку користувач може натиснути на відповідному інструменті на панелі інструментів після чого з’явиться така форма:
Після вибору виду знижки і натискання на кнопці “Розрахунок” буде виконано відповідну процедуру для розрахунку підсумків по інформаційних рядках і документу в цілому. Після виконання процедури, яка пов’язана з командною кнопкою “Розрахунок” таблиця буде виглядати так:
Для реалізації поставленої задачі потрібно у вікні редактору VBA створити нову форму за допомогою команди меню Insert – UserForm. У результаті виконання команди до дерева основних об’єктів проекту буде додано гілку Forms, до якої належить об’єкт UserForm1 – вікно нової форми користувача. Коли вікно форми активно за допомогою панелі елементів можна створювати об’єкти у формі та визначати їх властивості з використанням вікна властивостей Properties. Для розробки форми, за допомогою якої можна визначити розмір та здійснити розрахунок показників документу “Видаткова накладна”, потрібно створити об’єкти і визначити їх властивості за описом:
Об’єкт |
Властивість |
|
Найменування |
Значення |
|
Форма UserForm1 |
Name |
frmRoz |
Caption |
Розрахунок показників документу |
|
BackColor |
білий |
|
Font |
Times New Roman, кирилиця, звичайний, 11 пунктів |
|
Командна кнопка CommandButton |
Name |
cmdRozr |
Caption |
Розрахунок |
|
Командна кнопка CommandButton |
Name |
cmdV |
Caption |
Відміна |
|
Група Frame |
Name |
FraZn |
Caption |
Оберіть вид знижки для даного покупця |
|
BackColor |
білий |
|
Перемикач OptionButton |
Name |
opt1 |
Caption |
знижка не надається |
|
BackColor |
білий |
|
Перемикач OptionButton |
Name |
opt2 |
Caption |
знижка 1% |
|
BackColor |
білий |
|
Перемикач OptionButton |
Name |
opt3 |
Caption |
знижка 2% |
|
BackColor |
білий |
Після створення форми можна починати розробку процедур, які обробляють події – клацання лівою кнопкою миші на командних кнопках. Для цього потрібно виконати подвійне клацання лівою кнопкою миші на відповідній кнопці. Щоб створити процедуру, яку буде виконано якщо користувач натисне на кнопці “Відміна”, потрібно двічі клацнути на цій кнопці. У результаті розчиниться вікно коду з заголовком і завершальним рядком процедури:
Private Sub cmdV_Click()
End Sub
Всередині процедури за допомогою операторів мови VBA слід описати дії, до повинні виконуватися, якщо відбудеться подія Click з даним об’єктом cmdV. У даному випадку слід завершити роботу за допомогою оператору End. Процедура буде виглядати так:
Private Sub cmdV_Click()
End
End Sub
Аналогічним чином слід приступити до створення процедури, яка обробляє подію Click для командної кнопки “Розрахунок”. Процедуру потрібно створити за описом:
Рядок коду |
Коментар |
Private Sub cmdRozr_Click() |
Заголовок процедури, що виконується щоразу після клацання лівою кнопкою миші на командній кнопці у формі cmdRozr (Розрахунок). |
If opt1.Value = True Then |
Якщо обрано перемикач opt1 (знижка не надається), то |
Range("B6").Value = 0 |
у чарунку B6 записується число 0 |
Else |
інакше |
If opt2.Value = True Then |
якщо обрано перемикач opt2 (знижка 1%), то |
Range("B6").Value = 1 |
у чарунку B6 записується число 1 |
Else |
інакше (обрано третій перемикач) |
Range("B6").Value = 2 |
у чарунку B6 записується число 2. |
End If |
Кінець внутрішнього оператору If. |
End If |
Кінець зовнішнього оператору If. |
k = 0 |
Змінній k привласнюється значення 0. Змінна k буде використовуватися як лічильник інформаційних рядків документу. |
For i = 8 To 50 |
Для і, що змінюється від 8 (перший інформаційний рядок документа) до 50 (максимально можлива кількість рядків) виконуються дії. |
If Cells(i, 4).Value <> 0 Then |
Якщо вміст чарунки Cells(i, 4) - чарунки і-го рядка та 4-ої колонки не дорівнює 0 (у документі є черговий інформаційний рядок), то |
Cells(i, 5).FormulaR1C1 = "=RC[-1]*(100-R6C2)/100" |
У чарунку Cells(i, 5) – чарунку і-го рядка та 5-ої колонки поміщається формула розрахунку ціни зі знижкою =RC[-1]*(100-R6C2)/100. Формулу можна прочитати так: =чарунка того ж рядка, що і чарунка з формулою, і колонки зі зсувом на –1 (колонки, що розташована ліворуч) * на (100 – чарунка R6C2 при абсолютній адресації це чарунка 6-го рядка та 2-го стовпця B6)/100. |
Cells(i, 5).NumberFormat = "0.00" |
Значення чарунки Cells(i, 5) перетворюється на числовий формат з двома знаками після десяткової крапки. |
Cells(i, 6).FormulaR1C1 = "=RC[-3]*RC[-2]" |
У чарунку Cells(i, 6) – чарунку і-го рядка та 5-ої колонки поміщається формула розрахунку суми без ПДВ і без знижки =RC[-3]*RC[-2]. Формулу можна прочитати так: =чарунка того ж рядка і колонки зі зсувом на –3 (кількість) * на чарунку того ж рядка і колонки зі зсувом на –2 (ціна без ПДВ). |
Cells(i, 7).FormulaR1C1 = "=RC[-4]*RC[-2]" |
У чарунку Cells(i, 7) – чарунку і-го рядка та 7-ої колонки поміщається формула розрахунку суми без ПДВ і зі знижкою =RC[-4]*RC[-2]. Формулу можна прочитати так: =чарунка того ж рядка і колонки зі зсувом на –4 (кількість) * на чарунку того ж рядка і колонки зі зсувом на –2 (ціна без ПДВ зі знижкою). |
k = k + 1 |
Значення k – кількості інформаційних рядків у документі збільшується на 1. |
End If |
Кінець оператора If. |
Next i |
Змінна циклу збільшується на 1. |
If k > 0 Then |
Якщо k > 0, то виконуються наступні дії. У іншому випадку, коли у документі немає інформаційних рядків, процедура завершує свою роботу. |
Cells(k + 8, 1).FormulaR1C1 = "Разом:" |
У чарунку з адресою (рядок k + 8, стовпчик 1) вводиться новий уміст "Разом:". |
Cells(k + 8, 1).Font.Bold = True |
Шрифт чарунки (k + 8, 1) перетворюється у напівжирний. |
Cells(k + 8, 6).FormulaR1C1 = "=Sum(R8C6:R[-1]C)" |
У чарунку з адресою (рядок k + 8, стовпчик 6) вводиться формула розрахунку підсумку по сумі без ПДВ – сумування чарунок блоку R8C6 (рядок 8, колонка 6 – перша інформаційна чарунка даного показника) : чарунка R[-1]C, яка розташована на рядок вище від чарунки (k + 8, 6) і у тому ж стовпчику . |
Cells(k + 8, 7).FormulaR1C1 = "=Sum(R8C7:R[-1]C)" |
У чарунку (k + 8, 7) вводиться формула для розрахунку суми без ПДВ зі знижкою. |
Cells(k + 9, 5).FormulaR1C1 = "Загальна сума знижки:" |
У чарунку (k + 9, 5) вводиться текст "Загальна сума знижки:". |
Cells(k + 9, 5).Font.Bold = True |
Шрифт чарунки (k + 9, 5) перетворюється у напівжирний. |
Cells(k + 9, 7).FormulaR1C1 = "=R[-1]C[-1]-R[-1]C" |
У чарунку з адресою (рядок k + 9, стовпчик 7) вводиться формула розрахунку загальної суми знижки =R[-1]C[-1]-R[-1]C. |
Cells(k + 10, 5).FormulaR1C1 = "ПДВ:" |
У чарунку (k + 10, 5) вводиться текст "ПДВ:". |
Cells(k + 10, 5).Font.Bold = True |
Шрифт чарунки (k + 10, 5) перетворюється у напівжирний. |
Cells(k + 10, 7).FormulaR1C1 = "=R[-2]C*0.2" |
У чарунку з адресою (рядок k + 10, стовпчик 7) вводиться формула розрахунку суми ПДВ =R[-2]C*0.2. |
Cells(k + 11, 5).FormulaR1C1 = "Усього з ПДВ:" |
У чарунку (k + 11, 5) вводиться текст "Усього з ПДВ:". |
Cells(k + 11, 5).Font.Bold = True |
Шрифт чарунки (k + 11, 5) перетворюється у напівжирний. |
Cells(k + 11, 7).FormulaR1C1 = "=R[-3]C+R[-1]C" |
У чарунку (k + 11, 7) вводиться формула розрахунку суми реалізації з ПДВ =R[-3]C+R[-1]C. |
Range(Cells(k + 8, 6), Cells(k + 11, 7)).Font.Bold = True |
Шрифт діапазону чарунок з підсумковими значеннями перетворюється на напівжирний. |
Range(Cells(k + 8, 6), Cells(k + 11, 7)).Font.Italic = True |
Шрифт діапазону чарунок з підсумковими значеннями перетворюється у курсив. |
End If |
Кінець If. |
End |
Завершення виконання програми. |
End Sub |
Кінець процедури. |
Після завершення створення форми і процедур, які з нею пов’язані, потрібно до проекту додати новий модуль командою меню Insert – Module, у вікні модуля створити процедуру – макрос, який буде виконуватися після натискання на відповідній кнопці на панелі інструментів користувача. Макрос буде виконувати лише одну дію – активізацію форми frmRoz. Це можна здійснити за допомогою методу Show, який буде застосовуватися по відношенню до об’єкту frmRoz. Макрос буде виглядати так:
Sub VN()
frmRoz.Show
End Sub
Далі залишилося лише визначити зв’язок між макросом і відповідною кнопкою на панелі інструментів:
Команда меню Вид – Панели инструментов – Настройка або команда Настройка контекстного меню панелей інструментів.
Якщо панелі інструментів користувача не існує, на вкладці Панели инструментов скористатися кнопкою Создать і визначити ім’я панелі інструментів (наприклад, “Користувач” або “Документи”).
На вкладці Команди у списку Категории обрати Макросы, перетягти об’єкт Настраиваемая кнопка на відповідну панель інструментів.
Викликати контекстне меню кнопці на панелі інструментів користувача, виконати команду контекстного меню Назначить макрос, обрати макрос VN, натиснути на кнопці Ок.
У контекстному меню кнопки визначити її ім’я “Розрахунок видаткової накладної”.
Зачинити вікно діалогу команди Настройка.
Поставлену задачу вирішено. Командною кнопкою для виклику форми і розрахунку показників видаткової накладної можна буде скористатися не лише при роботі з поточною робочою книгою, а і при роботі з іншими робочими книгами Microsoft Excel. При застосуванні кнопки на панелі інструментів, що створено, при роботі з іншими робочими книгами спочатку буде автоматично розчинено книгу, у якій створено форму і процедури, макрос, далі здійснюється активізація форми і подальша робота.