VBA Платежка

1



33



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

МОГИЛЕВСКИЙ МАШИНОСТРОИТЕЛЬНЫЙ ИНСТИТУТ

Институт повышения квалификации и переподготовки кадров



                   Кафедра совершенствования профессиональных знаний













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

По дисциплине: ” Прикладное програмное обеспечение “ 



ТЕМА ПРОЕКТА: Разработка системы “Создание Платёжных Поручений» 



















                                      Слушатель гр. ИНФ-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.Постановка задачи    



 Для решения этой задачи необходимо создать приложение с помощью которого можно было бы хранить данные «Плательщиков». Это будет база данных содержащая:

  

Номер «Плательщика»

Наименование «Плательщика»

Наименование Банка «Плательщика»

Р/С «Плательщика»

УНН «Плательщика»

Код Банка «Плательщика»



Кроме  этого  необходимо  создать базу данных в которой  хранить данные «Получателей» платежей. Это будет база данных содержащая:





Номер  «Получателей»

Наименование «Получателей»

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

Р/С «Получателей»

УНН «Получателей»

Код Банка «Получателей»

Вид операции

Назначение платежа

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





Кроме  этого  необходимо  создать «Базу данных» в которой  хранить данные Произведённых платежей. Это будет «База данных» содержащая:



Номер  «Платёжного поручения»

Дата платежа

Код Банка «Получателей»

УНН «Получателей»

Наименование «Получателей»

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

Р/С «Получателей»

Дата получения товара, оказания услуг

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

Вид операции

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

Параметр “Место печати”

Назначения платежа



В расчете участвуют «Сумма платежа». Для этого необходимо обеспечить  ввод числовой информации  по этому пункту.



        Для ускорения последующей работы пользователю необходимо будет залолнять соответствующие поля «Базы данных» «Получателей платежей». И сохранять эти нанные. Это намного ускорит последуюющее  создание платёжных поручений. Соответственно необходимо предусмотреть программые функции контролирующие индивидуальность каждой записи.



          Для последующего быстрого формирования отчётов целесообразно звязать поля  «Базы данных» «Получателей» и поля «Базы данных» «Платежей» с помощью индексов.

  Очень  удобным элементом для пользователя  было бы  организация навигации  по  базе  «Платежей»   , а также по  базе  «Получателей» и базе «Плательщиков».  Кроме  этого  удаление  и изменение информации  позволило  бы устранять из  расчета те  записи  которые  не нужны .  

           Для организации  доступа к базам  их корректировки , дополнения , удаления  и.т.д.   нужно  организовать несколько  диалогов  с  удобным и быстрым  для пользователя  доступом  к нужным  ему записям.

           Для  обьединения  всего выше перечисленного  необходима  система 

  которая  позволит  пользователю  переходя от одного  элемента меню к другому  выполнять  те или иные  програмные  действия. При помощи ее пользователь может выбирать и вызывать диалог , осуществлять  навигацию по базе данных (т.е.  перемещаться между записями ), удалять либо востанавливать  запись, запускать процедуру создания отчётов и вывод на печать итогов и.т.д.







 

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

    

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



Информационные системы ориентированы на хранение и модификацию постоянно  существующей информации.  В нашем случае нужно создать такую систему которая удовлетворяла следующим свойствам:



Поддерживала учет Плательщиков

Поддерживала для каждого отдельного Плательщика его личные базы данных (Список Получателе платежей, Список Произведённых платежей )

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

Поддерживала переход на сдедующий год (начало нумерации платёжных поручений с 1)

Возможность формирования отчётов по заданным временным рараметрам с последующим выводом на печать.



 



                  











Интерфейс

пользователя

 Отчеты





Рабочий

    Лист

   Excel





          Ввод 

              и 

  корректировка

         данных



Рабочий

    Лист

   Excel

Рабочий

    Лист

   Excel



Регламентиро-           

      ванные

      запросы





                                                          Рисунок  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. РАЗРАБОТКА ПРОГРАММНОГО  ОБЕСПЕЧЕНИЯ

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



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

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

		Файл базы данных Плательщиков . состоит из двух листов. Где один лист содержит информацию о годах в течении которых использовалать программа. А другой информацию о Получателях платежей.

		Файл базы данных Получателей платежей. Первоначально содержит один лист. Добавление и удатение листов в книге происходит динамически в зависимости от кол-ва Плательщиков. Другими словами на каждого Плательщика отводится один лист являющейся базой данных Получателей данного Плательщика.

		Файл базы данных Платежных Поручений. Первоначально содержит два листа. Добавление и удатение листов в книге происходит динамически в зависимости от кол-ва Плательщиков. Другими словами на каждого Плательщика отводится один лист являющейся базой данных Платежных Поручений данного Плательщика. Другой лист является чистым бланком отчёта.

		Файл платежного поручения. Собственно этот файл содержит один лист являющейся бланком платёжного поручения.





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

Данная программма является полностью открытой для дальнейшего изменения и модификации. Информация  набранная в этой системе может быть использована в других приложениях  использующих средства 

Microsoft Office.



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



Главная (первая форма) состоит:

		Кнопка перехода в форму ОТЧЕТЫ

		Кнопка перехода в форму ПЛАТЕЛЬЩИКИ

		Поле ИНТЕРАКТИВНАЯ СПРАВКА

		Выпадающего списка ВЫБОР ПОЛУЧАТЕЛЯ

		Поле НАИМЕНОВАНИЕ ПОЛУЧАТЕЛЯ

		Поле ДАТА

		Поле НАИМЕНОВАНИЕ БАНКА ПОЛУЧАТЕЛЯ

		Группы кнопок для работы с датой СЕГОДНЯ, ПЛЮС ДЕНЬ, МИНУС ДЕНЬ

		Поле Р/С ПОЛУЧАТЕЛЯ

		Поле ВИД ОПЕРАЦИИ

		Поле КОД БАНКА ПОЛУЧАТЕЛЯ

		Поле ДАТА ПОЛУЧЕНИЯ ТОВАРА, ОКАЗАНИЯ УСЛУГ

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

		Поле УНН ПОЛУЧАТЕЛЯ

		Поле ВВЕДИТЕ СУММУ

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

		Поле ВВЕДИТЕ НАЗНАЧЕНИЕ ПЛАТЕЖА

		Радиокнопка для перехода формы в режим просмотра базы данных старых пл. поручений  ПОСМОТРЕТЬ СТАРЫЕ ПЛАТЁЖКИ

		Кнопка СОХРАНИТЬ НОВОЕ ПОРУЧЕНИЕ

		Кнопка ДОБАВИТЬ ПОЛУЧАТЕЛЯ

		Кнопка ВНЕСТИ ИЗМЕНЕНИЯ В ДАННЫЕ О ПОЛУЧАТЕЛЕ

		Кнопка УДАЛЕНИЕ ПОЛУЧАТЕЛЕ

		Кнопка ВЫХОД

		Скрытой кнопки ПЕЧАТЬ НОВОГО ПЛАТЁЖНОЕ ПОРУЧЕНИЯ

		Скрытой кнопки ПРЕДОСМОТР

		Скрытой выпадающий список для выбора кол-ва копий для печати



Рис 3.



При помощи радиокнопки вид информационной части может менятся.

Для внесения новых данных о получателях платежей и формирования новых пл. поручений она имеет вид приведенный выше, для навигации и редактирования старых пл. поручений  она принимает следующий вид.



Кнопка перехода в форму ОТЧЕТЫ

Кнопка перехода в форму ПЛАТЕЛЬЩИКИ

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

Поле ИНТЕРАКТИВНАЯ СПРАВКА

Поле НАИМЕНОВАНИЕ ПОЛУЧАТЕЛЯ

Поле ДАТА

Поле НАИМЕНОВАНИЕ БАНКА ПОЛУЧАТЕЛЯ

Группы кнопок для работы с датой СЕГОДНЯ, ПЛЮС ДЕНЬ, МИНУС ДЕНЬ

Поле Р/С ПОЛУЧАТЕЛЯ

Поле ВИД ОПЕРАЦИИ

Поле КОД БАНКА ПОЛУЧАТЕЛЯ

Поле ДАТА ПОЛУЧЕНИЯ ТОВАРА, ОКАЗАНИЯ УСЛУГ

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

Поле УНН ПОЛУЧАТЕЛЯ

Поле ВВЕДИТЕ СУММУ

Рис3.

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

Поле ВВЕДИТЕ НАЗНАЧЕНИЕ ПЛАТЕЖА

Радиокнопка для перехода формы в первоначальный режим ВЕРНУТЬСЯ К СОЗДАНИЮ ПЛАТЁЖКИ

Кнопка ВНЕСТИ ИЗМЕНЕНИЯ В СТАРУЮ ПЛАТЁЖКУ

Кнопка для просмотра прошлогодних пл. поручений ЗА ПРОШЛЫЙ ГОД

Кнопка ПЕЧАТЬ СТАРОГО ПЛАТЁЖНОГО ПОРУЧЕНИЯ

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

Кнопка для перехода в конец списка пл. поручений К КОНЦУ СПИСКА ПЛАТЁЖЕК

Поле для ввода номера пл. поручения к которому следует сделать переход

Кнопка для введённого номера пл. поручения к которому следует сделать переход ПЕРЕЙТИ ПО НОМЕРУ

Кнопка ВЫХОД

Кнопка ПРЕДОСМОТР

		Выпадающий список для выбора кол-ва копий для печати

Рис4.

При помощи кнопки  Отчёты происходит переход в форму отчётов. Форма отчётов имеет следующий вид:



Кнопка перехода в главную форму НАЗАД К ПЛАТЁЖКАМ

Двенадцать флажков на каждый месяцгода соответственно

Кнопка перехода в форму ПЛАТЕЛЬЩИКИ

Выпадающий список СПИСОК ПОЛУЧАТЕЛЕЙ

Выпадающий список СПИСОК ПЛАТЕЛЬЩИКОВ

Кнопка ЗА I-Й КВАРТАЛ для быстрого выделения флажков I-го квартала

Кнопка ЗА II -Й КВАРТАЛ Л для быстрого выделения флажков II-го квартала

Кнопка ЗА III-Й КВАРТАЛ для быстрого выделения флажков III-го квартала

Кнопка ЗА IV-Й КВАРТАЛ для быстрого выделения флажков IV-го квартала

Кнопка ЗА ГОД для быстрого выделения всех флажков года

Поле года отчёта

Кнопка ПЛЮС ГОД

Кнопка МИНУС ГОД

Кнопка сброс для снятия активизации со всех флажков месяцев

Скрытая кнопка удаления файлов отчёта. Кнопка появляется  если имеется хоть бы один файл со старыми  отчётами.

Справочное поле выдаёт информацию о выбранном для отчёта получателе и сформированном отчёте

Справочное поле выдаёт информацию о выбранном для отчёта плательщике

Поле РЕЗУЛЬТАТ. Сдесь выводятся итоговые данные.

Кнопка СФОРМИРОВАТЬ ОТЧЁТ

Кнопка ПРОСМОТР ОТЧЁТА

Кнопка ПЕЧАТЬ ОТЧЁТА

Кнопка СФОРМИРОВАТЬ ОТЧЁТ ПО ВСЕМ ПОЛУЧАТЕЛЯМ

Выпадающий список для выбора копий при печать отчёта

Поле ИНТЕРАКТИВНОЙ СПРАВКИ

Кнопка ВЫХОД

Рис5.



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



Кнопка перехода в главную форму НАЗАД К ПЛАТЁЖКАМ

Выпадающий список для выбора ПЛАТЕЛЬЩИКА

Поле НАИМЕНОВАНИЕ ПЛАТЕЛЬЩИКА

Поле НАИМЕНОВАНИЕ БАНКА ПЛАТЕЛЬЩИКА

Поле Р/С БАНКА ПЛАТЕЛЬЩИКА

Поле УНН ПЛАТЕЛЬЩИКА 

Поле КОД БАНКА ПЛАТЕЛЬЩИКА

Кнопка для активизации выбранного плательщика СДЕЛАТЬ ЭТОГО ПЛАТЕЛЬЩИКА ТЕКУЩИМ В П/П

Кнопка ДОБАВИТЬ ПЛАТЕЛЬЩИКА

Кнопка УДАЛИТЬ ПЛАТЕЛЬЩИКА

Кнопка ВНЕСТИ ИЗМЕНЕНИЯ В ДАННЫЕ О ПЛАТЕЛЬЩИКЕ

Рис 6.



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

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











Сумм2=0, Сумма = 0, Мас = 0, x1 = 5

   НАЧАЛО











Продолжение на стр. 13

Активизация Лист2 в выбранном для отчёта файле.









нет

  Len(Список) = 0



да











MsgBox "Вы не выбрали ни одного Получателя для отчёта"





				



  Январь = False And Февраль = False And Март = False _

  And Апрель = False And Май = False And Июнь = False _

  And Июль = False And Август = False And Сентябрь = False _

  And Октябрь = False And Ноябрь = False And Декабрь = False Then







да

нет

нет

нет

да

да                                                    

                                                                  



                                                         





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









MsgBox "Вы не выбрали ни одного месяца для отчёта"

XX = dhExtractString(SS, X, ".")







                           



  Do While Len(XX) > 0























  Len(XX) = 0                                                                                 









Exit Do







Продолжение на стр. 14









Windows("Платёжки" & ГодАктивПл).Activate

  N = Worksheets(PP).Cells(XX, 1)

  D = Worksheets(PP).Cells(XX, 8)

  S = Worksheets(PP).Cells(XX, 7)

  K = Worksheets(PP).Cells(XX, 12)

  R1 = Month(D) & Year(D)

















If (R1 = Пянварь & Год) Or (R1 = Пфевраль & Год) Or (R1 = Пмарт & Год) _

 Or (R1 = Папрель & Год) Or (R1 = Пмай & Год) Or (R1 = Пиюнь & Год) _

 Or (R1 = Пиюль & Год) Or (R1 = Павгуст & Год) Or (R1 = Псентябрь & Год) _

 Or (R1 = Поктябрь & Год) Or (R1 = Пноябрь & Год) Or (R1 = Пдекабрь & Год) Then









нет



да

















Сумма = Сумма + S

  Сумма2 = Сумма2 + 1

  Столбец

X = X + 1

Loop

















Windows("Платёжки" & ГодАктивПл).Activate

  Worksheets("Лист2").Range("a1") = Список

  Worksheets("Лист2").Range("b" & (Y + 2)) = "Итого:"

  Worksheets("Лист2").Range("c" & (Y + 2)) = Сумма

  Range("A3:I" & Y + 1).Select

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        

    End With

    With Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        

        

    End With

    With Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

       

        

    End With

    With Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        

        

    End With

    With Selection.Borders(xlInsideVertical)

        .LineStyle = xlContinuous

        

        

    End With

    'ActiveWorkbook.Save

    Range("A1").Select

  Мас = Сумма & " рублей."

  Просмотр.Enabled = True

  Печать.Enabled = True

  Счётчик.Enabled = True

  Windows("Клиенты" & ГодАктивПл).Activate

  Label4.Caption = "Отчёт по Получателю : " & Список _

  & ", Р/С: " & Worksheets(PP).Range("c" & Список.ListIndex + 1) _

  & ", Банк: " & Worksheets(PP).Range("b" & Список.ListIndex + 1) _

  & ", Код Банк: " & Worksheets(PP).Range("d" & Список.ListIndex + 1) _

  & "  сформирован." _

  & "  Всего было за выбранный период " & Сумма2 & " платёжек."

  Windows("Платёжки" & ГодАктивПл).Activate























конец







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 .

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

Изменяемость программы  можно осуществить только модернизируя ее , что не предоставляет достаточной  гибкости.





















 Литература



“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 < ComboBox1.ListCount + 1

    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 < ComboBox1.ListCount + 1

    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