• КУРСОВИЙ ПРОЕКТ
  • Оригінальний текст основного програмного модуля.


  • Дата конвертації23.05.2017
    Розмір59.83 Kb.
    Типреферат

    Скачати 59.83 Kb.

    VBA Платіжка

    Міністерство освіти Республіки Білорусь

    МОГИЛЕВСЬКИЙ МАШИНОБУДІВНИЙ ІНСТИТУТ

    Інститут підвищення кваліфікації і перепідготовки кадрів

    Кафедра вдосконалення професійних знань

    КУРСОВИЙ ПРОЕКТ

    З дисципліни: "Прикладне програмне забезпечення"

    ТЕМА ПРОЕКТУ: Розробка системи "Створення Платіжних Доручень»

    Слухач гр. ИНФ-2 Гусєв А.С.

    Керівник проекту: Зав. каф. АСУ ,. С.К.Крутолевіч.

    Могильов, 2000 г.


    зміст

    Стор.

    1

    РОЗРОБКА ВИМОГ ДО РОБОТИ

    1.1

    Аналіз предметної області

    3

    1.2.

    Постановка задачі

    3-4

    2.

    ПРОЕКТУВАННЯ ПРОГРАМНОГО ПРОДУКТУ

    2.1.

    Розробка інформаційної моделі системи

    4-5

    2.2

    Розробка математичної моделі

    5-6

    2.3

    Визначення вимог до технічних засобів

    7

    3.

    РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ.

    3.1

    Розробка структури програми

    7

    3.2

    Визначення форми представлення вхідних і вихідних даних.

    8-9

    3.3

    Алгоритм розв'язання задачі.

    9-10

    3.4.

    Розробка і тестування програмного модуля.

    11

    Висновок.

    11

    Список використаних літературних джерел.

    12

    ПЕРЕЛІК ГРАФІЧНОГО МАТЕРІАЛУ Наіменова-

    1.

    Алгоритми основних програмних модулів

    2.

    Структура програмного забезпечення

    3.

    Вхідні і вихідні форми


    1. Розробка вимог до роботи

    1.1Аналіз предметної області.

    Друк платіжних доручень осуществяется практично будь-яка організація.

    Тому автоматизація цього завдання має велике значення.

    Автоматизація цієї проблемми зводить ці роботи до нескладних операцій на комп'ютері.

    1.2.Постановка завдання

    Для вирішення цього завдання необхідно створити програму за допомогою якого можна було б зберігати дані «Платників». Це буде база даних містить:

    1 Номер «Платника»

    2 Найменування «Платника»

    3 Найменування Банку «Платника»

    4 Р / С «Платника»

    5 УНН «Платника»

    6 Код Банку «Платника»

    Крім цього необхідно створити базу даних в якій зберігати дані «Одержувачів» платежів. Це буде база даних містить:

    1 Номер «Одержувачів»

    2 Найменування «Одержувачів»

    3 Найменування Банку «Одержувачів»

    4 Р / С «Одержувачів»

    5 УНН «Одержувачів»

    6 Код Банку «Одержувачів»

    7 Вид операції

    8 Призначення платежу

    9 Код призначення платежу

    Крім цього необхідно створити «Базу даних» в якій зберігати дані вироблених платежів. Це буде «База даних» містить:

    1 Номер «платіжні доручення»

    2 Дата платежу

    3 Код Банку «Одержувачів»

    4 УНН «Одержувачів»

    5 Найменування «Одержувачів»

    6 Найменування Банку «Одержувачів»

    7 Р / С «Одержувачів»

    8 Дата отримання товару, надання послуг

    9 Сума платежу

    10 Вид операції

    11 Код призначення платежу

    12 Параметр "Місце печатки"

    13 Призначення платежу

    У розрахунку беруть участь «Сума платежу». Для цього необхідно забезпечити введення числової інформації по цьому пункту.

    Для прискорення подальшої роботи користувачеві необхідно буде залолнять відповідні поля «Бази даних» «Одержувачів платежів». І зберігати ці нанние. Це набагато прискорить последуюющее створення платіжних доручень. Відповідно необхідно передбачити програму функції контролюючі індивідуальність кожного запису.

    Для подальшого швидкого формування звітів доцільно звязана поля «Бази даних» «Одержувачів» і поля «Бази даних» «Платежів» за допомогою індексів.

    Дуже зручним елементом для користувача було б організація навігації по базі «Платежів», а також по базі «Одержувачів» і базі «Платників». Крім цього видалення і зміна інформації дозволило б усувати з розрахунку ті записи які не потрібні.

    Для організації доступу до баз їх коригування, доповнення, видалення і.т.д. потрібно організувати кілька діалогів з зручним і швидким для користувача доступом до потрібних йому записів.

    Для об'єднання всього вище перерахованого необхідна система

    яка дозволить користувачеві переходячи від одного елемента меню до іншого виконувати ті чи інші програмні дії. За допомогою її користувач може вибирати і викликати діалог, здійснювати навігацію по базі даних (тобто переміщатися між записами), видаляти або встановлювати запис, запускати процедуру створення звітів і висновок на друк підсумків і.т.д.

    2. ПРОЕКТУВАННЯ ПРОГРАМНОГО ПРОДУКТУ

    2.1. Розробка інформаційної моделі

    Інформаційні системи орієнтовані на зберігання і модифікацію постійно існуючої інформації. У нашому випадку потрібно створити таку систему яка задовольняла таким властивостям:

    1. Підтримувала облік Платників

    2. Підтримувала для кожного окремого Платника його особисті бази даних (Список Одержувача платежів, Список вироблених платежів)

    3. Підтримувала процедуру додавання в базу нових Одержувача платежів і модифікацію вже наявні записи, а так само підтримувала видалення з бази даних існуючих записів.

    4. Підтримувала перехід на сдедует рік (початок нумерації платіжних доручень з 1)

    5. Можливість формування звітів по заданих тимчасовим рараметрам з подальшим виведенням на друк.



    Малюнок 1.

    2.2 Розробка математичної моделі.

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

    Формула по всім одержувачам платежу:

    Сума за вибраний часовий період = сумі всіх вироблених платежів за обраний період.

    Формула за обраним одержувачу платежу:

    Сума за вибраний часовий період = сумі всіх вироблених платежів за обраний період.

    2.3 Визначення вимог до технічних засобів.

    Мінімальні вимоги для ефективної роботи розробленої ІС є:

    Pentium 233 МГц

    32 Мб пам'яті

    Жорсткий диск як мінімум 200 Мб

    Відеокарта 0,5 Мб

    Монітор VGA підтримує режими роботи 800х600

    Для більш комфортної та швидкої роботи необхідно використовувати:

    Pentium II 366 МГц / Celeron і вище

    64 Мб пам'яті

    Жорсткий диск 2.5 Гб і вище

    Відеокарта 1-2-4 МБ

    Монітор SVGA підтримує режими роботи 800х600 і

    1024х768.

    Для друку можна використовувати будь-які матричні, струменеві, або лазерні принтери.

    3. Розробка ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

    3.1. Розробка структури програми

    Програма представляє собою файл надбудови Excel97 має

    вбудований код Visual Basic for Application. Так само є четиріфайла Excel97 представляють собою:

    1. Файл бази даних платників. складається з двох аркушів. Де один лист містить інформацію про роки протягом яких іспользовалать програма. А інший інформацію про одержувачів платежів.

    2. Файл бази даних одержувачів платежів. Спочатку містить один лист. Додавання і удатеніе листів в книзі відбувається динамічно залежно від кількості платників. Іншими словами на кожного Платника відводиться один лист є базою даних одержувачів даного Платника.

    3. Файл бази даних Платіжних Доручень. Спочатку містить два листа. Додавання і удатеніе листів в книзі відбувається динамічно залежно від кількості платників. Іншими словами на кожного Платника відводиться один лист є базою даних Платіжних Доручень даного Платника. Інший лист є чистим бланком звіту.

    4. Файл платіжного доручення. Власне цей файл містить один лист є бланком платіжного доручення.

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

    Дана программма є повністю відкритою для подальшої зміни і модифікації. Інформація набрана в цій системі може бути використана в інших додатках використовують засоби

    Microsoft Office.

    3.2.Определение форми представлення вхідних і вихідних даних.

    Головна (перша форма) складається:

    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.


    Прихованої випадає для вибору кількості копій для друку

    Рис 3.

    За допомогою радиокнопки вид інформаційної частини може змінюватись.

    Для внесення нових даних про одержувачів платежів та формування нових пл. доручень вона має вигляд наведений вище, для навігації та редагування старих пл. доручень вона приймає наступний вигляд.

    1. Кнопка переходу в форму ЗВІТИ

    2. Кнопка переходу в форму ПЛАТНИКИ

    3. Поле НОМЕР ПЛ. ДОРУЧЕННЯ

    4. Поле ІНТЕРАКТИВНА ДОВІДКА

    5. Поле НАЙМЕНУВАННЯ ОТРИМУВАЧА

    6. Поле ДАТА

    7. Поле НАЙМЕНУВАННЯ БАНКУ ОТРИМУВАЧА

    8. Групи кнопок для роботи з датою СЬОГОДНІ, ПЛЮС ДЕНЬ, МІНУС ДЕНЬ

    9. Поле Р / С ОТРИМУВАЧА

    10. Поле ВИД ОПЕРАЦІЇ

    11. Поле КОД БАНКУ ОТРИМУВАЧА

    12. Поле ДАТА ОТРИМАННЯ ТОВАРУ, НАДАННЯ ПОСЛУГ

    13. Поле КОД ПРИЗНАЧЕННЯ ПЛАТЕЖУ

    14. Поле УНН ОТРИМУВАЧА

    15. Поле ВВЕДІТЬ СУМУ

    Рис3.

    16. Групи кнопок-перемикачів М / П-місце друку, Б / П-без печатки, ПУСТО-немає ніяких написів в пл. дорученні на місці для друку.

    17. Поле ВВЕДІТЬ ПРИЗНАЧЕННЯ ПЛАТЕЖУ

    18. Радіокнопка для переходу форми в початковий режим ПОВЕРНУТИСЯ ДО СТВОРЕННЯ платіжки

    19. Кнопка ВНЕСТИ ЗМІНИ В СТАРУ платіжки

    20. Кнопка для перегляду торішніх пл. доручень ЗА МИНУЛИЙ РІК

    21. Кнопка ДРУК СТАРОГО платіжних доручень

    22. Кнопка для переходу за старими пл. дорученнями

    23. Кнопка для переходу в кінець списку пл. доручень ДО КІНЦЯ СПИСКУ платіжок

    24. Поле для введення номера пл. доручення до якого слід зробити перехід

    25. Кнопка для введеного номера пл. доручення до якого слід зробити перехід ПЕРЕЙТИ ЗА НОМЕРОМ

    26. Кнопка ВИХІД

    27. Кнопка попереднього перегляду

    28. Список, що випадає для вибору кількості копій для друку


    Ріс4.

    За допомогою кнопки Звіти відбувається перехід в форму звітів. Форма звітів має наступний вигляд:

    1. Кнопка переходу в головну форму НАЗАД ДО платіжки

    2. Дванадцять прапорців на кожен месяцгода відповідно

    3. Кнопка переходу в форму ПЛАТНИКИ

    4. Список, що випадає СПИСОК ОДЕРЖУВАЧІВ

    5. Список, що випадає СПИСОК ПЛАТНИКІВ

    6. Кнопка ЗА I-Й КВАРТАЛ для швидкого виділення прапорців I-го кварталу

    7. Кнопка ЗА II -Й КВАРТАЛ Л для швидкого виділення прапорців II-го кварталу

    8. Кнопка ЗА III-Й КВАРТАЛ для швидкого виділення прапорців III-го кварталу

    9. Кнопка ЗА IV-Й КВАРТАЛ для швидкого виділення прапорців IV-го кварталу

    10. Кнопка ЗА РІК для швидкого виділення всіх прапорців року

    11. Поле року звіту

    12. Кнопка ПЛЮС РІК

    13. Кнопка МІНУС РІК

    14. Кнопка скидання для зняття активізації зі всіх прапорців місяців

    15. Прихована кнопка видалення файлів звіту. Кнопка з'являється якщо є хоч би один файл зі старими звітами.

    16. Довідкове поле видає інформацію про обраний для звіту одержувача і сформованому звіті

    17. Довідкове поле видає інформацію про обраний для звіту платника

    18. Поле РЕЗУЛЬТАТ. Сдесь виводяться підсумкові дані.

    19. Кнопка СФОРМУВАТИ ЗВІТ

    20. Кнопка ПЕРЕГЛЯД звіт

    21. Кнопка ДРУК звіт

    22. Кнопка СФОРМУВАТИ ЗВІТ ПО всім одержувачам

    23. Список, що випадає для вибору копій при друк звіту

    24.


    Поле ІНТЕРАКТИВНОЇ ДОВІДКИ

    25. Кнопка ВИХІД

    Рис5.

    При переході в головну форму за допомогою кнопки НАЗАД ДО ПЛЯТЁЖКАМ. Користувач може перейти до форми платники. Ця форма містить наступні елементи:

    1. Кнопка переходу в головну форму НАЗАД ДО платіжки

    2. Список, що випадає для вибору ПЛАТНИКА

    3. Поле НАЙМЕНУВАННЯ ПЛАТНИКА

    4. Поле НАЙМЕНУВАННЯ БАНКУ ПЛАТНИКА

    5. Поле Р / С БАНКУ ПЛАТНИКА

    6. Поле УНН ПЛАТНИКА

    7. Поле КОД БАНКУ ПЛАТНИКА

    8. Кнопка для активізації обраного платника ЗРОБИТИ ЦЬОГО ПЛАТНИКА поточного В П / П

    9. Кнопка ДОДАТИ ПЛАТНИКА

    10. Кнопка ВИДАЛИТИ ПЛАТНИКА

    11. Кнопка ВНЕСТИ ЗМІНИ ДО ВІДОМОСТІ ПРО платників


    Рис 6.

    5.3 Алгоритм рішення задачі.

    Розглянемо алгоритм процедури розрахунку суми прогізведённих платежів за обраним для звіту одержувачу.



    да

    немає

    немає

    немає

    да

    да


    SS = Worksheets (PP) .Range ( "L" & Спісок.ListIndex + 1) "




    3.4 Розробка і тестування програмного модуля.

    Возмем в якості тестового прикладу кілька одержувачів платежів. Заповнимо якесь у плю доручень. На приклад:

    Назва отримувача

    Дата

    Кількість платежу

    Іванов

    01/02/00

    500

    Іванов

    02/02/00

    600

    Іванов

    03/03/00

    700

    Іванов

    04/04/00

    800

    Іванов

    05/05/00

    900

    Іванов

    06/06/00

    1000

    Іванов

    07/07/00

    1100

    Іванов

    08/08/00

    1200

    Сидоров

    01/02/00

    100

    Сидоров

    02/02/00

    10

    Сидоров

    03/03/00

    15

    Сидоров

    04/04/00

    16

    Сидоров

    05/05/00

    17

    Сидоров

    08/08/00

    18

    Сидоров

    08/09/00

    19

    Іванов

    01/02/00

    1000

    Разом

    7995

    Результати отримані ьвне програми абсолютно ідентичні результатам отриманим програми шляхом.

    Так само програма продукт піддався тестування на власному виробництві. Помилок виявлено не було.

    З цього можна зробити висновок що створене програмне забезпечення працює правильно і цілком готове до експлуатації.

    Висновок.

    Представлений програмний продукт створений в середовищі Excel -97.

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

    Змінність програми можна здійснити тільки модернізуючи її, що не надає достатньої гнучкості.

    література

    1. "Microsoft OFFICE97 розробка додатків" К.Соломон видавництво "БХВ" м.Санкт-Петербург 1998 год.

    2. Кен Гетц. Майк Джілберт "Програмування в Microsoft Office" - видавництво "Друкарський двір" Державного комітету РФ по друку м.Санкт-Петербург 1999 год.

    3. М.МакКелві і ін. "Visual Basic 5" видавництво "BHV-Санкт-Петербург" 1998 год.

    4. Р.Персон. "Excel для Windows 95" видавництво "BHV-Санкт-Петербург" 1998 год.

    5. Р.Вінтер. "Microsoft Office для Windows 95" видавництво "BHV-Санкт-Петербург" 1998 год.

    6. Фігурне В.Е. "IBM PC для користувача." - М: Фінанси і статистика, 1991.

    7.Ч.Петзолд "Програмування для Windows 95" видавництво "BHV-Санкт-Петербург" 1998 год.

    8. Ф. Новиков, А. Яценко. "Microsoft Office в цілому" видавництво "BHV-Санкт-Петербург" 1998 год.

    Оригінальний текст основного програмного модуля.

    Dim №ПЛ As String

    Dim яка сплачує As String

    Dim BOX

    Dim БОКС

    Dim МП1 As String

    Dim Рік

    Private Sub ComboBox1_Change ()

    Windows ( "Клієнти" & Year (Date)). Activate

    If ComboBox1.ListIndex = -1 Then

    Exit Sub

    End If

    a = ComboBox1.ListIndex

    Счётчік2.Visible = False

    Создать.Visible = False

    Предосмотр.Visible = False

    СохранітьНов.Visible = True

    If Len (Worksheets (№ПЛ) .Range ( "A1")) = 0 Then

    ComboBox1.Visible = False

    Windows ( "Клієнти" & Year (Date)). Activate

    Рахунок = Worksheets (№ПЛ) .Range ( "C1")

    Банк = Worksheets (№ПЛ) .Range ( "B1")

    Клієнт = Worksheets (№ПЛ) .Range ( "A1")

    КодБанка = Worksheets (№ПЛ) .Range ( "D1")

    УНН = Worksheets (№ПЛ) .Range ( "E1")

    ВідОпераціі = Worksheets (№ПЛ) .Range ( "f1")

    НазначПлатежа1 = Worksheets (№ПЛ) .Range ( "g1")

    НомНазПл = Worksheets (№ПЛ) .Range ( "H1")

    ElseIf a <0 Then

    ComboBox1.ListIndex = a + 1

    Windows ( "Клієнти" & Year (Date)). Activate

    Рахунок = (Worksheets (№ПЛ) .Range ( "C" & (ComboBox1.ListIndex + 1)))

    Банк = (Worksheets (№ПЛ) .Range ( "B" & (ComboBox1.ListIndex + 1)))

    Клієнт = (Worksheets (№ПЛ) .Range ( "A" & (ComboBox1.ListIndex + 1)))

    КодБанка = (Worksheets (№ПЛ) .Range ( "D" & (ComboBox1.ListIndex + 1)))

    УНН = (Worksheets (№ПЛ).Range ( "E" & (ComboBox1.ListIndex + 1)))

    ВідОпераціі = Worksheets (№ПЛ) .Range ( "f" & (ComboBox1.ListIndex + 1))

    НазначПлатежа1 = Worksheets (№ПЛ) .Range ( "g" & (ComboBox1.ListIndex + 1))

    НомНазПл = Worksheets (№ПЛ) .Range ( "H" & (ComboBox1.ListIndex + 1))

    Else

    Windows ( "Клієнти" & Year (Date)). Activate

    Рахунок = (Worksheets (№ПЛ) .Range ( "C" & (ComboBox1.ListIndex + 1)))

    Банк = (Worksheets (№ПЛ) .Range ( "B" & (ComboBox1.ListIndex + 1)))

    Клієнт = (Worksheets (№ПЛ) .Range ( "A" & (ComboBox1.ListIndex + 1)))

    КодБанка = (Worksheets (№ПЛ) .Range ( "D" & (ComboBox1.ListIndex + 1)))

    УНН = (Worksheets (№ПЛ) .Range ( "E" & (ComboBox1.ListIndex + 1)))

    ВідОпераціі = Worksheets (№ПЛ) .Range ( "f" & (ComboBox1.ListIndex + 1))

    НазначПлатежа1 = Worksheets (№ПЛ) .Range ( "g" & (ComboBox1.ListIndex + 1))

    НомНазПл = Worksheets (№ПЛ) .Range ( "H" & (ComboBox1.ListIndex + 1))

    End If

    End Sub

    Private Sub Виход_Click ()

    Windows ( "Платіжки" & Year (Date)). Activate

    ActiveWorkbook.Save

    ActiveWindow.Close

    Windows ( "Клієнти" & Year (Date)). Activate

    ActiveWorkbook.Save

    ActiveWindow.Close

    Windows ( "Платёжка.xls"). Activate

    ActiveWorkbook.Save

    ActiveWindow.Close

    Application.Quit

    'ActiveWorkbook.RunAutoMacros Which: = xlAutoClose

    End Sub

    Private Sub UserForm_Activate ()

    Windows ( "Платёжка.xls"). Activate

    Платить = "Поточний Платник:" & Worksheets ( "Лист1"). Range ( "E7") & _

    "УНН:" & Worksheets ( "Лист1"). Range ( "C7") & _

    "P / c:" & Worksheets ( "Лист1"). Range ( "Q8") & _

    "Банк:" & Worksheets ( "Лист1"). Range ( "D8") & _

    "Код Банку:" & Worksheets ( "Лист1"). Range ( "P9")

    №ПЛ = Worksheets ( "Лист1"). Range ( "A1")

    Windows ( "Клієнти" & Year (Date)). Activate

    ComboBox1.Clear

    МП = True

    X = 1

    Рік = Year (Date)

    While Len (Worksheets (№ПЛ) .Range ( "A" & X)) <> 0

    ComboBox1.AddItem (Worksheets (№ПЛ) .Range ( "A" & X))

    X = X + 1

    Wend

    End Sub

    Private Sub ЗаПрошлийГод_Click ()

    If Dir ( "C: \ Program Files \ платіжки \ Платіжки" & (Year (Date) - 1) & ".xls") = _

    "Платіжки" & (Year (Date) - 1) & ".xls" Then

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Платіжки" & (Year (Date) - 1)

    Windows ( "Платіжки" & (Year (Date) - 1)). Activate

    Worksheets (№ПЛ) .Select

    Рік = Year (Date) - 1

    Else

    БОКС = MsgBox ( "За минулий рік файл звіту не найден",, BOX)

    Exit Sub

    End If

    Украй = True

    End Sub

    Private Sub Плательщікі_Click ()

    UserForm1.Hide

    UserForm3.Show

    End Sub

    Private Sub Отчёти_Click ()

    UserForm1.Hide

    UserForm2.Show

    End Sub

    Private Sub Мінус_Click () 'забирає 1 день від дати

    If IsDate (Дата) = True Then

    Дата = CDate (Дата) - 1

    Else

    End If

    End Sub

    Private Sub Плюс_Click () 'додає один день до дати

    If IsDate (Дата) = True Then

    Дата = CDate (Дата) + 1

    Else

    End If

    End Sub

    Private Sub Предосмотр_Click () 'активізує вікно перегляду Excel

    Windows ( "Платёжка.xls"). Activate

    Application.Visible = True

    UserForm1.Hide

    ActiveWindow.SelectedSheets.PrintPreview

    Application.Visible = False

    UserForm1.Show

    End Sub

    Private Sub UserForm_Initialize ()

    If Dir ( "C: \ Program Files \ платіжки \ Клієнти" & Year (Date) & ".xls") <> _

    "Клієнти" & Year (Date) & ".xls" Then

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Клієнти" & (Year (Date) - 1)

    Windows ( "Клієнти" & (Year (Date) - 1)). Activate

    ActiveWorkbook.SaveAs FileName: = "C: \ Program Files \ платіжки \ Клієнти" & Year (Date)

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Платіжки" & (Year (Date) - 1)

    Windows ( "Платіжки" & (Year (Date) - 1)). Activate

    ActiveWorkbook.SaveAs FileName: = "C: \ Program Files \ платіжки \ Платіжки" & Year (Date)

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Плательщікі.xls"

    Windows ( "Плательщікі.xls"). Activate

    X = 1

    Do While Len (Worksheets ( "Лист1"). Range ( "A" & X)) <> 0

    X = X + 1

    Loop

    X = X - 1

    Do While X <> 0

    Windows ( "Клієнти" & Year (Date)). Activate

    Worksheets (CStr (X)). Select

    Worksheets (CStr (X)). Range ( "L1: L65535"). Select

    Selection.ClearContents

    Windows ( "Платіжки" & Year (Date)). Activate

    Worksheets (CStr (X)). Select

    Worksheets (CStr (X)). Columns ( "A: AG"). Select

    Selection.ClearContents

    X = X - 1

    Loop

    Windows ( "Клієнти" & Year (Date)). Activate

    ActiveWorkbook.Save

    Windows ( "Платіжки" & Year (Date)). Activate

    ActiveWorkbook.Save

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Платёжка.xls"

    Windows ( "Плательщікі.xls"). Activate

    Worksheets ( "Року"). Select

    X = 1

    While Len (Worksheets ( "Року"). Range ( "A" & X)) <> 0

    X = X + 1

    Wend

    'Worksheets ( "Року"). Range ( "A" & X) = CStr ((Year (Date) - 1))

    Worksheets ( "Року"). Range ( "A" & X) = CStr (Year (Date))

    ActiveWorkbook.Save

    Else

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Клієнти" & Year (Date)

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Платіжки" & Year (Date)

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Платёжка.xls"

    Workbooks.Open FileName: = "C: \ Program Files \ платіжки \ Плательщікі.xls"

    End If

    Рік = Year (Date)

    Счётчік2.List = Array (1, 2, 3)

    Счётчік2 = 1

    Дата = Date

    МП = True

    ComboBox1.Visible = True

    НомерПл.Visible = False

    Label1.Visible = True

    Создать.Visible = False

    Label14.Visible = False

    Счётчік.Visible = False

    КСтарПл.Visible = False

    Предосмотр.Visible = False

    Счётчік2.Visible = False

    ІзмененіяСТ.Visible = False

    Вконец.Visible = False

    номерСТПЛ.Visible = False

    ПоНомеру.Visible = False

    ЗаПрошлийГод.Visible = False

    Сегодня.Caption = "Сьогодні:" & Date

    BOX = "платіжки"

    Windows ( "Платёжка.xls"). Activate

    №ПЛ = Worksheets ( "Лист1"). Range ( "a1")

    Windows ( "Клієнти" & Year (Date)). Activate

    X = 1

    While Len (Worksheets (№ПЛ) .Range ( "A" & X)) <> 0

    ComboBox1.AddItem (Worksheets (№ПЛ) .Range ( "A" & X))

    X = X + 1

    Wend

    End Sub

    Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer)

    Windows ( "Платіжки" & Year (Date)). Activate

    ActiveWorkbook.Save

    ActiveWindow.Close

    Windows ( "Клієнти" & Year (Date)). Activate

    ActiveWorkbook.Save

    ActiveWindow.Close

    Windows ( "Платёжка.xls"). Activate

    ActiveWorkbook.Save

    ActiveWindow.Close

    Application.Quit

    'ActiveWorkbook.RunAutoMacros Which: = xlAutoClose

    End Sub

    Private Sub Ізменінія_Click ()

    Windows ( "Клієнти" & Year (Date)). Activate

    If Перевірка = False Then 'Перевірка на правильність' функція знаходиться в кінці програми

    Exit Sub 'введеної інформаці

    Else 'функція знаходиться в кінці програми

    End If

    X = 1

    Do While X

    If Клієнт = Worksheets (№ПЛ) .Range ( "A" & X) _

    And Банк = Worksheets (№ПЛ) .Range ( "b" & X) _

    And Рахунок = Worksheets (№ПЛ) .Range ( "c" & X) _

    And КодБанка = Worksheets (№ПЛ) .Range ( "d" & X) _

    And УНН = Worksheets (№ПЛ) .Range ( "e" & X) _

    And ВідОпераціі = Worksheets (№ПЛ) .Range ( "f" & X) _

    And НомНазПл = Worksheets (№ПЛ) .Range ( "H" & X) _

    And НазначПлатежа1 = Worksheets (№ПЛ) .Range ( "g" & ComboBox1.ListIndex + 1) _

    Then

    БОКС = MsgBox ( "Вибачте але:" & Клієнт & "вже є в списку Одержувачів." _

    & Chr (10) & "Спробуйте вибрати Одержувача зі списку.",, BOX)

    Exit Sub

    Else

    X = X + 1

    End If

    Loop

    Worksheets (№ПЛ) .Range ( "A" & (ComboBox1.ListIndex + 1)) = Клієнт

    Worksheets (№ПЛ) .Range ( "b" & (ComboBox1.ListIndex + 1)) = Банк

    Worksheets (№ПЛ) .Range ( "c" & (ComboBox1.ListIndex + 1)) = Рахунок

    Worksheets (№ПЛ) .Range ( "d" & (ComboBox1.ListIndex + 1)) = КодБанка

    Worksheets (№ПЛ) .Range ( "e" & (ComboBox1.ListIndex + 1)) = УНН

    Worksheets (№ПЛ) .Range ( "f" & (ComboBox1.ListIndex + 1)) = ВідОпераціі

    Worksheets (№ПЛ) .Range ( "g" & (ComboBox1.ListIndex + 1)) = НазначПлатежа1

    Worksheets (№ПЛ) .Range ( "H" & (ComboBox1.ListIndex + 1)) = НомНазПл

    ActiveWorkbook.Save

    БОКС = MsgBox ( "Зміни в дані про Клієнта:" & Клієнт & "успішно внесені в список клієнтів",, BOX)

    Кліент.SetFocus

    End Sub

    Private Sub ДобавітьПол_Click ()

    Windows ( "Клієнти" & Year (Date)). Activate

    If Перевірка = False Then 'Перевірка на правильність' функція знаходиться в кінці програми

    Exit Sub 'введеної інформаці

    Else 'функція знаходиться в кінці програми

    End If

    X = 1

    Do While X

    If Клієнт = Worksheets (№ПЛ) .Range ( "A" & X) _

    And Банк = Worksheets (№ПЛ) .Range ( "b" & X) _

    And Рахунок = Worksheets (№ПЛ) .Range ( "c" & X) _

    And КодБанка = Worksheets (№ПЛ) .Range ( "d" & X) _

    And УНН = Worksheets (№ПЛ) .Range ( "e" & X) _

    And ВідОпераціі = Worksheets (№ПЛ) .Range ( "f" & X) _

    And НомНазПл = Worksheets (№ПЛ) .Range ( "H" & X) _

    Then

    БОКС = MsgBox ( "Вибачте але:" & Клієнт & "вже є в списку Одержувачів." _

    & Chr (10) & "Спробуйте вибрати Одержувача зі списку.",, BOX)

    Exit Sub

    Else

    X = X + 1

    End If

    Loop

    X = 1

    While Len (Worksheets (№ПЛ) .Range ( "A" & X)) <> 0

    X = X + 1

    Wend

    Worksheets (№ПЛ) .Range ( "A" & X) = Клієнт

    Worksheets (№ПЛ) .Range ( "b" & X) = Банк

    Worksheets (№ПЛ) .Range ( "c" & X) = Рахунок

    Worksheets (№ПЛ) .Range ( "d" & X) = КодБанка

    Worksheets (№ПЛ) .Range ( "e" & X) = УНН

    Worksheets (№ПЛ) .Range ( "f" & X) = ВідОпераціі

    Worksheets (№ПЛ) .Range ( "g" & X) = НазначПлатежа1

    Worksheets (№ПЛ) .Range ( "H" & X) = НомНазПл

    ComboBox1.Visible = True

    ComboBox1.AddItem (Worksheets (№ПЛ) .Range ( "A" & (ComboBox1.ListCount + 1)))

    ComboBox1.ListIndex = X - 1

    ActiveWorkbook.Save

    БОКС = MsgBox ( "Новий Клієнт:" & Клієнт & "внесений до списку клієнтів",, BOX)

    Кліент.SetFocus

    End Sub

    Private Sub КСтарПл_Click ()

    Windows ( "Платёжка.xls"). Activate

    If Len (НомерПл) = 0 Then

    БОКС = MsgBox ( "Ви не обрали платіжку ...",, BOX)

    Exit Sub

    Else

    End If

    If ПроверкаПЛ = False Then 'Перевірка на правильність

    Exit Sub 'введеної інформації

    Else 'функція знаходиться в кінці програми

    End If

    Вплатёжку 'функція зберігає дані в платіжці

    ActiveWorkbook.Save

    Windows ( "Платіжки" & Year (Date)). Activate

    Worksheets (№ПЛ) .Range ( "A" & НомерПл) = НомерПл

    Worksheets (№ПЛ) .Range ( "c" & НомерПл) = Банк

    Worksheets (№ПЛ) .Range ( "d" & НомерПл) = Рахунок

    Worksheets (№ПЛ) .Range ( "b" & НомерПл) = Клієнт

    Worksheets (№ПЛ) .Range ( "e" & НомерПл) = КодБанка

    Worksheets (№ПЛ).Range ( "f" & НомерПл) = УНН

    Worksheets (№ПЛ) .Range ( "g" & НомерПл) = Гроші

    Worksheets (№ПЛ) .Range ( "h" & НомерПл) = Дата

    Worksheets (№ПЛ) .Range ( "I" & НомерПл) = ДатаУслуг

    Worksheets (№ПЛ) .Range ( "J" & НомерПл) = ВідОпераціі

    Worksheets (№ПЛ) .Range ( "K" & НомерПл) = НазначПлатежа1

    Worksheets (№ПЛ) .Range ( "L" & НомерПл) = НомНазПл

    Worksheets (№ПЛ) .Range ( "M" & НомерПл) = МП1

    Windows ( "Платёжка.xls"). Activate

    Впечать 'функція друку

    End Sub

    Private Sub ІзмененіяСТ_Click ()

    If Year (Дата) <> Рік Then

    БОКС = MsgBox ( "У датою повинен стояти" & Рік & "рік",, BOX)

    Exit Sub

    End If

    Windows ( "Платёжка.xls"). Activate

    If Len (НомерПл) = 0 Then

    БОКС = MsgBox ( "Ви не обрали платіжку ...",, BOX)

    Exit Sub

    Else

    End If

    If ПроверкаПЛ = False Then 'Перевірка на правильність

    Exit Sub 'введеної інформації

    Else 'функція знаходиться в кінці програми

    End If

    Вплатёжку 'функція зберігає дані в платіжці

    ActiveWorkbook.Save

    Windows ( "Платіжки" & Рік) .Activate

    Worksheets (№ПЛ) .Range ( "A" & НомерПл) = НомерПл

    Worksheets (№ПЛ) .Range ( "c" & НомерПл) = Банк

    Worksheets (№ПЛ) .Range ( "d" & НомерПл) = Рахунок

    Worksheets (№ПЛ) .Range ( "b" & НомерПл) = Клієнт

    Worksheets (№ПЛ) .Range ( "e" & НомерПл) = КодБанка

    Worksheets (№ПЛ) .Range ( "f" & НомерПл) = УНН

    Worksheets (№ПЛ) .Range ( "g" & НомерПл) = CDbl (Гроші)

    Worksheets (№ПЛ) .Range ( "h" & НомерПл) = Дата

    Worksheets (№ПЛ) .Range ( "I" & НомерПл) = ДатаУслуг

    Worksheets (№ПЛ) .Range ( "J" & НомерПл) = ВідОпераціі

    Worksheets (№ПЛ) .Range ( "K" & НомерПл) = НазначПлатежа1

    Worksheets (№ПЛ) .Range ( "L" & НомерПл) = НомНазПл

    Worksheets (№ПЛ) .Range ( "M" & НомерПл) = МП1

    ActiveWorkbook.Save

    БОКС = MsgBox ( "Зміни в платіжку №:" & НомерПл & "успішно внесені",, BOX)

    Кліент.SetFocus

    End Sub

    Private Sub Сегодня_Click ()

    Дата = Date

    End Sub

    Private Sub СтариеПл_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    If СтариеПл = False Then

    Label16.Caption = "Натиснувши на цю кнопку Ви можете подивитися всі Ваші старому платіжки" _

    & "А так-же щось підправити і зберегти ці зміни"

    Else

    Label16.Caption = "Натиснувши на цю кнопку Ви перейдете до форми формування платіжок"

    End If

    End Sub

    Private Sub Отчёти_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Кнопка 'Звіти' для переходу в форму ЗВІТИ. Там Ви зможете дізнатися куди ж поділися Ваші гроші !!!"

    End Sub

    Private Sub Виход_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Кнопка 'Вихід' для виходу з програми. Якщо вирішили вийти сміливо тисніть, програма збереже результати вашої роботи."

    End Sub

    Private Sub УбітьКліента_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви можете видалити обраного отримувача зі списку одержувачів"

    End Sub

    Private Sub ПоНомеру_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Введіть номер платіжки в розташоване поруч із цією кнопкою невелике поле. Потім натисніть на цю кнопку і ви перейдете до платіжці з введеним вами номером."

    End Sub

    Private Sub Вконец_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви здійсните перехід до кінця списку платіжок"

    End Sub

    Private Sub Ізменінія_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви внесете зміни в список одержувачів"

    End Sub

    Private Sub ДобавітьПол_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви внесете до списку Одержувачів Ваших грошей дані про новий Одержувача"

    End Sub

    Private Sub ІзмененіяСТ_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви можете зберегти зміни в старому платіжному дорученні"

    End Sub

    Private Sub КСтарПл_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви можете роздрукувати Ваше старе платіжне доручення" _

    & "Не забудьте вибрати кількість копій в випадаючому списку поруч із кнопкою"

    End Sub

    Private Sub СохранітьНов_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Ця кнопка призначена для збереження створеного платіжного доручення"

    End Sub

    Private Sub Создать_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши на цю кнопку Ви можете роздрукувати Ваше платіжне доручення" _

    & "Не забудьте вибрати кількість копій в випадаючому списку поруч із кнопкою"

    End Sub

    Private Sub UserForm_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = яка сплачує

    End Sub

    Private Sub Плательщікі_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Натиснувши цю кнопку Ви можете поміняти поточного Платника або внести зміни в існуючі дані про Платника"

    End Sub

    Private Sub Сегодня_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Кнопка для вставки поточної дати в сформовану платіжку"

    End Sub

    Private Sub КодБанка_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять код банку отримувача. Допускаються тільки цифрові значення."

    End Sub

    Private Sub ComboBox1_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Що б вставити дані отримувача платежу востользуйтесь цим випадаючому списком. Якщо дані відсутні, значить доведеться додати нового отримувача."

    End Sub

    Private Sub Label14_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Номер поточної платіжки"

    End Sub

    Private Sub Дата_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять дату формованої платіжки. Допускаються такі формати дат. Приклад: 01,01,200 або 01/01/2000 або 01.01 / 00"

    End Sub

    Private Sub УНН_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "НЕ обов'язкове поле. У це поле вносять УНН Одержувача. Допускаються тільки цифрові значення."

    End Sub

    Private Sub НазначПлатежа1_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять відомості за що Ви власне платите." _

    & "РАДА якщо Ви знаєте, що будете тут писати майже завжди одне і теж" _

    & "То натисніть кнопку Внести зміни в дані про Одержувача."

    End Sub

    Private Sub Кліент_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять Найменування отримувача. На приклад:" "ТОВ Приємні Дрібниці" ""

    End Sub

    Private Sub Банк_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять Найменування Банку Одержувача. На приклад:" "ВАТ Белбізнесбанк р Могильов" ""

    End Sub

    Private Sub Счёт_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять № розрахункового рахунку отримувача. Допускаються тільки цифрові значення."

    End Sub

    Private Sub ДатаУслуг_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "НЕ обов'язкове поле. У це поле вносять дату отримання товару або надання послуг. Приклад: Передоплата або 28 березня 2000р."

    End Sub

    Private Sub ВідОпераціі_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "НЕ обов'язкове поле. У це поле вносять число відображає вид операції. Допускаються тільки цифрові значення."

    End Sub

    Private Sub НомНазПл_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "НЕ обов'язкове поле. У це поле вносять число відображає код призначення платежу. Допускаються тільки цифрові значення."

    End Sub

    Private Sub Деньгі_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Обов'язкове поле. У це поле вносять суму платежу. Допускаються тільки цифрові значення."

    End Sub

    Private Sub Мінус_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Забирає один день від поточної дати."

    End Sub

    Private Sub Плюс_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    Label16.Caption = "Додає один день до поточної дати."

    End Sub

    Private Sub СохранітьНов_Click ()

    If Year (Дата) <> Year (Date) Then

    БОКС = MsgBox ( "Вибачте але в рядку 'Дата' помилка. Вкажіть поточний рік",, BOX)

    Дата.SetFocus

    Exit Sub

    End If

    Windows ( "Платёжка.xls"). Activate

    If ПроверкаПЛ = False Then 'Перевірка на правильність

    Exit Sub 'введеної інформації

    Else 'функція знаходиться в кінці програми

    End If

    If ComboBox1.ListIndex = -1 Then

    БОКС = MsgBox ( "Вибачте але Ви забули внести Одержувача:" & Клієнт & "в список одержувачів",, BOX)

    Exit Sub

    Else

    End If

    Windows ( "Клієнти" & Year (Date)). Activate

    If Клієнт <> ComboBox1 _

    Or Рахунок <> Worksheets (№ПЛ) .Range ( "c" & ComboBox1.ListIndex + 1) _

    Or Банк <> Worksheets (№ПЛ) .Range ( "b" & ComboBox1.ListIndex + 1) _

    Or КодБанка <> Worksheets (№ПЛ) .Range ( "d" & ComboBox1.ListIndex + 1) _

    Or УНН <> Worksheets (№ПЛ) .Range ( "e" & ComboBox1.ListIndex + 1) _

    Or ВідОпераціі <> Worksheets (№ПЛ) .Range ( "f" & ComboBox1.ListIndex + 1) _

    Or НомНазПл <> Worksheets (№ПЛ) .Range ( "H" & ComboBox1.ListIndex + 1) _

    Then

    БОКС = MsgBox ( "Вибачте але Ви забули внести Одержувача:" & Клієнт & "в список одержувачів",, BOX)

    Exit Sub

    Else

    End If

    Счётчік2.Visible = True

    Попередній перегляд.Visible = True

    Вплатёжку 'функція зберігає дані в платіжці

    ActiveWorkbook.Save

    Windows ( "Платіжки" & Year (Date)). Activate

    СохранітьНов.Visible = False

    Создать.Visible = True

    X = 1

    While Len (Worksheets (№ПЛ) .Range ( "A" & X)) <> 0

    X = X + 1

    Wend

    Worksheets (№ПЛ) .Select

    Range ( "A" & X) .Select

    Selection.NumberFormat = "#, ## 0"

    Worksheets (№ПЛ) .Range ( "A" & X) = X

    Range ( "g" & X) .Select

    Selection.NumberFormat = "#, ## 0"

    Worksheets (№ПЛ) .Range ( "g" & X) = CDbl (Гроші)

    Worksheets (№ПЛ) .Range ( "c" & X) = Банк

    Worksheets (№ПЛ) .Range ( "d" & X) = Рахунок

    Worksheets (№ПЛ) .Range ( "b" & X) = Клієнт

    Worksheets (№ПЛ) .Range ( "e" & X) = КодБанка

    Worksheets (№ПЛ) .Range ( "f" & X) = УНН

    Worksheets (№ПЛ) .Range ( "h" & X) = Дата

    Worksheets (№ПЛ) .Range ( "I" & X) = ДатаУслуг

    Worksheets (№ПЛ) .Range ( "J" & X) = ВідОпераціі

    Worksheets (№ПЛ) .Range ( "K" & X) = НазначПлатежа1

    Worksheets (№ПЛ) .Range ( "L" & X) = НомНазПл

    Worksheets (№ПЛ) .Range ( "M" & X) = МП1

    Windows ( "Платёжка.xls"). Activate

    Worksheets ( "Лист1"). Range ( "O2") = X

    Windows ( "Клієнти" & Year (Date)). Activate

    Worksheets (№ПЛ) .Range ( "L" & ComboBox1.ListIndex + 1) .NumberFormat = "@"

    Worksheets (№ПЛ) .Range ( "L" & ComboBox1.ListIndex + 1) = _

    Worksheets (№ПЛ) .Range ( "L" & ComboBox1.ListIndex + 1) + "" & X & "."

    ActiveWorkbook.Save

    Windows ( "Платіжки" & Year (Date)). Activate

    ActiveWorkbook.Save

    End Sub

    Private Sub СтариеПл_Click ()

    If СтариеПл.Value = True Then

    ComboBox1.Visible = False

    НомерПл.Visible = True

    Label1.Visible = False

    Label14.Visible = True

    Счётчік.Visible = True

    Счётчік.SetFocus

    КСтарПл.Visible = True

    Создать.Visible = False

    Ізменінія.Visible = False

    ДобавітьПол.Visible = False

    УбітьКліента.Visible = False

    СохранітьНов.Visible = False

    ЗаПрошлийГод.Visible = True

    Счётчік2.Visible = True

    Предосмотр.Visible = True

    ІзмененіяСТ.Visible = True

    Вконец.Visible = True

    номерСТПЛ.Visible = True

    ПоНомеру.Visible = True

    СтариеПл.Caption = "Повернутися до створення платіжок"

    Лічильник = 0

    Рахунок = ""

    Банк = ""

    Клієнт = ""

    КодБанка = ""

    УНН = ""

    ВідОпераціі = ""

    НазначПлатежа1 = ""

    НомНазПл = ""

    НомерПл = ""

    Дата = ""

    Гроші = ""

    ДатаУслуг = ""

    Else

    If Рік <> Year (Date) Then

    Windows ( "Платіжки" & Рік) .Activate

    ActiveWindow.Close

    Рік = Year (Date)

    Else

    End If

    Дата = Date

    Рахунок = ""

    Банк = ""

    Клієнт = ""

    КодБанка = ""

    УНН = ""

    ВідОпераціі = ""

    НазначПлатежа1 = ""

    НомНазПл = ""

    Гроші = ""

    ДатаУслуг = ""

    ComboBox1.ListIndex = True

    НомерПл.Visible = False

    Label1.Visible = True

    Label14.Visible = False

    Счётчік.Visible = False

    КСтарПл.Visible = False

    Ізменінія.Visible = True

    ДобавітьПол.Visible = True

    УбітьКліента.Visible = True

    СохранітьНов.Visible = True

    ЗаПрошлийГод.Visible = False

    ComboBox1.Visible = True

    Счётчік2.Visible = False

    Предосмотр.Visible = False

    ІзмененіяСТ.Visible = False

    Вконец.Visible = False

    номерСТПЛ.Visible = False

    ПоНомеру.Visible = False

    СтариеПл.Caption = "Подивитися старі платіжки"

    End If

    End Sub

    Private Sub Создать_Click ()

    Windows ( "Платёжка.xls"). Activate

    Впечать 'функція друку

    Создать.Visible = False

    Счётчік2.Visible = False

    End Sub

    Private Sub Счётчік_Change ()

    Windows ( "Платіжки" & Рік) .Activate

    If Лічильник = 0 Then

    Exit Sub

    Else

    Клієнт = Worksheets (№ПЛ) .Range ( "B" & Лічильник)

    Рахунок = Worksheets (№ПЛ) .Range ( "D" & (Лічильник))

    Банк = Worksheets (№ПЛ) .Range ( "C" & (Лічильник))

    НомерПл = Worksheets (№ПЛ) .Range ( "A" & (Лічильник))

    КодБанка = Worksheets (№ПЛ) .Range ( "E" & (Лічильник))

    УНН = Worksheets (№ПЛ) .Range ( "F" & (Лічильник))

    Гроші = Worksheets (№ПЛ) .Range ( "g" & Лічильник)

    ДатаУслуг = Worksheets (№ПЛ) .Range ( "I" & Лічильник)

    ВідОпераціі = Worksheets (№ПЛ) .Range ( "J" & Лічильник)

    НазначПлатежа1 = Worksheets (№ПЛ) .Range ( "K" & Лічильник)

    НомНазПл = Worksheets (№ПЛ) .Range ( "L" & Лічильник)

    Дата = Worksheets (№ПЛ) .Range ( "h" & Лічильник)

    МестоПечаті1 'функція працює з МП, БП, БезПечаті

    'Задає значення цих компонентів

    Windows ( "Платёжка.xls"). Activate

    Вплатёжку 'функція зберігає дані в платіжці

    End If

    End Sub

    Private Sub УбітьКліента_Click ()

    Windows ( "Клієнти" & Year (Date)). Activate

    If Len (ComboBox1) = 0 Then

    БОКС = MsgBox ( "Ви не обрали не одного Одержувача для видалення ...",, BOX)

    Exit Sub

    'ElseIf ComboBox1.ListIndex = -1 Then

    End If

    Dim a

    a = ComboBox1

    БОКС = MsgBox ( "Ви дійсно хочете видалити Одержувача:" & a, vbYesNo, BOX)

    If БОКС <> vbYes Then

    Exit Sub

    ElseIf Len (Worksheets (№ПЛ) .Range ( "L" & ComboBox1.ListIndex + 1)) <> 0 Then

    БОКС = MsgBox ( "Вибачте, але Ви не можете видалити Одержувача:" & a _

    & Chr (10) & "так-як по ньому проводилися платежі." _

    & Chr (10) & "Видалити цього Одержувача Буде можна лише видалити ПЛАТНИКА !!!" _

    & Chr (10) & "У формі ПЛАТНИКИ !!!" & Chr (10) & Chr (10) & _

    Платить, vbCritical, BOX)

    Exit Sub

    End If

    If ComboBox1.ListIndex = -1 Then

    Exit Sub

    Else

    Windows ( "Клієнти" & Year (Date)). Activate

    Worksheets (№ПЛ) .Select

    Rows (ComboBox1.ListIndex + 1) .Select

    Selection.Delete Shift: = xlUp 'Видаляємо запис про клієнта

    a = ComboBox1

    ComboBox1.RemoveItem (ComboBox1.ListIndex)

    ActiveWorkbook.Save

    БОКС = MsgBox ( "Ви видалили отримувача:" & a,, BOX)

    ComboBox1.ListIndex = -1

    Рахунок = ""

    Банк = ""

    Клієнт = ""

    КодБанка = ""

    УНН = ""

    ВідОпераціі = ""

    НазначПлатежа1 = ""

    НомНазПл = ""

    НомерПл = ""

    Гроші = ""

    ДатаУслуг = ""

    End If

    End Sub

    Private Sub Вконец_Click ()

    Windows ( "Платіжки" & Рік) .Activate

    X = 1

    While Len (Worksheets (№ПЛ) .Range ( "A" & (X))) <> 0

    X = X + 1

    Wend

    Счётчік.Value = X - 1

    End Sub

    Private Sub ПоНомеру_Click ()

    If Len (номерСТПЛ) = 0 Then

    БОКС = MsgBox ( "Ви забули ввести номер платіжки",, BOX)

    номерСТПЛ.SetFocus

    Exit Sub

    ElseIf номерСТПЛ> 0 And номерСТПЛ <65501 Then

    Счётчік.Value = номерСТПЛ

    номерСТПЛ = ""

    номерСТПЛ.SetFocus

    Else

    Украй = True

    БОКС = MsgBox ( "Був введений № неіснуючої платіжки ... Тому виконаний перехід до кінця списку платіжок",, BOX)

    номерСТПЛ.SetFocus

    Exit Sub

    End If

    If Len (НомерПл) = 0 Then

    Украй = True

    БОКС = MsgBox ( "Був введений № неіснуючої платіжки ... Тому виконаний перехід до кінця списку платіжок",, BOX)

    номерСТПЛ.SetFocus

    Else

    End If

    End Sub

    Private Function TRIMF ()

    Клієнт = TRIM (клієнт)

    Банк = TRIM (Банк)

    Рахунок = TRIM (Рахунок)

    КодБанка = TRIM (КодБанка)

    Рахунок = TRIM (Рахунок)

    КодБанка = TRIM (КодБанка)

    УНН = TRIM (УНН)

    ВідОпераціі = TRIM (ВідОпераціі)

    НомНазПл = TRIM (НомНазПл)

    Дата = TRIM (Дата)

    ДатаУслуг = TRIM (ДатаУслуг)

    НазначПлатежа1 = TRIM (НазначПлатежа1)

    Гроші = TRIM (гроші)

    End Function

    Private Function Перевірка () As String

    TRIMF

    If ПроверкаОБЩ = False Then

    Перевірка = False

    Exit Function

    Else

    Перевірка = True

    End If

    End Function

    Private Function ПроверкаПЛ () As String

    TRIMF

    If ПроверкаОБЩ = False Then

    ПроверкаПЛ = False

    Exit Function

    Else

    End If

    If Len (НазначПлатежа1) = 0 Then

    MsgBox "Вибачте але в 'Строке Введіть Призначення Платежу' порожньо"

    НазначПлатежа1.SetFocus

    ПроверкаПЛ = False

    Exit Function

    ElseIf IsDate (Дата) = False Then

    MsgBox "Вибачте але в 'Строке Дата' помилка або Ви забули її ввести"

    Дата.SetFocus

    ПроверкаПЛ = False

    Exit Function

    ElseIf Len (Гроші) = 0 Or Гроші = "0" Then

    БОКС = MsgBox ( "Вибачте але в 'Строке Введіть Суму' порожньо",, BOX)

    Деньгі.SetFocus

    Гроші = ""

    ПроверкаПЛ = False

    Exit Function

    Else

    ПроверкаПЛ = True

    End If

    End Function

    Private Function ПроверкаОБЩ () As String

    If Len (Клієнт) = 0 Then

    БОКС = MsgBox ( "Вибачте але в Строке Найменування Клієнта порожньо",, BOX)

    Кліент.SetFocus

    ПроверкаОБЩ = False

    Exit Function

    ElseIf Len (Банк) = 0 Then

    БОКС = MsgBox ( "Вибачте але в Строке Банк Клієнта порожньо",, BOX)

    Банк.SetFocus

    ПроверкаОБЩ = False

    Exit Function

    ElseIf Len (Рахунок) = 0 Then

    БОКС = MsgBox ( "Вибачте але в Строке Р / с Клієнта порожньо",, BOX)

    Счёт.SetFocus

    ПроверкаОБЩ = False

    Exit Function

    ElseIf Len (КодБанка) = 0 Then

    БОКС = MsgBox ( "Вибачте але в Строке Код Банку Клієнта порожньо",, BOX)

    КодБанка.SetFocus

    ПроверкаОБЩ = False

    Exit Function

    Else

    ПроверкаОБЩ = True

    End If

    End Function

    Private Sub Счёт_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    End Sub

    Private Sub Деньгі_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    If Mid (Гроші, 1, 1) = "0" Then

    Гроші = ""

    Else

    End If

    End Sub

    Private Sub КодБанка_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    End Sub

    Private Sub УНН_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    End Sub

    Private Sub ВідОпераціі_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    End Sub

    Private Sub НомНазПл_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    End Sub

    Private Sub НомерСТПЛ_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger)

    If (Not (Chr (KeyAscii) Like "[0-9]")) Then KeyAscii = 0

    End Sub

    Private Function Впечать () As String

    Sheets ( "Лист1"). Select

    If Счётчік2 = 1 Then

    ActiveWorkbook.Save

    ActiveWindow.SelectedSheets.PrintOut Copies: = 1, Collate: = True

    ElseIf Счётчік2 = 2 Then

    Range ( "A1: W28").Select

    Selection.Copy

    Range ( "A29"). Select

    ActiveSheet.Paste

    ActiveWindow.SelectedSheets.PrintOut Copies: = 1, Collate: = True

    Rows ( "29:80"). Select

    Selection.Delete Shift: = xlUp

    ActiveWorkbook.Save

    ElseIf Счётчік2 = 3 Then

    Range ( "A1: W28"). Select

    Selection.Copy

    Range ( "A29"). Select

    ActiveSheet.Paste

    ActiveWindow.SelectedSheets.PrintOut Copies: = 1, Collate: = True

    Rows ( "29:80"). Select

    Selection.Delete Shift: = xlUp

    ActiveWindow.SelectedSheets.PrintOut Copies: = 1, Collate: = True

    ActiveWorkbook.Save

    End If

    End Function

    Private Function Вплатёжку () As String

    Windows ( "Платёжка.xls"). Activate

    Дата = Format (Дата, "Short Date")

    Worksheets ( "Лист1"). Range ( "D13") = Банк

    Worksheets ( "Лист1"). Range ( "Q11") = Рахунок

    Worksheets ( "Лист1"). Range ( "E12") = Клієнт

    Worksheets ( "Лист1"). Range ( "P14") = КодБанка

    Worksheets ( "Лист1"). Range ( "C12") = УНН

    Worksheets ( "Лист1"). Range ( "T7") = (Гроші & "=")

    Worksheets ( "Лист1"). Range ( "G4") = Format (Дата, "d mmmm yyyy")

    Worksheets ( "Лист1"). Range ( "L19") = ДатаУслуг

    Worksheets ( "Лист1"). Range ( "V19") = ВідОпераціі

    Worksheets ( "Лист1"). Range ( "B22") = НазначПлатежа1

    Worksheets ( "Лист1"). Range ( "O2") = НомерПл

    Worksheets ( "Лист1"). Range ( "V20") = НомНазПл

    МестоПечаті 'Функція працює з параметрами місця друку в платіжці

    Worksheets ( "Лист1"). Range ( "C27") = МП1

    End Function

    Private Function МестоПечаті () As String

    If МП = True Then

    МП1 = "М / П"

    ElseIf БП = True Then

    МП1 = "Б / П"

    ElseIf БезПечаті = True Then

    МП1 = ""

    End If

    End Function

    Private Function МестоПечаті1 () As String

    If Worksheets (№ПЛ) .Range ( "M" & Лічильник) = "М / П" Then

    МП = True

    ElseIf Worksheets (№ПЛ) .Range ( "M" & Лічильник) = "Б / П" Then

    БП = True

    ElseIf Worksheets (№ПЛ) .Range ( "M" & Лічильник) = "" Then

    БезПечаті = True

    End If

    End Function