Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Задачи дилера над ринком республіканських облигаций

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Якщо ж метою інвестування є максимізація доходу, причому термін інвестування не фіксований, тобто. невідомий період інвестування, Дилер стикається з двома суперечливими чинниками: дохідність і ліквідність. У зв’язку з цим виникають завдання оптимального управління портфелем облігацій. Методи, які застосовують Ділери, є їхньою власними розробками (ноу-хау). Існують безліч публікацій в… Читати ще >

Задачи дилера над ринком республіканських облигаций (реферат, курсова, диплом, контрольна)

Запровадження.

Глава 1. Функціонування ринку РКО.

Учасники ринку.

Процедура торгів.

Первинне розміщення (аукціон).

Побічні торги.

Погашення.

Документообіг.

Звіти, надані біржею.

Звіти, надані Дилерами.

Глава 2. Завдання Дилера над ринком РКО.

Ведення бек-офісу.

Оптимізація вкладень власні кошти.

Управління засобами інвесторів.

Виконання доручень Інвесторів.

Аналіз ефективності вкладень.

Глава 3. Завдання формування та ведення власної портфеля облігацій Дилера.

Формування портфеля облігацій.

Ліквідність портфеля.

Період інвестування.

Інвестування з єдиною метою максимізації доходу.

Безрисковое інвестування.

Аналіз ефективності вкладень коштів у РКО.

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

Метод рішення.

Економічна інтерпретація методу.

Економічна інтерпретація отриманих результатів.

Застосування результатів дослідження для побудови методів управління портфелем облігацій.

Укладання.

Список літератури.

Додатка.

Додаток № 1. Програма автоматизації обліку РКО.

Додаток 1.1. Керівництво користувача.

Додаток 1.2. Текст програми.

Додаток № 1.3. Журнал оборотів.

Додаток № 1.4. Журнал лицьового обліку.

Додаток № 1.5. Меморіальний ордер.

Додаток № 1.6. Звіт інвестору про скоєних угодах.

Додаток № 1.7. Структура пртфеля у межах з цінних паперів.

Додаток № 1.8. Структура портфеля узагальнена.

Додаток № 1.9. Біржова інформація.

Додаток № 1.10. Еженедельный звіт в депозитарій.

Додаток № 1.11. Щомісячний звіт в депозитарій.

Додаток № 2. Програма аналізу ефективності капіталовкладень у РКО.

Додаток 2.1. Текст програми.

Додаток № 2.2. Діаграма порівняння дохідності портфеля і ринку.

Додаток № 2.3. Діаграма порівняння індексу портфеля і ринку.

Додаток № 3. Вхідні статистичні дані.

Додаток 3.1. Інформації про паперах.

Додаток 3.2. Інформації про угодах.

Додаток 3.3. Інформації про рухах коштів.

Додаток 3.4. Біржова інформація.

Республіканські короткострокові бескупонные облігації (РКО) випускаються Міністерством Фінансів Республіки Татарстан. Ринок РКО існує з 1995 року. За 3 роки він став найважливішим сегментом економіки Татарстану, можна порівняти за обсягом запозичень з ринком міжбанківських кредитів і в іноземній валюты.

Гарантом надійності капіталовкладень у РКО є Уряд РТ. РКО — ліквідний і найдохідніший інструмент ринку. Дохідність по РКО вище, ніж у банківських вкладах і депозитним сертифікатам, і навіть державним цінних паперів. Маючи пільгове оподаткування, РКО є найпривабливішим вкладенням вільних фінансових ресурсов.

Вкладати кошти на РКО можуть як юридичні, і фізичні особи. Доход за цими облігаціями виходить з різниці між ціною купівлі й продажу, тобто. дисконт.

РКО звертаються до бездокументарній форми і враховуються записами за рахунками депо. Продаж і купівля виготовляють фондову біржу. У зв’язку з цим виникає завдання обліку операцій із РКО як з боку біржі, і із боку организаций-инвесторов.

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

У цьому дипломної роботі вирішуються дві задачи:

1. Автоматизація обліку операцій із РКО;

2. Оцінка ефективності капіталовкладень у РКО.

За підсумками результатів другий завдання можна зробити деякі висновки для оптимізації прийняття рішень при вкладанні в бескупонные облигации.

Глава 1. Функціонування ринку РКО.

Республіканські короткострокові облігації звертаються на Волжско-Камской біржі (ВКБ) через проведення електронних торгів. У функціонуванні ринку РКО можна виділити такі моменты:

1. Учасники рынка.

2. Процедура торгов.

3. Документооборот.

Учасники рынка.

Учасники ринку поділяються на дві категорії: Ділери і інвестори.

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

Інвестор — будь-яке юридичне чи фізична особа, яке уклало з Дилером договір брокерського обслуговування над ринком РКО. Інвестор може отримувати облігації лише крізь Дилерів, сплачуючи у своїй комиссию.

Процедура торгов.

У результаті торгів РКО проходять такі этапы:

* Первинне размещение;

* Побічні торги;

* Погашение.

Первинне розміщення (аукцион).

Аукціон — це первинне розміщення облігацій, проведеного Організатором (Комунальне підприємство «Дирекція роботи з цінними паперами », агент Міністерства фінансів РТ з обслуговування випусків облігацій) за дорученням Міністерства фінансів Республіки Татарстан. Вони проводяться за графіком. Дата аукціону, граничного обсягу випуску, місце й проведення аукціону з’являються Організатором. Контрагентами у цій процедурі є Міністерство Фінансів з одного боку, і Ділери — інший. У результаті аукціону Ділери подають заявки для придбання облігацій. Після подачі всіх заявок до встановленого часу, Міністерство Фінансів встановлює ціну відсікання — мінімальна ціна, яким він готовий продати облігації. Усі заявки, подані ціну відсікання, задовольняються, заявки, подані з ціною, не удовлетворяются.

Побічні торги.

Звернення облігацій на вторинних торгах здійснено у формі угод купівлі-продажу через Торговельну систему (організація, уповноважена виходячи з договору з фінансів РТ і обопільних умов з Дилерами забезпечувати процедуру укладання угод купівлі-продажу шляхом надання технічних засобів). Контрагентами у цій процедурі виступають Ділери. Ділери вводять у Торговельну систему у вигляді робочих терміналів заявки для придбання чи продаж облігацій. Якщо ціни заявок збігаються, всі вони задовольняються, тобто. угода вважається совершенной.

Погашение.

Погашення облігацій виробляється у певний день Міністерством Фінансів за номінальною стоимости.

Документооборот.

РКО звертаються до електронній формі. Облік із них ведеться у вигляді записів на рахунках депо, відкритих в Волжско-Камской трастової компанії (ВКТК). У зв’язку з цим постає запитання відображення обліку операцій на документальної формі. У результаті звернення РКО варто виокремити такі типи документов:

* Звіти, надані биржей;

* Звіти, надані Дилерами.

Звіти, надані биржей.

Після закінчення торгів біржа надає кожному Дилеру такі документы:

* Біржова информация;

* Виписка з протоколу торгов;

* Зобов’язання Дилера за підсумками торгов;

* Виписка з сделок.

Звіти, надані Дилерами.

У процесі участі у торгах Ділери зобов’язані надавати такі документи бирже:

* Еженедельный отчет;

* Щомісячний отчет;

* Інші документи, необхідних допуску Дилера до торгам.

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

Глава 2. Завдання Дилера над ринком РКО.

Будучи активний учасник ринку РКО, Дилер має з такими задачами:

1. Ведення бэк-офиса;

2. Оптимізація вкладень власних средств;

3. Управління засобами Инвесторов;

4. Виконання доручень Инвесторов;

5. Аналіз ефективності вложений.

Ведення бэк-офиса.

Бэк-офис — система електронного обліку операцій із цінними паперами. Він містить у собі дуже широкий, спектр функціональних вопросов:

* Ведення журналу лицьового обліку, і журналу оборотів (Додаток № 1.3, 1.4);

* Формування й печатку меморіальних ордерів (Додаток № 1.5);

* Формування й печатку звітів Інвесторам (Додаток № 1.6);

* Формування й печатку власного портфеля Дилера (Додаток № 1.7, 1.8);

* Формування й печатку біржовий інформації (Додаток № 1.9);

* Формування й печатку щотижневого і щомісячного звітів (Додаток № 1.10, 1.11).

Усі перелічені завдання реалізовані у програмі автоматизованого обліку операцій із РКО.

Оптимізація вкладень власних средств.

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

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

* Ликвидность;

* «Час життя » ;

* Одержання найбільшого дохода;

* Використання РКО в заставних операціях щоб одержати міжбанківських кредитов.

Управління засобами инвесторов.

Дилер може сам управляти засобами Інвесторів, якщо уклали договір трастового обслуговування. Заодно він може брати комісію і з окремої угоди, і на прибуток, отриманого Інвестором. У разі попереду стоїть завдання оптимального управління портфелем Інвестора і - оцінка ефективності діяльності Дилера.

Виконання доручень Инвесторов.

Дилер, будучи ще й брокером над ринком РКО, робить операції купівлі-продажу від імені, але з дорученням Інвестора і її рахунок. І тут Дилер слід провадити облік прийому заявок Інвесторів, виконання доручень біржі процес формування звітів. За які ці послуги то здобуває комісійне вознаграждение.

Аналіз ефективності вложений.

Це завдання є одним із найскладніших і необхідних. Визначення методу аналізу — нетривіальна завдання. У Главі 3 розглянуті дві методики аналізу ефективності вкладень власні кошти в облигации.

Глава 3. Завдання формування та ведення власної.

портфеля облігацій Дилера.

У процесі управління портфелем облігацій Дилер ставить собі такі задачи:

* формування портфеля облигаций;

* аналіз ефективності вкладень грошових средств.

Формування портфеля облигаций.

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

Специфікою портфеля, що складається з РКО, можуть бути такі моменты:

* ліквідність портфеля;

* період инвестирования;

* інвестування із єдиною метою максимізації дохода;

* безрисковое инвестирование.

Ліквідність портфеля.

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

Період инвестирования.

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

Інвестування із єдиною метою максимізації дохода.

Якщо ж метою інвестування є максимізація доходу, причому термін інвестування не фіксований, тобто. невідомий період інвестування, Дилер стикається з двома суперечливими чинниками: дохідність і ліквідність. У зв’язку з цим виникають завдання оптимального управління портфелем облігацій. Методи, які застосовують Ділери, є їхньою власними розробками (ноу-хау). Існують безліч публікацій в фінансово-економічної літератури з оптимізації капіталовкладень у бескупонные облігації, але запропоновані методи або містять невірні передумови при побудові методу оптимізації, або містять спрощення, після чого модель стає неприйнятна практично.

Безрисковое инвестирование.

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

Аналіз ефективності вкладень коштів у РКО.

Постановка задачи.

Аналіз ефективності вкладення грошових в РКО можна розділити на аналіз внутрішнього управління портфелем облігацій і внешнего.

Внутрішнє управління — це оцінка зміни індексу портфеля тоді як індексом рынка.

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

Отже, виникає завдання порівняння управління портфелем облігацій щодо ринку через побудову деякого показника, який адекватно відбивав б динаміку зміни портфеля тоді як динамікою зміни рынка.

Метод решения.

Пропонуються методики на вирішення поставлених завдань через побудову наступних показателей:

1. Індекс портфеля і ринку (з оцінки внутрішнього управления).

Індекс будується наступним образом.

Для портфеля:

(1).

(1.1).

(1.2).

где:

значення індексу в останній момент t.

коэффициент.

вартість портфеля по средневзвешенным цінами на даний момент закриття торгів момент t.

сума додаткових вкладень (витягів) коштів у портфель в останній момент t, причому, если.

додаткові вложения.

сума вилучених денег.

середньозважена ціна і серії на даний момент закриття торгов.

кількість паперів і серії в портфеле.

кількість серій паперів, обертаються на рынке.

Для ринку при розрахунку коефіцієнта і перемінні матимуть наступний смысл:

обсяг капіталізації ринку з средневзвешенным цінами на даний момент t.

сума розміщених (погашених) коштів у аукционе.

сума розміщених коштів у аукционе.

сума погашених коштів у аукционе.

кількість паперів і серії, обертаються на рынке.

Цей індекс показує, наскільки ефективніше було внутрішнє управління портфелем проти ринкової конъюктурой. Причому, якщо індекс портфеля менше індексу ринку, то управління було неэффективным.

2. Ефективна норма дохідності до погашення портфеля і ринку (з оцінки зовнішнього управления).

Показник будується наступним образом (2 метода):

Теоретично розрахунку застосовується наступний метод:

(2).

где:

(2.1).

сума і витратного платежа.

сума і дохідного платежа.

кількість днів між і видатковими і дохідним платежами.

ефективна норма дохідності, що й визначається з вирішення даного уравнения.

кількість видаткових і дохідних платежей.

Рівняння (2) вирішується численними методами, причому рішення єдино.

Через незручності рішення рівняння практично зазвичай застосовують інший метод перебування :

(2.2).

где:

дохідність до погашення і бумаги.

кількість і бумаги.

днів до погашення і бумаги.

розраховується наступним образом:

(2.3).

где:

ціна купівлі і паперу на % від номіналу (видатковий платеж).

ціна погашення % від номіналу (дохідний платеж).

кількість днів, у году.

днів до погашення і бумаги.

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

Економічна інтерпретація метода.

Аналіз з допомогою методики побудови індексу портфеля і ринку включає у собі такі моменты:

Індекс побудований в такий спосіб, що він адекватно відбиває управління портфелем і поведінку рынка.

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

З іншого боку, можна оцінити поведінка ринку РКО тоді як іншими ринками. Методика порівняння може бути різною та його побудова потребує врахування специфіки різних рынков.

Другий вид аналізу — обчислення ефективної норми дохідності портфеля і рынка.

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

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

Економічна інтерпретація отриманих результатов.

У цьому роботі рівнявсь портфель РКО банку і ринок РКО в лютому до травня місяць 1997 року.

При аналізі через побудову індексу виявили таке. Графік, побудований з урахуванням індексу ринку (Додаток № 2.3), має позитивний нахил. Це пов’язано з тим, що у той час мав тенденцію до їх зниження дохідності, тому, індекс, який відбиває дохідність придбання, збільшувався. У наведеному прикладі, заснованому на реальних даних, внутрішнє управління портфелем було ефективним проти ринком на початок травня месяца.

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

Застосування результатів дослідження для побудови методів управління портфелем облигаций.

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

Для побудови методик управління портфелем облігацій необхідно враховувати следующее:

1) управління заборгувало давати максимальний эффект;

2) під управлінням потрібно враховувати можливість вводу-виводу грошових средств;

3) необхідність спроби прогнозування ситуації за зміни ринкової конъюнктуры;

4) управління портфелем з погляду як дохідності, і ликвидности;

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

Друге завдання, якою можна вирішити з урахуванням отриманих результатів — це завдання довірчого управління (траст). Базуючись на результатах, можна запропонувати таку схему стягування плати траст із боку управляючого з клієнта. Порівнюється індекс ринку України і індекс портфеля облігацій, що у трасті. Що стосується, якщо індекс портфеля перевершує індекс ринку, то додатковий прибуток, получающийся з більш управління портфелем облігацій, ділиться у певному пропорції між управляючим і клієнтом. Інший варіант: управляючий гарантує клієнту певні проценти, а плата управляючому розраховується за певної методиці з гарантованого прибутку і доходу, отриманого свыше.

Заключение

.

Діяльність вирішені такі ключові моменти, необхідних роботи з Республіканськими короткостроковими бескупонными облігаціями (РКО):

* Автоматизація обліку операцій із РКО.

* Оцінка ефективності капіталовкладень у РКО.

* Описано функціонування ринку РКО, поставлено завдання, які вирішує Дилер на рынке.

Рішенням завдання автоматизації операцій із РКО є програмний продукт, написаний на Visual Basic for Microsoft Excel, що дозволяє вести повний документообіг Дилера над ринком РКО. Результатами автоматизації є стандартизованные вихідні форми, необхідних ведення бухгалтерського обліку РКО та обсягів надання різних отчетов.

За позитивного рішення завдання оцінки ефективності капіталовкладень у РКО застосовувалися статті, містять інформацію про різних методиках розрахунку дохідності облігацій. Результатом вирішення даної задачі є розробка власної методики аналізу. Методика перевірено на реальних про чисельні даних за певного періоду функціонування ринку РКО. Кінцевим продуктом методу є програма, написана на Visual Basic for Microsoft Excel, що дозволяє робити аналіз ефективності управління портфелем облігацій. Наведений метод аналізу теж можна застосувати надалі для побудови методів управління портфелем облигаций.

Обидві поставлені завдання впроваджені й закони використовують на практике.

1. Башарин Г. П. «Почала фінансової математики» Москва, «ИНФРА-М» 1997 г.

2. Бродський У., Горлин Ю. «Модель дійсною дохідності ДКО клієнтам» журнал «Ринок цінних паперів» № 1 1994 г.

3. Вєтров А. «Як побудувати агрегированные показники дохідності ринку ГКО/ОФЗ» журнал «Ринок цінних паперів» № 5 1996 г.

4. Горєлов М. «Побудова оптимального портфеля ДКО: як максимізувати прибуток» журнал «Ринок цінних паперів» № 6 1996 г.

5. Горєлов М., Никіфоров Л. «Про межах застосовності принципу ринкового моменту» журнал «Ринок цінних паперів» № 16 1996 г.

6. Горєлов М. «Що не можна упускати при побудові моделі управління портфелем ДКО» журнал «Ринок цінних паперів» № 11 1996 г.

7. Горлин Ю. «Оцінка дохідності операцій із ДКО: вырианты біржовий гри» журнал «Ринок цінних паперів» № 6 1994 г.

8. Грядовая Про. «Дохідність як критерій оптимізації рішень щодо управлінню портфелем ДКО» журнал «Ринок цінних паперів» № 15 1994 г.

9. Губерниев У. «ДКО в оптимальному портфелі» журнал «Ринок цінних паперів» № 15 1996 г.

10. Демушкина Є. «Операції з державними цінними паперами» журнал «Ринок цінних паперів» № 23 1996 г.

11. Екушов А. «Як перевищити середню дохідність ринку ДКО» журнал «Ринок цінних паперів» № 11 1997 г.

12. Ивахин А. «Як долати обмеження в моделюванні ринку ДКО» журнал «Ринок цінних паперів» № 12 1996 г.

13. Комягин В. Б. «Програмування в Excel 5 і Excel 7 мовою Visual Basic» Москва, «Радіо і зв’язок» 1996 г.

14. Кузнєцов М., Нифатов П. «Грошовий потік і торгових операцій над ринком ДКО» журнал «Ринок цінних паперів» № 4 1996 г.

15. Мєшкова М. Кулакова Ю. «Прогнозування тренду ціни ДКО» журнал «Ринок цінних паперів» № 6 1996 г.

16. Міхєєв А. «Граємо на позикові кошти» журнал «Ринок цінних паперів» № 3 1997 г.

17. Остроушко Про., Гришин Про. «Дохідність і дюрация портфеля ДКО» журнал «Ринок цінних паперів» № 5 1996г.

18. Положення про обслуговуванні й жорстоке поводження випусків РКО РТ (утверждено постанови Кабінету Міністрів РТ від 21 квітня 1995 р. № 238).

19. «Потоки платежей, виды облігацій і обчислення дохідності» Москва «Консультаційне агентство «Соболєв» 1996 г.

20. «Ринок цінних паперів» підручник під ред. Галанова В. А., Басова А.І. Москва «Фінанси і статистика» 1996 г.

21. Суменкова Є.В. «Операції із цінними паперами» Москва «Перспектива» 1997 г.

22. Ушаков П. «Про взаємозв'язках індикаторів ринку ДКО» журнал «Ринок цінних паперів» № 3 1997 г.

23. Черкасов В.Є. «Практичне посібник з фінансово-економічним розрахунках» Москва «Метаинформ» 1995 г.

24. Черновский А. «Як оцінити эффективноть управління портфелем ДКО» журнал «Ринок цінних паперів» № 24 1996 г.

25. Четыркин Є. «Методи фінансових і численних комерційних расчетов».

Приложения.

Додаток № 1. Програма автоматизації обліку РКО.

Додаток 1.1. Керівництво пользователя.

Ця програма написана на Microsoft Visual Basic for Excel. Для запуску програми необхідно відкрити файл sprav. xls в Excel, після чого лінійці меню з’явиться додатковий пункт меню «Довідник», що з наступних разделов:

Дата.

Перегляд остатков.

Печать.

Депозитарий.

Портфель.

Біржова информация.

Звіти клиентам.

Звіт недельный.

Звіт месячный.

Журнал лицьового учета.

Окно.

Бумаги.

Сделки.

Клиенты.

Биржа.

Розглянемо докладніше кожна з пунктів меню.

Дата — зміна дати для работы.

Перегляд залишків — перегляд залишків по Клиентам.

Печатка — роздруківка на принтер наступних данных:

Депозитарій — печатку депозитария.

Портфель — печатку власного портфеля Дилера.

Біржова інформація — печатку біржовий информации.

Звіти клієнтам — печатку звітів Клиентам.

Звіт тижневий — печатку щотижневого звіту, наданого в депозитарий.

Звіт місячний — печатку щомісячного звіту, наданого в депозитарий.

Журнал лицьового обліку — печатку журналу лицьового обліку, і журналу оборотів Дилера.

Вікно — вибір наступних вікон для введення информации:

Папери — вибір вікна введення інформацію про обертаються над ринком бумагах.

Угоди — вибір вікна введення сделок.

Клієнти — вибір вікна введення Клиентов.

Біржа — вибір вікна введення біржовий информации.

Результатом роботи програми є Додатка № 1.3−1.12.

Додаток 1.2. Текст программы.

Option Explicit.

Option Base 1.

Public CurDate As Date.

Public DepoArray () As Integer.

Public BumArray (); BumArrayV () As Integer.

Public Button; Перегляд; ExitVar; Купівля; Продаж; Погашення As Boolean.

Const DilerConst = 1 000 900 000.

Const FilialConst = 1 000 999 999.

Const ConstMaxBum = 100 «максимальне у бумаг (выпусков).

Const MaxCount = 1000 «максимальне у угод з 1-ой бумаге.

Const S192 = «50 202 «.

Const S904 = «47 423 «.

Const S960 = «70 102 «.

Const S970 = «70 204 «.

Const SR970 = «70 204 «.

Sub Auto_Open ().

ActiveWindow.WindowState = xlMaximized.

CurDate = Date.

Worksheets («Брешемо »).Cells (1; 4) = CurDate.

Application.OnWindow = «CancelChanges «.

Application.Windows («Sprav.xls »).OnWindow = «Start «.

End Sub.

Sub Auto_Close ().

MenuBars (xlModule).Reset.

MenuBars (xlWorksheet).Reset.

Application.OnWindow = ««.

Application.Windows («Sprav.xls »).OnWindow = ««.

ActiveWorkbook.Save.

End Sub.

Sub Start ().

Call CreateMenu.

Application.DisplayFullScreen = False.

ActiveWindow.WindowState = xlMaximized.

CurDate = Date.

Worksheets («Брешемо »).Cells (1; 4) = CurDate.

End Sub.

Sub CancelChanges ().

MenuBars (xlModule).Reset.

MenuBars (xlWorksheet).Reset.

End Sub.

Sub CreateMenu ().

MenuBars (xlModule).Reset.

MenuBars (xlWorksheet).Reset.

With MenuBars (xlModule).Menus.Add («&Довідник »).

.MenuItems.Add «&Дата »; «DateChange «.

.MenuItems.Add «П&росмотр залишків »; «PrintOst «.

.MenuItems.AddMenu («&Печатка »).

.MenuItems («&Печатка »).MenuItems.Add «&Депозитарій »; «PrintDepo «.

.MenuItems («&Печатка »).MenuItems.Add «&Портфель »; «PrintPortfel «.

.MenuItems («&Печатка »).MenuItems.Add «&Біржова інформація »; «PrintBirgaInfo «.

.MenuItems («&Печатка »).MenuItems.Add «Звіти &клієнтам »; «PrintOtchClient «.

.MenuItems («&Печатка »).MenuItems.Add «Звіт &тижневий »; «PrintOtchWeek «.

.MenuItems («&Печатка »).MenuItems.Add «Звіт &місячний »; «PrintOtchMonth «.

.MenuItems («&Печатка »).MenuItems.Add «Журнал &лицьового обліку »; «PrintMagazine «.

.MenuItems.AddMenu («&Вікно »).

.MenuItems («&Вікно »).MenuItems.Add «&Папери »; «ViewPaper «.

.MenuItems («&Вікно »).MenuItems.Add «&Угоди »; «ViewDeal «.

.MenuItems («&Вікно »).MenuItems.Add «&Клієнти »; «ViewClient «.

.MenuItems («&Вікно »).MenuItems.Add «Би&ржа »; «ViewBirga «.

.MenuItems («&Вікно »).MenuItems.Add «&Залишки 812 »; «ViewOst812 «.

.MenuItems («&Вікно »).MenuItems.Add «О&статки біржа »; «ViewOstBirga «.

.MenuItems («&Вікно »).MenuItems.Add «&Захист »; «ViewProgram «.

End With.

With MenuBars (xlWorksheet).Menus.Add («&Довідник »).

.MenuItems.Add «&Дата »; «DateChange «.

.MenuItems.Add «П&росмотр залишків »; «PrintOst «.

.MenuItems.AddMenu («&Печатка »).

.MenuItems («&Печатка »).MenuItems.Add «&Депозитарій »; «PrintDepo «.

.MenuItems («&Печатка »).MenuItems.Add «&Портфель »; «PrintPortfel «.

.MenuItems («&Печатка »).MenuItems.Add «&Біржова інформація »; «PrintBirgaInfo «.

.MenuItems («&Печатка »).MenuItems.Add «Звіти &клієнтам »; «PrintOtchClient «.

.MenuItems («&Печатка »).MenuItems.Add «Звіт &тижневий »; «PrintOtchWeek «.

.MenuItems («&Печатка »).MenuItems.Add «Звіт &місячний »; «PrintOtchMonth «.

.MenuItems («&Печатка »).MenuItems.Add «Журнал &лицьового обліку »; «PrintMagazine «.

.MenuItems.AddMenu («&Вікно »).

.MenuItems («&Вікно »).MenuItems.Add «&Папери »; «ViewPaper «.

.MenuItems («&Вікно »).MenuItems.Add «&Угоди »; «ViewDeal «.

.MenuItems («&Вікно »).MenuItems.Add «&Клієнти »; «ViewClient «.

.MenuItems («&Вікно »).MenuItems.Add «Би&ржа »; «ViewBirga «.

.MenuItems («&Вікно »).MenuItems.Add «&Залишки 812 »; «ViewOst812 «.

.MenuItems («&Вікно »).MenuItems.Add «О&статки біржа »; «ViewOstBirga «.

.MenuItems («&Вікно »).MenuItems.Add «&Захист »; «ViewProgram «.

End With.

End Sub.

Sub ViewPaper ().

Sheets («Папери »).Select.

Call EndOf.

End Sub.

Sub ViewDeal ().

Sheets («Угоди »).Select.

Call EndOf.

End Sub.

Sub ViewClient ().

Sheets («Клієнти »).Select.

Call EndOf.

End Sub.

Sub ViewBirga ().

Sheets («Біржа »).Select.

Call EndOf.

End Sub.

Sub ViewOst812().

Sheets («Остатки812 »).Select.

Call EndOf.

End Sub.

Sub ViewOstBirga ().

Sheets («ОстаткиБиржа »).Select.

Call EndOf.

End Sub.

Sub ViewProgram ().

Sheets («Захист »).Select.

End Sub.

" ——————————————— Печатка Депозитарію ———————;

Sub PrintDepo ().

Dim BumNum; CliNum; і; j; k; a; n; Sign; p. s As Integer.

Dim Flag As Boolean.

Dim Code As Long.

Dim Str As String.

Dim DepoFil () As Integer.

Dim Num As Integer.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

Call FormBum.

Sheets («Депо »).Select.

BumNum = Worksheets («Брешемо »).Cells (1; 2).

Cells (3; 5) = Worksheets («Брешемо »).Cells (1; 4).

Cells (3; 5).NumberFormat = «Д ММММ, ГГГГ «.

Cells (3; 5).HorizontalAlignment = xlCenterAcrossSelection.

Cells (3; 5).Font.Bold = True.

Num = 9.

For і = 1 To BumNum.

Cells (6; і + 1) = Worksheets («Брешемо »).Cells (i; 1).

Cells (6; і + 1).Font.Bold = True.

Cells (6; і + 1).Interior.ColorIndex = 40.

Cells (Num + 1; і + 1).Interior.ColorIndex = 15.

Cells (Num + 1; і + 1) = ««.

Cells (Num; і + 1).Interior.ColorIndex = 40.

Cells (Num; і + 1) = ««.

Cells (5; і + 1).Interior.ColorIndex = 40.

Next.

Cells (Num; 1).Interior.ColorIndex = 40.

Cells (Num; 1) = «Разом «.

Cells (Num; 1).Font.Bold = True.

Cells (Num; 1).Font.Italic = True.

Cells (Num; 1).HorizontalAlignment = xlCenter.

Cells (Num + 1; 1) = ««.

Cells (Num + 1; 1).Interior.ColorIndex = 15.

CliNum = Worksheets («Брешемо »).Cells (1; 3).

ReDim DepoArray (CliNum; BumNum).

ReDim DepoFil (BumNum).

a = 2.

While Worksheets («Угоди »).Cells (a; 1) Empty.

і = 1.

While Worksheets («Клієнти »).Cells (i + 1; 2) _.

Worksheets («Угоди »).Cells (a; 2).

If Worksheets («Клієнти »).Cells (i + 1; 2) = Empty Then.

MsgBox «Зрадливий номер клієнти на Вікні «Угоди «рядок: «+ CStr (a).

Sheets («Угоди »).Select.

Cells (a; 2).Select.

Exit Sub.

End If.

і = і + 1.

Wend.

k = 0.

For j = 1 To BumNum.

If Worksheets («Брешемо »).Cells (j; 1) = Worksheets («Угоди »).Cells (a; 3) Then.

k = j.

Exit For.

End If.

Next.

If k = 0 Then.

a = a + 1.

GoTo NNN.

End If.

If Not IsEmpty (Worksheets («Угоди »).Cells (a; 4)) Then.

Sign = 1.

Else.

Sign = -1.

End If.

If CurDate >= Worksheets («Угоди »).Cells (a; 1) Then.

If Worksheets («Угоди »).Cells (a; 2) = FilialConst Then.

DepoFil (k) = DepoFil (k) + Sign * Worksheets («Угоди »).Cells (a; 6).

Else.

DepoArray (i; k) = DepoArray (i; k) + Sign * Worksheets («Угоди »).Cells (a; 6).

End If.

End If.

a = a + 1.

NNN:

Wend.

n = 7.

For і = 1 To CliNum.

Flag = False.

For k = 1 To BumNum.

If DepoArray (i; k) > 0 Then Flag = True.

Next.

If Flag Then.

Str = Format (Worksheets («Клієнти »).Cells (i + 1; 2); «0 »).

Str = Right (Str; 5).

Cells (n; 1).NumberFormat = «@ «.

Cells (n; 1).Font.Bold = True.

Cells (n; 1).HorizontalAlignment = xlCenter.

Cells (n; 1).Font.Italic = False.

Cells (n; 1).Interior.ColorIndex = 2.

Cells (n; 1) = Str.

For k = 1 To BumNum.

If DepoArray (i; k) 0 Then.

Cells (n; k + 1) = DepoArray (i; k).

Else.

Cells (n; k + 1) = ««.

End If.

Cells (n; k + 1).Font.Bold = False.

Cells (n; k + 1).Font.Italic = False.

Cells (n; k + 1).Interior.ColorIndex = 2.

Next.

If n = 7 Then.

n = n + 4.

Else.

n = n + 1.

End If.

End If.

Next.

" розрахунок по филиалу.

Cells (8; 1) = «Філія «.

Cells (8; 1).Font.Bold = True.

Cells (8; 1).HorizontalAlignment = xlCenter.

Cells (8; 1).Font.Italic = False.

Cells (8; 1).Interior.ColorIndex = 2.

For k = 1 To BumNum.

If DepoFil (k) 0 Then.

Cells (8; k + 1) = DepoFil (k).

Else.

Cells (8; k + 1) = ««.

End If.

Cells (8; k + 1).Font.Bold = False.

Cells (8; k + 1).Font.Italic = False.

Cells (8; k + 1).Interior.ColorIndex = 2.

Next.

For і = 1 To BumNum.

Cells (n; і + 1).Interior.ColorIndex = 40.

p.s = 0.

For k = 11 To n — 1.

p.s = p. s + Cells (k; і + 1).

Next.

Cells (n; і + 1).Value = s.

Next.

For і = 1 To BumNum.

Cells (9; і + 1) = Cells (7; і + 1) + Cells (8; і + 1).

Next.

Cells (n; 1).Interior.ColorIndex = 40.

Cells (n; 1) = «Разом 9998 «.

Cells (n; 1).Font.Bold = True.

Cells (n; 1).Font.Italic = True.

Range («A1:Z200 »).Borders (xlLeft).LineStyle = xlNone.

Range («A1:Z200 »).Borders (xlRight).LineStyle = xlNone.

Range («A1:Z200 »).Borders (xlTop).LineStyle = xlNone.

Range («A1:Z200 »).Borders (xlBottom).LineStyle = xlNone.

Range («A1:Z200 »).BorderAround LineStyle:=xlNone.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlLeft).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlRight).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlTop).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlBottom).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).BorderAround Weight:=xlMedium.

Range (Cells (n + 1; 1); Cells (100; 30)).Delete shift:=xlToLeft.

Range (Cells (1; BumNum + 2); Cells (100; 30)).Delete shift:=xlToLeft.

If DialogPrint («Депо »; 1) Then Exit Sub.

Call EditOstBirga (DilerConst).

End Sub.

" ———————————————— Печатка Звіти клієнтам —————;

Sub PrintOtchClient ().

Dim Sheet; Ost812 As Object.

Dim і; j; d; a; Col; m; MM; NN; MMM; k; b; q As Long.

Dim FlagBuy; FlagCell; FlagDeal; FlagDepo As Boolean.

Dim CliNum As Long.

Dim ComStr; StrComS As String.

Dim BumNum; z; z1; Index As Integer.

Dim p. s; sum; SumBuy; Ost; SumCom; ComBirga; ComDiler; ComSum As Double.

Dim Com As Double.

Dim OstIn; OstOut; OstBegin; OstEnd As Double.

Dim RowNum As Long.

Dim OstInDate; OstOutDate As String.

Dim DoFlag As Boolean.

Dim Auk As Boolean.

Set Sheet = Worksheets («Угоди »).

Sheet.Range («A2 »).Sort Key1:=Sheet.Range («A2 »); Order1:=xlAscending; _.

Key2:=Sheet.Range («B2 »); Order2:=xlAscending; _.

Key3:=Sheet.Range («D2 »); Order3:=xlAscending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

Worksheets («ОтчетыИнвесторам »).Select.

і = 2.

FlagDeal = False.

FlagBuy = True.

FlagCell = True.

NN = 29 «начало.

m = NN.

Range (Cells (NN — 1; 2); Cells (NN + 200; 6)).Delete shift:=xlToLeft.

Rows (CStr (NN — 1) + ": «+ CStr (NN — 1)).RowHeight = 28.

Rows (CStr (NN — 1) + ": «+ CStr (NN — 1)).WrapText = True.

Rows (CStr (NN — 1) + ": «+ CStr (NN — 1)).HorizontalAlignment = xlCenter.

Rows (CStr (NN — 1) + ": «+ CStr (NN — 1)).VerticalAlignment = xlBottom.

Cells (NN — 1; 2) = «№ випуску «.

Cells (NN — 1; 3) = «Дата погашення «.

Cells (NN — 1; 4) = «Ціна угоди «.

Cells (NN — 1; 5) = «Кількість «.

Cells (NN — 1; 6) = «Сума угоди «.

Cells (NN — 3; 3) = «Досконалі угоди над ринком РКО «.

Cells (NN — 3; 3).Font.Bold = True.

sum = 0.

SumBuy = 0.

SumCom = 0.

ComBirga = 0.

Call FormBum.

BumNum = Worksheets («Брешемо »).Cells (1; 2).

ReDim BumArray (BumNum).

ReDim BumArrayV (BumNum).

Index = CInt (InputBox («Запровадьте номер 1-го ордера »)).

Do While Sheet. Cells (i; 1) Empty.

If Sheet. Cells (i; 1) = CurDate And Sheet. Cells (i; 2) DilerConst Then.

FlagDeal = True.

If FlagBuy And Sheet. Cells (i; 4) Empty Then.

Купівля = True.

CliNum = Sheet. Cells (i; 2).

Cells (m; 2) = «Купівля «.

Cells (m; 2).HorizontalAlignment = xlLeft.

Range (Cells (m; 2); Cells (m; 6)).Interior.ColorIndex = 15.

m = m + 1.

MM = m.

FlagBuy = False.

End If.

If FlagCell And Sheet. Cells (i; 4) = Empty Then.

If Not FlagBuy Then.

p.s = 0.

Col = 0.

SumCom = 0.

ComBirga = 0.

For a = MM To m — 1.

Cells (a; 6) = Cells (a; 4) * Cells (a; 5) * 10.

If Cells (a; 4) 100 Then.

SumCom = SumCom + Cells (a; 4) * Cells (a; 5) * 10.

ComBirga = ComBirga + _.

CDbl (Format (Cells (a; 4) * Cells (a; 5) * 0,1 * Worksheets («Інфо »).Cells (1; 2) + 0,001; «0,00 »)).

Else.

Погашення = True.

End If.

Cells (a; 6).NumberFormat = «# ### «.

p.s = p. s + Cells (a; 6).

Col = Col + Cells (a; 5).

Next a.

sum = sum + s.

SumBuy = s.

Cells (m; 6) = s.

Cells (m; 6).NumberFormat = «# ### «.

Cells (m; 5) = Col.

Cells (m; 2) = «Разом «.

m = m + 1.

End If.

CliNum = Sheet. Cells (i; 2).

Cells (m; 2) = «Продаж «.

Продаж = True.

Cells (m; 2).HorizontalAlignment = xlLeft.

Range (Cells (m; 2); Cells (m; 6)).Interior.ColorIndex = 15.

m = m + 1.

MM = m.

FlagCell = False.

End If.

Cells (m; 2) = Sheet. Cells (i; 3).

q = 2.

While Worksheets («Папери »).Cells (q; 1) Empty.

If Worksheets («Папери »).Cells (q; 1) = Cells (m; 2) Then.

Cells (m; 3) = Worksheets («Папери »).Cells (q; 3).

Cells (m; 3).NumberFormat = «ДД.ММ.ГГ «.

End If.

q = q + 1.

Wend.

If Sheet. Cells (i; 4) Empty Then.

Cells (m; 4) = Sheet. Cells (i; 4).

Else.

Cells (m; 4) = Sheet. Cells (i; 5).

End If.

Cells (m; 4).NumberFormat = «0,00 «.

Cells (m; 5) = Sheet. Cells (i; 6).

m = m + 1.

If CliNum Sheet. Cells (i + 1; 2) Or Sheet. Cells (i + 1; 1) CurDate Then.

p.s = 0.

Col = 0.

For a = MM To m — 1.

Cells (a; 6) = Cells (a; 4) * Cells (a; 5) * 10.

If Cells (a; 4) 100 Then.

SumCom = SumCom + Cells (a; 4) * Cells (a; 5) * 10.

ComBirga = ComBirga + _.

CDbl (Format (Cells (a; 4) * Cells (a; 5) * 0,1 * Worksheets («Інфо »).Cells (1; 2) + 0,001; «0,00 »)).

Else.

Погашення = True.

End If.

Cells (a; 6).NumberFormat = «# ###, 00 «.

p.s = p. s + Cells (a; 6).

Col = Col + Cells (a; 5).

Next a.

sum = sum + s.

If FlagCell Then SumBuy = s.

Cells (m; 6) = s.

Cells (m; 6).NumberFormat = «# ###, 00 «.

Cells (m; 5) = Col.

Cells (m; 2) = «Разом «.

Cells (5; 4) = CliNum.

If CliNum = FilialConst Then Cells (5; 4) = DilerConst.

k = 2.

While Worksheets («Клієнти »).Cells (k; 1) Empty.

If Worksheets («Клієнти »).Cells (k; 2) = CliNum Then.

Cells (4; 4) = Worksheets («Клієнти »).Cells (k; 1).

End If.

k = k + 1.

Wend.

Range (Cells (NN — 1; 2); Cells (m; 6)).Borders (xlLeft).Weight = xlThin.

Range (Cells (NN — 1; 2); Cells (m; 6)).Borders (xlRight).Weight = xlThin.

Range (Cells (NN — 1; 2); Cells (m; 6)).Borders (xlTop).Weight = xlThin.

Range (Cells (NN — 1; 2); Cells (m; 6)).Borders (xlBottom).Weight = xlThin.

Range (Cells (NN — 1; 2); Cells (m; 6)).BorderAround Weight:=xlMedium.

For b = 1 To BumNum.

BumArray (b) = 0.

BumArrayV (b) = 0.

Next.

b = 2.

While Worksheets («Угоди »).Cells (b; 1) Empty.

If CurDate >= Worksheets («Угоди »).Cells (b; 1) And _.

CliNum = Worksheets («Угоди »).Cells (b; 2) Then.

z = 0.

For z1 = 1 To BumNum.

If Worksheets («Брешемо »).Cells (z1; 1) = Worksheets («Угоди »).Cells (b; 3) Then.

z = z1.

Exit For.

End If.

Next.

If z 0 Then.

If Not IsEmpty (Worksheets («Угоди »).Cells (b; 4)) Then.

If CurDate > Worksheets («Угоди »).Cells (b; 1) Then.

BumArrayV (z) = BumArrayV (z) + Worksheets («Угоди »).Cells (b; 6).

End If.

BumArray (z) = BumArray (z) + Worksheets («Угоди »).Cells (b; 6).

Else.

If CurDate > Worksheets («Угоди »).Cells (b; 1) Then.

BumArrayV (z) = BumArrayV (z) — Worksheets («Угоди »).Cells (b; 6).

End If.

BumArray (z) = BumArray (z) — Worksheets («Угоди »).Cells (b; 6).

End If.

End If.

End If.

b = b + 1.

Wend.

" M+4.

MMM = m + 5.

Rows (CStr (m + 1) + ": «+ CStr (m + 200)).Delete.

FlagDepo = False.

For b = 1 To BumNum.

If BumArray (b) > 0 Or BumArrayV (b) > 0 Then.

FlagDepo = True.

Cells (MMM; 2) = Worksheets («Брешемо »).Cells (b; 1).

If BumArrayV (b) < BumArray (b) Then>

Cells (MMM; 4) = BumArray (b) — BumArrayV (b).

Else.

If BumArrayV (b) > BumArray (b) Then.

Cells (MMM; 5) = BumArrayV (b) — BumArray (b).

End If.

End If.

Cells (MMM; 3) = BumArrayV (b).

Cells (MMM; 6) = BumArray (b).

MMM = MMM + 1.

End If.

Next.

If FlagDepo Then.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).RowHeight = 28.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).WrapText = True.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).HorizontalAlignment = xlCenter.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).VerticalAlignment = xlBottom.

Cells (m + 4; 2) = «№ випуску «.

Cells (m + 4; 3) = «Вхідний залишок «.

Cells (m + 4; 4) = «Куплено «.

Cells (m + 4; 5) = «Продано/ Погашено «.

Cells (m + 4; 6) = «Вихідний залишок «.

Cells (m + 2; 3).Font.Bold = True.

Cells (m + 2; 3) = «Кількість паперів, що належать Інвестору (штук) «.

Range (Cells (m + 4; 2); Cells (MMM — 1; 6)).Borders (xlLeft).Weight = xlThin.

Range (Cells (m + 4; 2); Cells (MMM — 1; 6)).Borders (xlRight).Weight = xlThin.

Range (Cells (m + 4; 2); Cells (MMM — 1; 6)).Borders (xlTop).Weight = xlThin.

Range (Cells (m + 4; 2); Cells (MMM — 1; 6)).Borders (xlBottom).Weight = xlThin.

Range (Cells (m + 4; 2); Cells (MMM — 1; 6)).BorderAround Weight:=xlMedium.

End If.

" ——————————————————————————-;

" - розрахунок остатков.

Set Ost812 = Worksheets («Остатки812 »).

Ost812.Range («B2 »).Sort Key1:=Ost812.Range («B2 »); Order1:=xlAscending; _.

Key2:=Ost812.Range («A2 »); Order2:=xlDescending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

OstIn = 0.

OstOut = 0.

OstBegin = 0.

OstInDate = ««.

OstOutDate = ««.

RowNum = 0.

k = 2.

DoFlag = True.

Do While Ost812. Cells (k; 1) Empty.

If Ost812. Cells (k; 2) = CliNum And DoFlag Then.

If Ost812. Cells (k; 1) < CurDate Then>

OstBegin = Ost812. Cells (k; 8).

Else.

Do While Ost812. Cells (k; 1) Empty.

If Ost812. Cells (k; 2) CliNum Then Exit Do.

If Ost812. Cells (k; 1) = CurDate Then.

OstBegin = Ost812. Cells (k; 3).

OstIn = Ost812. Cells (k; 4).

OstInDate = Ost812. Cells (k; 5).

OstOut = Ost812. Cells (k; 6).

OstOutDate = Ost812. Cells (k; 7).

RowNum = k.

Exit Do.

End If.

k = k + 1.

Loop.

End If.

DoFlag = False.

End If.

k = k + 1.

Loop.

If RowNum = 0 Then RowNum = k.

k = RowNum.

" - початок таблицы.

With DialogSheets («ДиалогКлиент »).

.Labels (8).Text = Cells (4; 4) «Клиент.

.Labels (9).Text = sum «Сума сделки.

.Labels (10).Text = CurDate «Дата текущая.

.Labels (17).Text = CliNum.

If CliNum = FilialConst Then. Labels (17).Text = DilerConst.

.EditBoxes (1).Text = «0 «» Сума списания.

.EditBoxes (1).InputType = xlNumber.

.EditBoxes (2).Text = CurDate «Дата сделки.

.EditBoxes (7).Text = OstOutDate «списано (дата).

.EditBoxes (8).Text = OstOut «списано (сумма).

.EditBoxes (8).InputType = xlNumber.

.EditBoxes (9).Text = OstInDate «перераховано (дата).

.EditBoxes (10).Text = OstIn «перераховано (сумма).

.EditBoxes (10).InputType = xlNumber.

Com = 0,15.

Select Case SumCom.

Case Is < 36 000>

Com = 0,005.

Case Is < 51 000>

Com = 0,004.

Case Is < 101 000>

Com = 0,003.

Case Is < 301 000>

Com = 0,002.

Case Is < 501 000>

Com = 0,001.

Case Is < 1 001 000>

Com = 0,0005.

Case Is < 3 001 000>

Com = 0,25.

End Select.

If Cells (4; 4) = «Универсалбанк «Then Com = 0.

.EditBoxes (3).Text = Com «Комісія дилера.

.EditBoxes (3).InputType = xlNumber.

.EditBoxes (4).Text = «0 «» Сума винагороди дилера.

.EditBoxes (4).InputType = xlNumber.

.EditBoxes (5).Text = «» «Запис про вознаграждении.

.EditBoxes (6).Text = OstBegin «Залишок на 812 рахунку клиента.

.EditBoxes (6).InputType = xlNumber.

Cells (MMM + 3; 1) = «Начальник инвестиционно-аналитического відділу_________________ «.

Cells (MMM + 3; 6) = ««.

Again:

Перегляд = False.

ExitVar = False.

Button = False.

.Show.

If .EditBoxes (1).Text = «» Then. EditBoxes (1).Text = 0.

If .EditBoxes (3).Text = «» Then. EditBoxes (3).Text = 0.

If .EditBoxes (4).Text = «» Then. EditBoxes (4).Text = 0.

If .EditBoxes (6).Text = «» Then. EditBoxes (6).Text = 0.

If .EditBoxes (8).Text = «» Then. EditBoxes (8).Text = 0.

If .EditBoxes (10).Text = «» Then. EditBoxes (10).Text = 0.

Cells (21; 1) = .EditBoxes (5).Text «Запис про вознаграждении.

Cells (21; 1).Font.Italic = True.

Cells (6; 4) = .EditBoxes (2).Text «Дата сделки.

" занесення даних в підсумкову таблицу.

Cells (10; 6) = .EditBoxes (6).Text «Вхідний остаток.

OstBegin = .EditBoxes (6).Text.

Cells (14; 6) = SumBuy.

Cells (15; 6) = sum — SumBuy.

ComStr = Format (SumCom * .EditBoxes (3).Text; «0,00 »).

ComDiler = CDbl (ComStr).

Cells (16; 6) = ComBirga.

Cells (18; 6) = ComDiler.

Cells (20; 6) = .EditBoxes (4).Text.

Cells (11; 6) = .EditBoxes (8).Text.

OstOut = .EditBoxes (8).Text.

OstIn = .EditBoxes (10).Text.

Cells (12; 6) = .EditBoxes (10).Text.

Cells (13; 6) = .EditBoxes (6).Text — .EditBoxes (8).Text + .EditBoxes (10).Text.

Cells (11; 1) = «2.Списано на р/р / видано готівкою «+ .EditBoxes (7).Text.

OstInDate = .EditBoxes (9).Text.

OstOutDate = .EditBoxes (7).Text.

Cells (12; 1) = «3.Перечислено для придбання «+ .EditBoxes (9).Text.

Cells (22; 6) = 2 * SumBuy — sum + ComBirga + ComDiler.

Cells (23; 6) = .EditBoxes (1).Text.

Cells (24; 6) = .EditBoxes (6).Text — .EditBoxes (8).Text + .EditBoxes (10).Text — _.

(2 * SumBuy — sum + ComBirga + ComDiler) — _.

.EditBoxes (1).Text — .EditBoxes (4).Text.

OstEnd = Cells (24; 6).

Ost812.Cells (k; 1) = CurDate.

Ost812.Cells (k; 2) = CliNum.

Ost812.Cells (k; 3) = OstBegin.

Ost812.Cells (k; 4) = OstIn.

Ost812.Cells (k; 5) = OstInDate.

Ost812.Cells (k; 6) = OstOut.

Ost812.Cells (k; 7) = OstOutDate.

Ost812.Cells (k; 8) = OstEnd.

Ost812.Cells (k; 9) = Cells (14; 6) + Cells (15; 6).

Ost812.Cells (k; 10) = Cells (16; 6).

Ost812.Cells (k; 11) = Cells (18; 6).

Call EditOstBirga (CliNum).

" кінець занесення данных.

If Перегляд Then.

Worksheets («ОтчетыИнвесторам »).PrintPreview.

GoTo Again.

End If.

If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2.

If ExitVar Then Exit Sub.

End With.

" печатку меморіальних ордеров.

Dim StrS As String.

Auk = False.

With DialogSheets («ДиалогОперация »).

.Show.

If .OptionButtons (1).Value = xlOn Then StrS = «Купівля «.

If .OptionButtons (2).Value = xlOn Then StrS = «Продаж «.

If .OptionButtons (3).Value = xlOn Then StrS = «Погашення «.

If .OptionButtons (4).Value = xlOn Then StrS = «Купівля / Продаж «.

If .OptionButtons (5).Value = xlOn Then StrS = «Купівля / Погашення «.

If .OptionButtons (5).Value = xlOn Then Auk = True.

End With.

Worksheets («Ордер »).Select.

Dim Pos812 As Integer.

Dim Page; Page1 As Object.

Set Page = Worksheets («ОтчетыИнвесторам »).

Set Page1 = Worksheets («Клієнти »).

Pos812 = 2.

While (Page1.Cells (Pos812; 1) Empty) And (Worksheets («Клієнти »).Cells (Pos812; 2) CliNum).

Pos812 = Pos812 + 1.

Wend.

If Page. Cells (14; 6) — Page. Cells (15; 6) > 0 Then.

If MemoOrder (Index; Page. Cells (14; 6) — Page. Cells (15; 6); 6; 7; Pos812; _.

StrS + «РКО за «+ CStr (CurDate)) Then Exit Sub.

Index = Index + 1.

Else.

If MemoOrder (Index; Page. Cells (15; 6) — Page. Cells (14; 6); 7; 6; Pos812; _.

StrS + «РКО за «+ CStr (CurDate)) Then Exit Sub.

Index = Index + 1.

End If.

Dim SumS As Double.

SumS = Page. Cells (16; 6) + Page. Cells (18; 6) + Page. Cells (20; 6).

If SumS > 0 Then.

StrS = ««.

If Page. Cells (18; 6) > 0 Then StrS = «Комісія Дилера «+ CStr (Page.Cells (18; 6)) + «зокрема. ПДВ «+ _.

CStr (Format (Page.Cells (18; 6) / 6; «0,00 »)).

If Page. Cells (16; 6) > 0 And Not Auk Then StrS = StrS + «відшкодування кому. ВКБ «+ CStr (Page.Cells (16; 6)) + «зокрема. ПДВ «+ _.

CStr (Format (Page.Cells (16; 6) / 6; «0,00 »)).

If CliNum = FilialConst Then.

If MemoOrder (Index; SumS; 6; 7; Pos812; StrS) Then Exit Sub.

Else.

If Auk Then.

StrS = StrS + «у придбанні з аукціону «.

If MemoOrder (Index; Page. Cells (18; 6) + Page. Cells (20; 6); 6; 12; Pos812; StrS) Then Exit Sub.

StrS = «Відшкодування кому. ВКБ «+ CStr (Page.Cells (16; 6)) + «зокрема. ПДВ «+ _.

CStr (Format (Page.Cells (16; 6) / 6; «0,00 »)).

Index = Index + 1.

If MemoOrder (Index; Page. Cells (16; 6); 6; 8; Pos812; StrS) Then Exit Sub.

Else.

If MemoOrder (Index; SumS; 6; 8; Pos812; StrS) Then Exit Sub.

End If.

End If.

Index = Index + 1.

End If.

If CliNum FilialConst Then.

If Len (StrComS) > 0 Then.

StrComS = StrComS + ", «+ CStr (Right (CliNum; 3)).

Else.

StrComS = StrComS + CStr (Right (CliNum; 3)).

End If.

End If.

If CliNum FilialConst Then ComSum = ComSum + Page. Cells (16; 6).

Worksheets («ОтчетыИнвесторам »).Select.

" ———————;

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).RowHeight = 13,8.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).WrapText = False.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).HorizontalAlignment = xlRight.

Rows (CStr (m + 4) + ": «+ CStr (m + 4)).VerticalAlignment = xlBottom.

Range (Cells (NN; 2); Cells (NN + 200; 6)).Delete shift:=xlToLeft.

m = NN.

FlagBuy = True.

FlagCell = True.

ComBirga = 0.

sum = 0.

SumBuy = 0.

SumCom = 0.

End If.

End If.

і = і + 1.

Loop.

If Not FlagDeal Then.

MsgBox «Угод в поточний день був «.

Else.

If ComSum > 0 Then.

Worksheets («Ордер »).Select.

If MemoOrder (Index; ComSum; 9; 7; 2; _.

" Комісія ВКБ по інвесторам «+ StrComS + «зокрема. ПДВ «+ _.

CStr (Format (ComSum / 6; «0,00 »))) Then Exit Sub.

End If.

End If.

End Sub.

" ———————————————— Печатка Звіти тижневі ————-;

Sub PrintOtchWeek ().

Dim BumNum; CliNum; і; j; k; a; n; Sign; p. s As Integer.

Dim Flag As Boolean.

Dim Code As Long.

Dim Str As String.

Dim DepoFil () As Integer.

Dim Num As Integer.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

Call FormBum.

Sheets («ОтчетНедельный »).Select.

BumNum = Worksheets («Брешемо »).Cells (1; 2).

Num = 8.

For і = 1 To BumNum.

Cells (6; і + 1) = Worksheets («Брешемо »).Cells (i; 1).

Cells (6; і + 1).Font.Bold = True.

Cells (6; і + 1).Interior.ColorIndex = 40.

Cells (Num; і + 1).Interior.ColorIndex = 15.

Cells (Num; і + 1) = ««.

Cells (5; і + 1).Interior.ColorIndex = 40.

Next.

Cells (Num; 1).Interior.ColorIndex = 15.

Cells (Num; 1) = ««.

Cells (5; 1).Interior.ColorIndex = 40.

Cells (5; 1) = ««.

Cells (6; 1).Interior.ColorIndex = 40.

Cells (6; 1).Font.Bold = True.

Cells (6; 1) = «№ папери «.

Cells (7; 1) = «Дилер «.

Cells (6; 1).HorizontalAlignment = xlCenter.

Cells (7; 1).HorizontalAlignment = xlCenter.

Cells (7; 1).Font.Bold = True.

CliNum = Worksheets («Брешемо »).Cells (1; 3).

ReDim DepoArray (CliNum; BumNum).

a = 2.

While Worksheets («Угоди »).Cells (a; 1) Empty.

і = 1.

While Worksheets («Клієнти »).Cells (i + 1; 2) _.

Worksheets («Угоди »).Cells (a; 2).

If Worksheets («Клієнти »).Cells (i + 1; 2) = Empty Then.

MsgBox «Зрадливий номер клієнти на Вікні «Угоди ««.

Exit Sub.

End If.

і = і + 1.

Wend.

k = 0.

For j = 1 To BumNum.

If Worksheets («Брешемо »).Cells (j; 1) = Worksheets («Угоди »).Cells (a; 3) Then.

k = j.

Exit For.

End If.

Next.

If k = 0 Then.

a = a + 1.

GoTo NNN.

End If.

If Not IsEmpty (Worksheets («Угоди »).Cells (a; 4)) Then.

Sign = 1.

Else.

Sign = -1.

End If.

If CurDate >= Worksheets («Угоди »).Cells (a; 1) Then.

DepoArray (i; k) = DepoArray (i; k) + Sign * Worksheets («Угоди »).Cells (a; 6).

End If.

a = a + 1.

NNN:

Wend.

For k = 1 To BumNum.

DepoArray (1; k) = DepoArray (1; k) + DepoArray (2; k).

DepoArray (2; k) = 0.

Next k.

n = 7.

For і = 1 To CliNum.

Flag = False.

For k = 1 To BumNum.

If DepoArray (i; k) > 0 Then Flag = True.

Next.

If Flag Then.

If n > 7 Then.

Str = Format (Worksheets («Клієнти »).Cells (i + 1; 2); «0 »).

Str = Right (Str; 5).

Cells (n; 1).NumberFormat = «@ «.

Cells (n; 1).Font.Bold = True.

Cells (n; 1).HorizontalAlignment = xlCenter.

Cells (n; 1).Font.Italic = False.

Cells (n; 1).Interior.ColorIndex = 2.

Cells (n; 1) = Str.

End If.

For k = 1 To BumNum.

If DepoArray (i; k) 0 Then.

Cells (n; k + 1) = DepoArray (i; k).

Else.

Cells (n; k + 1) = ««.

End If.

Cells (n; k + 1).Font.Bold = False.

Cells (n; k + 1).Font.Italic = False.

Cells (n; k + 1).Interior.ColorIndex = 2.

Next.

If n = 7 Then.

n = n + 2.

Else.

n = n + 1.

End If.

End If.

Next.

For і = 1 To BumNum.

Cells (n; і + 1).Interior.ColorIndex = 40.

p.s = 0.

For k = 9 To n — 1.

p.s = p. s + Cells (k; і + 1).

Next.

Cells (n; і + 1).Value = s.

Next.

Cells (n; 1).Interior.ColorIndex = 40.

Cells (n; 1) = «Разом по інвесторам «.

Cells (n; 1).Font.Bold = True.

Cells (n; 1).Font.Italic = True.

Range («A1:Z200 »).Borders (xlLeft).LineStyle = xlNone.

Range («A1:Z200 »).Borders (xlRight).LineStyle = xlNone.

Range («A1:Z200 »).Borders (xlTop).LineStyle = xlNone.

Range («A1:Z200 »).Borders (xlBottom).LineStyle = xlNone.

Range («A1:Z200 »).BorderAround LineStyle:=xlNone.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlLeft).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlRight).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlTop).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).Borders (xlBottom).Weight = xlThin.

Range (Cells (5; 1); Cells (n; BumNum + 1)).BorderAround Weight:=xlMedium.

Range (Cells (n + 1; 1); Cells (100; 30)).Delete shift:=xlToLeft.

Range (Cells (1; BumNum + 2); Cells (100; 30)).Delete shift:=xlToLeft.

Range («a2 ») = «на «+ CStr (CurDate).

Range (Cells (n + 2; 1); Cells (n + 3; BumNum + 1)).BorderAround Weight:=xlMedium.

Cells (n + 2; 1) = «Кількість перелічених облігацій на рахунки «» Депо «» «.

Cells (n + 3; 1) = «без укладання угод купівлі-продажу «.

Cells (n + 2; 1).Font.Bold = True.

Cells (n + 3; 1).Font.Bold = True.

Cells (n + 5; 1).Font.Size = 12.

Cells (n + 5; 1) = «Відповідальне обличчя Дилера «+ _.

" _________________________ «.

Cells (n + 3; BumNum + 1) = 0.

Cells (n + 3; BumNum + 1).Font.Bold = True.

If DialogPrint («ОтчетНедельный »; 2) Then Exit Sub.

End Sub.

" ———————————————— Печатка Звіти Місячні —————;

Sub PrintOtchMonth ().

Dim DateBegin; DateEnd; DateMas () As Date.

Dim і; k; m; NumberClients; kk As Long.

Dim Sign; BumNum; Row; Col; Num; sum As Integer.

Dim DateFlag; Flag; CliInput (); BumInput () As Boolean.

Dim Bum (ConstMaxBum) As Long.

Dim mas () As Integer.

Dim Sheet As Object.

Dim Str As String.

With DialogSheets («ДиалогМесОтчет »).

.EditBoxes (1).InputType = xlDate.

.EditBoxes (2).InputType = xlDate.

.Show.

If Not Button Then Exit Sub.

If IsDate (.EditBoxes (1).Text) = False Or _.

IsDate (.EditBoxes (2).Text) = False Then.

MsgBox «Неправильно запроваджені дати «.

Exit Sub.

End If.

DateBegin = CDate (.EditBoxes (1).Text).

DateEnd = CDate (.EditBoxes (2).Text).

If DateBegin >= DateEnd Then.

MsgBox «Дати не перетинаються «.

Exit Sub.

End If.

End With.

Set Sheet = Worksheets («Папери »).

і = 2.

BumNum = 0.

While Sheet. Cells (i; 1) Empty.

If (Sheet.Cells (i; 2) < DateBegin And Sheet. Cells (i; 3) > DateBegin) Or _.

(Sheet.Cells (i; 2) < DateEnd And Sheet. Cells (i; 3) > DateEnd) Or _.

(Sheet.Cells (i; 2) > DateBegin And Sheet. Cells (i; 3) < DateEnd) Then>

Bum (BumNum + 1) = Sheet. Cells (i; 1).

BumNum = BumNum + 1.

End If.

і = і + 1.

Wend.

Set Sheet = Worksheets («Клієнти »).

і = 2.

k = 0.

While Sheet. Cells (i; 1) Empty.

If Sheet. Cells (i; 2) > k And Sheet. Cells (i; 2) FilialConst Then.

k = Sheet. Cells (i; 2).

End If.

і = і + 1.

Wend.

NumberClients = k — DilerConst.

DateFlag = True.

ReDim mas (NumberClients; BumNum * 7).

ReDim DateMas (NumberClients; BumNum).

ReDim CliInput (NumberClients).

ReDim BumInput (BumNum).

і = 2.

Worksheets («Угоди »).Select.

While Cells (i; 1) Empty.

If Cells (i; 2) DilerConst And Cells (i; 2) FilialConst Then.

If Cells (i; 1) < DateBegin Then>

Flag = True.

For k = 1 To BumNum «пошук номери бумаги.

If Cells (i; 3) = Bum (k) Then.

Flag = False.

Exit For.

End If.

Next k.

If Flag Then GoTo cont.

Sign = 1.

If IsEmpty (Cells (i; 4)) Then Sign = -1.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 1) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 1) + Sign * Cells (i; 6).

End If.

If Cells (i; 1) >= DateBegin And DateFlag Then.

For k = 1 To NumberClients.

For m = 1 To BumNum.

mas (k; (m — 1) * 7 + 2) = mas (k; (m — 1) * 7 + 1).

Next m.

Next k.

DateFlag = False.

End If.

If Cells (i; 1) >= DateBegin And Cells (i; 1).

Flag = True.

For k = 1 To BumNum.

If Cells (i; 3) = Bum (k) Then.

Flag = False.

Exit For.

End If.

Next k.

If Flag Then GoTo cont.

If Cells (i; 7) «списання «And Cells (i; 7) «зарахування «Then.

If Not IsEmpty (Cells (i; 4)) Then.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 3) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 3) + Cells (i; 6).

Else.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 4) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 4) + Cells (i; 6).

End If.

If DateMas (Cells (i; 2) — DilerConst; k) Cells (i; 1) Then.

DateMas (Cells (i; 2) — DilerConst; k) = Cells (i; 1).

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 5) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 5) + 1.

End If.

End If.

If Cells (i; 7) = «списання «Then.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 6) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 6) + Cells (i; 6).

End If.

If Cells (i; 7) = «зарахування «Then.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 7) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 7) + Cells (i; 6).

End If.

Sign = 1.

If IsEmpty (Cells (i; 4)) Then Sign = -1.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 2) = _.

mas (Cells (i; 2) — DilerConst; (k — 1) * 7 + 2) + Sign * Cells (i; 6).

End If.

End If.

cont:

і = і + 1.

Wend.

For і = 1 To NumberClients.

CliInput (i) = False.

For k = 1 To BumNum.

If mas (i; (k — 1) * 7 + 1) > 0 Or _.

mas (i; (k — 1) * 7 + 2) > 0 Or _.

mas (i; (k — 1) * 7 + 3) > 0 Or _.

mas (i; (k — 1) * 7 + 4) > 0 Or _.

mas (i; (k — 1) * 7 + 5) > 0 Or _.

mas (i; (k — 1) * 7 + 6) > 0 Or _.

mas (i; (k — 1) * 7 + 7) > 0 Then CliInput (i) = True.

Next k.

Next i.

For k = 1 To BumNum.

BumInput (k) = False.

For і = 1 To NumberClients.

If mas (i; (k — 1) * 7 + 1) > 0 Or _.

mas (i; (k — 1) * 7 + 2) > 0 Or _.

mas (i; (k — 1) * 7 + 3) > 0 Or _.

mas (i; (k — 1) * 7 + 4) > 0 Or _.

mas (i; (k — 1) * 7 + 5) > 0 Or _.

mas (i; (k — 1) * 7 + 6) > 0 Or _.

mas (i; (k — 1) * 7 + 7) > 0 Then BumInput (k) = True.

Next i.

Next k.

Worksheets («ОтчетМесячный »).Select.

Range (Cells (7; 1); Cells (800; 22)).Delete shift:=xlToLeft.

Row = 4.

Col = 2.

Cells (2; 1) = «у період від «+ CStr (DateBegin) + «до «+ CStr (DateEnd).

kk = 0.

Flag = False.

For k = 1 To BumNum.

If BumInput (k) Then.

Cells (Row; Col) = Bum (k).

Num = 0.

For і = 1 To NumberClients.

If CliInput (i) Then.

If Col = 2 Then.

Str = Format (i; «0 »).

Str = Right (Str; 5).

Cells (Row + Num + 3; Col — 1).NumberFormat = «@ «.

Cells (Row + Num + 3; Col — 1).Font.Bold = True.

Cells (Row + Num + 3; Col — 1).HorizontalAlignment = xlCenter.

Cells (Row + Num + 3; Col — 1).Font.Italic = False.

Cells (Row + Num + 3; Col — 1).Interior.ColorIndex = 2.

Cells (Row + Num + 3; Col — 1) = Str.

End If.

Cells (Row + Num + 3; Col) = mas (i; (k — 1) * 7 + 1).

Cells (Row + Num + 3; Col + 1) = mas (i; (k — 1) * 7 + 2).

Cells (Row + Num + 3; Col + 2) = mas (i; (k — 1) * 7 + 3).

Cells (Row + Num + 3; Col + 3) = mas (i; (k — 1) * 7 + 4).

Cells (Row + Num + 3; Col + 4) = mas (i; (k — 1) * 7 + 5).

Cells (Row + Num + 3; Col + 5) = mas (i; (k — 1) * 7 + 6).

Cells (Row + Num + 3; Col + 6) = mas (i; (k — 1) * 7 + 7).

Num = Num + 1.

End If.

Next i.

Col = Col + 7.

kk = kk + 1.

Flag = True.

End If.

If ((kk > 0) And (kk Mod 3 = 0) And Flag) Or k = BumNum Then.

Flag = False.

For і = 2 To 22.

sum = 0.

For m = 1 To NumberClients.

sum = sum + Cells (m + 6; i).

Next m.

Cells (Num + 7; і) = sum.

Cells (Num + 7; i).Font.Bold = True.

Cells (Num + 7; i).Interior.ColorIndex = 15.

Next i.

Cells (Num + 7; 1) = «Разом «.

Cells (Num + 7; 1).Font.Bold = True.

Cells (Num + 7; 1).HorizontalAlignment = xlCenter.

Cells (Num + 7; 1).Interior.ColorIndex = 15.

Range (Cells (7; 1); Cells (Num + 7; 22)).Borders (xlLeft).Weight = xlThin.

Range (Cells (7; 1); Cells (Num + 7; 22)).Borders (xlRight).Weight = xlThin.

Range (Cells (7; 1); Cells (Num + 7; 22)).Borders (xlTop).Weight = xlThin.

Range (Cells (7; 1); Cells (Num + 7; 22)).Borders (xlBottom).Weight = xlThin.

Range (Cells (7; 1); Cells (Num + 7; 22)).BorderAround Weight:=xlMedium.

Range (Cells (7; 9); Cells (Num + 7; 15)).BorderAround Weight:=xlMedium.

Cells (Num + 10; 10) = «Відповідальне обличчя Дилера______________________________ «.

If DialogPrint («ОтчетМесячный »; 2) Then Exit Sub.

Row = 4.

Col = 2.

Cells (Row; Col) = ««.

Cells (Row; Col + 7) = ««.

Cells (Row; Col + 14) = ««.

Range (Cells (7; 1); Cells (800; 22)).Delete shift:=xlToLeft.

End If.

Next k.

Worksheets («СписокКлиентов »).Select.

Num = 5.

Range (Cells (Num; 1); Cells (100; 3)).Delete shift:=xlToLeft.

For і = 1 To NumberClients.

If CliInput (i) Then.

k = 2.

While Sheet. Cells (k; 2) DilerConst + i.

k = k + 1.

Wend.

Cells (Num; 1) = Sheet. Cells (k; 1).

Cells (Num; 2) = Sheet. Cells (k; 2).

Cells (Num; 3) = Sheet. Cells (k; 3).

Cells (Num; 1).HorizontalAlignment = xlLeft.

Cells (Num; 2).HorizontalAlignment = xlCenter.

Cells (Num; 3).HorizontalAlignment = xlCenter.

Cells (Num; 3).WrapText = True.

Num = Num + 1.

End If.

Next i.

Cells (2; 1) = «у період від «+ CStr (DateBegin) + «до «+ CStr (DateEnd).

Range (Cells (5; 1); Cells (Num — 1; 3)).Borders (xlLeft).Weight = xlThin.

Range (Cells (5; 1); Cells (Num — 1; 3)).Borders (xlRight).Weight = xlThin.

Range (Cells (5; 1); Cells (Num — 1; 3)).Borders (xlTop).Weight = xlThin.

Range (Cells (5; 1); Cells (Num — 1; 3)).Borders (xlBottom).Weight = xlThin.

Range (Cells (5; 1); Cells (Num — 1; 3)).BorderAround Weight:=xlMedium.

Range (Cells (5; 2); Cells (Num — 1; 2)).BorderAround Weight:=xlMedium.

Cells (Num + 2; 2) = «Відповідальне обличчя Дилера______________________________ «.

With DialogSheets («ДиалогПечать »).

AgainMonthOtch1:

Перегляд = False.

ExitVar = False.

Button = False.

.Show.

If Перегляд Then.

Worksheets («СписокКлиентов »).PrintPreview.

GoTo AgainMonthOtch1.

End If.

If ExitVar Then Exit Sub.

If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=2.

End With.

End Sub.

" ———————————————— Перечисление/списание біржа ——-;

Sub GotoBirga ().

Dim Sheet As Object.

Dim OstIn; OstOut; OstBegin; CliNum As Double.

Dim RowNum; k As Long.

Dim DoFlag As Boolean.

Set Sheet = Worksheets («ОстаткиБиржа »).

Sheet.Range («B2 »).Sort Key1:=Sheet.Range («B2 »); Order1:=xlAscending; _.

Key2:=Sheet.Range («A2 »); Order2:=xlDescending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

Sheet.Select.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

k = 2.

While Worksheets («Клієнти »).Cells (k; 1) Empty.

k = k + 1.

Wend.

With DialogSheets («ДиалогБиржа »).

.DropDowns.ListFillRange = «Клиенты!$B$ 2:$B$ «+ CStr (k — 1).

.EditBoxes (1).InputType = xlNumber.

.EditBoxes (2).InputType = xlNumber.

.Show.

If Button = False Then.

MsgBox «Дані не занесені «.

Exit Sub.

End If.

CliNum = .DropDowns (1).List (.DropDowns (1).ListIndex).

If .EditBoxes (1).Text = «» Then.

OstIn = 0.

Else.

OstIn = .EditBoxes (1).Text.

End If.

If .EditBoxes (2).Text = «» Then.

OstOut = 0.

Else.

OstOut = .EditBoxes (2).Text.

End If.

OstBegin = 0.

k = 2.

DoFlag = True.

Do While Cells (k; 1) Empty.

If Cells (k; 2) = CliNum And DoFlag Then.

If Cells (k; 1) < CurDate Then>

OstBegin = Cells (k; 6).

Else.

MsgBox «Неможливий введення інформації «.

Exit Sub.

End If.

DoFlag = False.

End If.

k = k + 1.

Loop.

Cells (k; 1) = CurDate.

Cells (k; 2) = CliNum.

Cells (k; 3) = OstBegin.

Cells (k; 4) = OstIn.

Cells (k; 5) = OstOut.

Cells (k; 6) = OstBegin + OstIn — OstOut.

End With.

End Sub.

" ———————————————— Перегляд залишків 812 —————-;

Sub PrintOst ().

Dim Sheet; Sheet1 As Object.

Dim і; k; CliNum As Long.

Dim Ost As Double.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

і = 2.

While Worksheets («Угоди »).Cells (i; 1) Empty.

If Worksheets («Угоди »).Cells (i; 1) = CurDate Then.

Call EditOstBirga (Worksheets («Угоди »).Cells (i; 2)).

End If.

і = і + 1.

Wend.

Set Sheet = Worksheets («Остатки812 »).

Set Sheet1 = Worksheets («ОстаткиБиржа »).

Sheets («Клієнти »).Select.

і = 2.

Sheet.Range («B2 »).Sort Key1:=Sheet.Range («B2 »); Order1:=xlAscending; _.

Key2:=Sheet.Range («A2 »); Order2:=xlDescending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

Sheet1.Range («B2 »).Sort Key1:=Sheet1.Range («B2 »); Order1:=xlAscending; _.

Key2:=Sheet1.Range («A2 »); Order2:=xlDescending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

While Cells (i; 2) Empty.

CliNum = Cells (i; 2).

k = 2.

Do.

If Sheet. Cells (k; 1) = Empty Then.

Ost = 0.

Exit Do.

End If.

If Sheet. Cells (k; 2) = CliNum Then.

Ost = Sheet. Cells (k; 8).

Exit Do.

End If.

k = k + 1.

Loop.

Cells (i; 4) = Ost.

k = 2.

Do.

If Sheet1. Cells (k; 1) = Empty Then.

Ost = 0.

Exit Do.

End If.

If Sheet1. Cells (k; 2) = CliNum Then.

Ost = Sheet1. Cells (k; 6).

Exit Do.

End If.

k = k + 1.

Loop.

Cells (i; 5) = Ost.

і = і + 1.

Wend.

End Sub.

" ———————————————— Печатка портфель ————————-;

Sub PrintPortfel ().

Dim Sheet As Object.

Dim і; k; BumNum; m As Long.

Dim Bum (ConstMaxBum); DatePog (ConstMaxBum) As Long.

Dim Volume (); BiginIndex (); dates (); V () As Integer.

Dim Price (); BumPrice (); DohPog (); DohPriobr () As Double.

Dim DateMas () As Date.

Dim Flag; BumIndex () As Boolean.

Dim SumPog1(); SumPog2(); SumPriobr1(); SumPriobr2() As Double.

Dim SumPog11; SumPriobr11; SumPog22; SumPriobr22 As Double.

Dim BumVol () As Integer.

Dim AllVol As Long.

Dim PortfelCost; PortfelBalance As Double.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

Set Sheet = Worksheets («Папери »).

і = 2.

BumNum = 0.

While Sheet. Cells (i; 1) Empty.

If (Sheet.Cells (i; 2) CurDate) Then.

Bum (BumNum + 1) = Sheet. Cells (i; 1).

DatePog (BumNum + 1) = Sheet. Cells (i; 3).

BumNum = BumNum + 1.

End If.

і = і + 1.

Wend.

Worksheets («Угоди »).Select.

Range («B2 »).Sort Key1:=Range («A2 »); Order1:=xlAscending; _.

Key2:=Range («D2 »); Order2:=xlAscending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

ReDim Volume (BumNum; MaxCount).

ReDim Price (BumNum; MaxCount).

ReDim DateMas (BumNum; MaxCount).

ReDim DohPog (BumNum; MaxCount).

ReDim DohPriobr (BumNum; MaxCount).

ReDim dates (BumNum); V (BumNum); BeginIndex (BumNum).

ReDim BumIndex (BumNum); BumPrice (BumNum).

ReDim SumPog1(BumNum); SumPog2(BumNum); SumPriobr1(BumNum); SumPriobr2(BumNum).

ReDim BumVol (BumNum).

For і = 1 To BumNum.

dates (i) = 1.

Next i.

і = 2.

While Cells (i; 1) Empty.

If Cells (i; 2) = DilerConst And Cells (i; 7) «списання «_.

And Cells (i; 7) «зарахування «Then.

Flag = True.

For k = 1 To BumNum «пошук номери бумаги.

If Cells (i; 3) = Bum (k) Then.

Flag = False.

Exit For.

End If.

Next k.

If Flag Then GoTo cont.

If Cells (i; 1).

If Not IsEmpty (Cells (i; 4)) Then.

Volume (k; dates (k)) = Cells (i; 6).

Price (k; dates (k)) = Cells (i; 4).

DateMas (k; dates (k)) = Cells (i; 1).

dates (k) = dates (k) + 1.

V (k) = V (k) + Cells (i; 6).

Else.

V (k) = V (k) — Cells (i; 6).

End If.

End If.

End If.

cont:

і = і + 1.

Wend.

For k = 1 To BumNum.

For і = dates (k) To 1 Step -1.

If V (k) > Volume (k; і) Then.

V (k) = V (k) — Volume (k; i).

Else.

Volume (k; і) = V (k).

BeginIndex (k) = i.

Exit For.

End If.

Next i.

Next k.

For k = 1 To BumNum.

BumIndex (k) = False.

If V (k) > 0 Then BumIndex (k) = True.

Next k.

і = 2.

While Cells (i; 1) Empty.

If (Cells (i; 1) = CurDate And Cells (i; 2) = DilerConst) _.

And (Cells (i; 7) «зарахування «And Cells (i; 7) «списання ») Then.

For k = 1 To BumNum.

If Cells (i; 3) = Bum (k) Then.

BumIndex (k) = True.

End If.

Next k.

End If.

і = і + 1.

Wend.

і = 2.

Set Sheet = Worksheets («Біржа »).

Flag = True.

While Sheet. Cells (i; 1) Empty.

If Sheet. Cells (i; 1) = CurDate Then.

Flag = False.

For k = 1 To BumNum.

If Sheet. Cells (i; 2) = Bum (k) Then.

If Sheet. Cells (i; 6) > 0 Then.

BumPrice (k) = Sheet. Cells (i; 6).

Else.

BumPrice (k) = 0.

End If.

End If.

Next k.

End If.

і = і + 1.

Wend.

If Flag Then.

MsgBox «Біржовий інформації немає. Портфель сформувати неможливо. «.

Exit Sub.

End If.

Worksheets («Портфель1 »).Select.

Cells (4; 3) = CurDate.

Range («A7:H200 »).Delete shift:=xlToLeft.

m = 7.

PortfelCost = 0.

PortfelBalance = 0.

For k = 1 To BumNum.

If Volume (k; BeginIndex (k)) > 0 Then.

For і = BeginIndex (k) To dates (k).

If Volume (k; і) > 0 Then.

Cells (m; 1) = Bum (k).

Cells (m; 1).NumberFormat = «0 «.

Cells (m; 2) = DateMas (k; i).

Cells (m; 2).NumberFormat = «ДД.ММ.ГГ «.

Cells (m; 3) = Price (k; i).

Cells (m; 3).NumberFormat = «0,00 «.

Cells (m; 4) = Volume (k; i).

Cells (m; 4).NumberFormat = «0 «.

DohPog (k; і) = (100 / Price (k; і) — 1) * 36 500 / (DatePog (k) — DateMas (k; i)).

Cells (m; 5) = DohPog (k; i).

Cells (m; 5).NumberFormat = «0,00 «.

Cells (m; 8).NumberFormat = «0 «.

Dim tmp As Long.

tmp = CurDate — DateMas (k; i).

Cells (m; 8) = tmp.

PortfelBalance = PortfelBalance + Price (k; і) * Volume (k; i).

If BumPrice (k) > 0 Then.

PortfelCost = PortfelCost + BumPrice (k) * Volume (k; i).

Else.

PortfelCost = PortfelCost + Price (k; і) * Volume (k; i).

End If.

If BumPrice (k) > 0 Then.

Cells (m; 6) = BumPrice (k).

Cells (m; 6).NumberFormat = «0,00 «.

If CurDate DateMas (k; і) Then.

DohPriobr (k; і) = (BumPrice (k) / Price (k; і) — 1) * 36 500 / (CurDate — DateMas (k; i)).

Cells (m; 7) = DohPriobr (k; i).

Cells (m; 7).NumberFormat = «0,00 «.

End If.

End If.

m = m + 1.

End If.

Next i.

Range (Cells (m; 1); Cells (m; 8)).Interior.ColorIndex = 15.

m = m + 1.

End If.

Next k.

Range (Cells (7; 1); Cells (m — 1; 8)).Borders (xlLeft).Weight = xlThin.

Range (Cells (7; 1); Cells (m — 1; 8)).Borders (xlRight).Weight = xlThin.

Range (Cells (7; 1); Cells (m — 1; 8)).Borders (xlTop).Weight = xlThin.

Range (Cells (7; 1); Cells (m — 1; 8)).Borders (xlBottom).Weight = xlThin.

Range (Cells (7; 1); Cells (m — 1; 8)).BorderAround Weight:=xlMedium.

If DialogPrint («Портфель1 »; 1) Then Exit Sub.

Worksheets («Портфель2 »).Select.

Cells (4; 3) = CurDate.

SumPog11 = 0.

SumPog22 = 0.

SumPriobr11 = 0.

SumPriobr22 = 0.

AllVol = 0.

m = 7.

Range («A7:H200 »).Delete shift:=xlToLeft.

For k = 1 To BumNum.

If Volume (k; BeginIndex (k)) > 0 Then.

SumPog1(k) = 0.

SumPog2(k) = 0.

SumPriobr1(k) = 0.

SumPriobr2(k) = 0.

BumVol (k) = 0.

For і = BeginIndex (k) To dates (k).

If Volume (k; і) > 0 Then.

SumPog1(k) = SumPog1(k) + DohPog (k; і) * Volume (k; і) * (DatePog (k) — DateMas (k; i)).

SumPog2(k) = SumPog2(k) + Volume (k; і) * (DatePog (k) — DateMas (k; i)).

If CurDate DateMas (k; і) Then.

SumPriobr1(k) = SumPriobr1(k) + DohPriobr (k; і) * Volume (k; і) * (CurDate — DateMas (k; i)).

SumPriobr2(k) = SumPriobr2(k) + Volume (k; і) * (CurDate — DateMas (k; i)).

End If.

SumPog11 = SumPog11 + SumPog1(k).

SumPog22 = SumPog22 + SumPog2(k).

SumPriobr11 = SumPriobr11 + SumPriobr1(k).

SumPriobr22 = SumPriobr22 + SumPriobr2(k).

BumVol (k) = BumVol (k) + Volume (k; i).

AllVol = AllVol + Volume (k; i).

End If.

Next i.

Cells (m; 1) = Bum (k).

Cells (m; 1).NumberFormat = «0 «.

Cells (m; 2) = BumVol (k).

Cells (m; 2).NumberFormat = «0 «.

Cells (m; 3) = SumPog1(k) / SumPog2(k).

Cells (m; 3).NumberFormat = «0,00 «.

If SumPriobr2(k) > 0 And SumPriobr1(k) > 0 Then.

Cells (m; 4) = SumPriobr1(k) / SumPriobr2(k).

Cells (m; 4).NumberFormat = «0,00 «.

End If.

m = m + 1.

End If.

Next k.

Cells (m; 1) = «Разом «.

Cells (m; 1).Font.Bold = True.

Cells (m; 1).HorizontalAlignment = xlCenter.

Cells (m; 2) = AllVol.

Cells (m; 2).NumberFormat = «0 «.

Cells (m; 3) = SumPog11 / SumPog22.

Cells (m; 3).NumberFormat = «0,00 «.

Cells (m; 4) = SumPriobr11 / SumPriobr22.

Cells (m; 4).NumberFormat = «0,00 «.

Range (Cells (m; 1); Cells (m; 4)).Interior.ColorIndex = 15.

Range (Cells (7; 1); Cells (m; 4)).Borders (xlLeft).Weight = xlThin.

Range (Cells (7; 1); Cells (m; 4)).Borders (xlRight).Weight = xlThin.

Range (Cells (7; 1); Cells (m; 4)).Borders (xlTop).Weight = xlThin.

Range (Cells (7; 1); Cells (m; 4)).Borders (xlBottom).Weight = xlThin.

Range (Cells (7; 1); Cells (m; 4)).BorderAround Weight:=xlMedium.

Range (Cells (m; 1); Cells (m; 4)).BorderAround Weight:=xlMedium.

Cells (m + 1; 1) = «Вартість портфеля за балансом «.

Cells (m + 2; 1) = «Поточна вартість потфеля «.

Cells (m + 1; 1).Font.Bold = True.

Cells (m + 2; 1).Font.Bold = True.

Range (Cells (m + 1; 1); Cells (m + 2; 4)).BorderAround Weight:=xlMedium.

Cells (m + 1; 4) = PortfelBalance * 10.

Cells (m + 1; 4).NumberFormat = «### ### ###, 00 «.

Cells (m + 1; 4).Font.Bold = True.

Cells (m + 2; 4) = PortfelCost * 10.

Cells (m + 2; 4).NumberFormat = «### ### ###, 00 «.

Cells (m + 2; 4).Font.Bold = True.

If DialogPrint («Портфель2 »; 1) Then Exit Sub.

End Sub.

" ———————————————— Печатка Журналу лицьового обліку ————;

Sub PrintMagazine ().

Dim Sheet As Object.

Dim і; k; BumNum; m; m1; j As Long.

Dim Bum (ConstMaxBum) As Long.

Dim Volume (); BiginIndex (); dates (); V (); Vol As Integer.

Dim sum; Price () As Double.

Dim DateMas () As Date.

Dim Flag; BumIndex () As Boolean.

Dim ComBirga; ComMas (); MagMas (); Mag (4) As Double.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

і = 2.

Flag = True.

Do While Worksheets («Угоди »).Cells (i; 1) Empty.

If Worksheets («Угоди »).Cells (i; 1) = CurDate And _.

Worksheets («Угоди »).Cells (i; 2) = DilerConst Then.

Flag = False.

Exit Do.

End If.

і = і + 1.

Loop.

If Flag Then.

MsgBox «Угод в поточний день був «.

Exit Sub.

End If.

Set Sheet = Worksheets («Папери »).

і = 2.

BumNum = 0.

While Sheet. Cells (i; 1) Empty.

If (Sheet.Cells (i; 2) = CurDate) Then.

Bum (BumNum + 1) = Sheet. Cells (i; 1).

BumNum = BumNum + 1.

End If.

і = і + 1.

Wend.

Worksheets («Угоди »).Select.

Range («B2 »).Sort Key1:=Range («A2 »); Order1:=xlAscending; _.

Key2:=Range («D2 »); Order2:=xlAscending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

ReDim Volume (BumNum; MaxCount).

ReDim Price (BumNum; MaxCount).

ReDim DateMas (BumNum; MaxCount).

ReDim dates (BumNum); V (BumNum); BeginIndex (BumNum).

ReDim BumIndex (BumNum); ComMas (BumNum).

ReDim MagMas (BumNum; 4).

For і = 1 To BumNum.

ComMas (i) = 0.

dates (i) = 1.

Next i.

і = 2.

While Cells (i; 1) Empty And CurDate > Cells (i; 1).

If Cells (i; 2) = DilerConst And Cells (i; 7) «списання «_.

And Cells (i; 7) «зарахування «Then.

Flag = True.

For k = 1 To BumNum «пошук номери бумаги.

If Cells (i; 3) = Bum (k) Then.

Flag = False.

Exit For.

End If.

Next k.

If Flag Then GoTo cont.

If Not IsEmpty (Cells (i; 4)) Then.

Volume (k; dates (k)) = Cells (i; 6).

Price (k; dates (k)) = Cells (i; 4).

DateMas (k; dates (k)) = Cells (i; 1).

dates (k) = dates (k) + 1.

V (k) = V (k) + Cells (i; 6).

Else.

V (k) = V (k) — Cells (i; 6).

End If.

End If.

cont:

і = і + 1.

Wend.

For k = 1 To BumNum.

For і = dates (k) To 1 Step -1.

If V (k) > Volume (k; і) Then.

V (k) = V (k) — Volume (k; i).

Else.

Volume (k; і) = V (k).

BeginIndex (k) = i.

Exit For.

End If.

Next i.

Next k.

For k = 1 To BumNum.

BumIndex (k) = False.

If V (k) > 0 Then BumIndex (k) = True.

Next k.

ComBirga = Worksheets («Інфо »).Cells (1; 2).

і = 2.

While Cells (i; 1) Empty.

If (Cells (i; 1) = CurDate And Cells (i; 2) = DilerConst) _.

And (Cells (i; 7) «зарахування «And Cells (i; 7) «списання ») Then.

For k = 1 To BumNum.

If Cells (i; 3) = Bum (k) Then.

BumIndex (k) = True.

If Not IsEmpty (Cells (i; 4)) Then.

ComMas (k) = ComMas (k) + Format (Cells (i; 4) * Cells (i; 6) * ComBirga * 0,1 + 0,0001; «0,00 »).

Else.

If Cells (i; 5) 100 Then.

ComMas (k) = ComMas (k) + Format (Cells (i; 5) * Cells (i; 6) * ComBirga * 0,1 + 0,0001; «0,00 »).

End If.

End If.

End If.

Next k.

End If.

і = і + 1.

Wend.

Set Sheet = Worksheets («Угоди »).

Worksheets («Журнал лицьового обліку »).Select.

Cells (5; 1) = CurDate.

Cells (49; 2) = ComBirga.

Купівля = False.

Продаж = False.

Vol = 0.

sum = 0.

For k = 1 To BumNum.

If BumIndex (k) Then.

m = 7.

Range («A7:C43 »).ClearContents.

Range («E7:G43 »).ClearContents.

Vol = 0.

sum = 0.

For і = BeginIndex (k) To dates (k).

If Volume (k; і) > 0 Then.

Cells (m; 1) = DateMas (k; i).

Cells (m; 2) = Volume (k; i).

Cells (m; 3) = Format (Price (k; і); «0,00 »).

Vol = Vol + Volume (k; i).

sum = sum + Format (Price (k; і); «0,00 ») * Volume (k; і) * 10.

m = m + 1.

End If.

Next i.

Cells (6; 2) = Vol.

Cells (6; 4) = sum.

Cells (49; 3) = ComMas (k).

Cells (5; 3) = CStr (Bum (k)) + «MFTS «.

і = 2.

m1 = 7.

j = BeginIndex (k).

While Sheet. Cells (i; 1) Empty.

If Sheet. Cells (i; 1) = CurDate And Sheet. Cells (i; 3) = Bum (k) And _.

Sheet.Cells (i; 7) «зарахування «And Sheet. Cells (i; 7) «списання «And _.

Sheet.Cells (i; 2) = DilerConst Then.

If Not IsEmpty (Sheet.Cells (i; 4)) Then.

Купівля = True.

Cells (m; 1) = Sheet. Cells (i; 1).

Cells (m; 2) = Sheet. Cells (i; 6).

Cells (m; 3) = Sheet. Cells (i; 4).

Volume (k; dates (k)) = Sheet. Cells (i; 6).

Price (k; dates (k)) = Sheet. Cells (i; 4).

DateMas (k; dates (k)) = Sheet. Cells (i; 4).

dates (k) = dates (k) + 1.

m = m + 1.

Else.

Продаж = True.

Vol = Sheet. Cells (i; 6).

If Vol < Volume (k; j) Then>

Cells (m1; 5) = Vol.

Cells (m1; 6) = Format (Price (k; j); «0,00 »).

Cells (m1; 7) = Sheet. Cells (i; 5).

Volume (k; j) = Volume (k; j) — Sheet. Cells (i; 6).

m1 = m1 + 1.

Else.

If Volume (k; j) = 0 Then j = j + 1.

While Vol > Volume (k; j) And Volume (k; j) Empty.

Cells (m1; 5) = Volume (k; j).

Cells (m1; 6) = Format (Price (k; j); «0,00 »).

Cells (m1; 7) = Sheet. Cells (i; 5).

Vol = Vol — Volume (k; j).

j = j + 1.

m1 = m1 + 1.

Wend.

If Volume (k; j) Empty Then.

Cells (m1; 5) = Vol.

Cells (m1; 6) = Format (Price (k; j); «0,00 »).

Cells (m1; 7) = Sheet. Cells (i; 5).

Volume (k; j) = Volume (k; j) — Vol.

m1 = m1 + 1.

End If.

End If.

End If.

End If.

і = і + 1.

Wend.

no_do:

MagMas (k; 1) = Format (Cells (46; 3); «0,00 »).

MagMas (k; 2) = Format (Cells (47; 3); «0,00 »).

MagMas (k; 3) = Format (Cells (48; 3); «0,00 »).

MagMas (k; 4) = Format (Cells (45; 4); «0,00 »).

If DialogPrint («Журнал лицьового обліку »; 1) Then Exit Sub.

End If.

Next k.

" Формування журналу оборотов.

Worksheets («ЖурналОборотов »).Select.

Cells (6; 1) = CurDate.

Range (Cells (7; 1); Cells (100; 6)).Delete shift:=xlToLeft.

m = 7.

For k = 1 To BumNum.

If BumIndex (k) Then.

Cells (m; 1) = CStr (Bum (k)) + «MFTS «.

Cells (m; 2) = MagMas (k; 1).

Cells (m; 3) = MagMas (k; 2).

Cells (m; 4) = MagMas (k; 3).

Cells (m; 5) = MagMas (k; 4).

Cells (m; 6) = ComMas (k).

Cells (m; 1).Font.Bold = True.

Cells (m; 2).NumberFormat = «0,00 «.

Cells (m; 3).NumberFormat = «0,00 «.

Cells (m; 4).NumberFormat = «0,00 «.

Cells (m; 5).NumberFormat = «0,00 «.

Cells (m; 6).NumberFormat = «0,00 «.

m = m + 1.

End If.

Next k.

For і = 2 To 6.

sum = 0.

For m1 = 7 To m — 1.

sum = sum + Cells (m1; i).

Next m1.

Cells (m; і) = sum.

Cells (m; i).NumberFormat = «0,00 «.

Next i.

Mag (1) = Cells (m; 2).

Mag (2) = Cells (m; 3).

Mag (3) = Cells (m; 4).

Mag (4) = Cells (m; 6).

If Cells (m; 2) > 0 Then Cells (m + 1; 2) = «Дп «+ S192.

If Cells (m; 2) < 0 Then Cells (m + 1; 2) = «Кт «+ S192>

If Cells (m; 3) > 0 Then Cells (m + 1; 3) = «Дп «+ S904.

If Cells (m; 3) < 0 Then Cells (m + 1; 3) = «Кт «+ S904>

If Cells (m; 4) > 0 Then Cells (m + 1; 4) = «Кт «+ S960.

If Cells (m; 4) < 0 Then Cells (m + 1; 4) = «Дп «+ S970>

Cells (m + 1; 6) = «Дп «+ S970.

Range (Cells (m + 1; 2); Cells (m + 2; 6)).HorizontalAlignment = xlCenter.

Range (Cells (m + 1; 1); Cells (m + 1; 6)).Interior.ColorIndex = 15.

Cells (m + 2; 6) = «Кт «+ S904.

Cells (m + 2; 6).Interior.ColorIndex = 15.

Range (Cells (7; 1); Cells (m — 1; 6)).Borders (xlRight).Weight = xlThin.

Range (Cells (m; 1); Cells (m; 6)).Borders (xlRight).LineStyle = xlDouble.

Range (Cells (m; 1); Cells (m; 6)).Borders (xlLeft).LineStyle = xlDouble.

Range (Cells (m; 1); Cells (m; 6)).Borders (xlTop).LineStyle = xlDouble.

Range (Cells (m; 1); Cells (m; 6)).Borders (xlBottom).LineStyle = xlDouble.

Cells (m + 2; 4) = «Підпис відповідального «.

Cells (m + 3; 4) = «співробітника «.

Range (Cells (m + 2; 4); Cells (m + 3; 4)).Font.Size = 8.

Range (Cells (m + 2; 4); Cells (m + 3; 4)).HorizontalAlignment = xlLeft.

Range (Cells (7; 1); Cells (m + 4; 6)).BorderAround Weight:=xlMedium.

Range (Cells (m + 2; 3); Cells (m + 4; 3)).Borders (xlRight).Weight = xlThin.

Range (Cells (m + 1; 1); Cells (m + 1; 5)).Borders (xlBottom).Weight = xlThin.

Cells (m + 2; 6).Borders (xlLeft).Weight = xlThin.

Cells (m + 2; 6).Borders (xlBottom).Weight = xlThin.

If DialogPrint («ЖурналОборотов »; 1) Then Exit Sub.

" печатку меморіального ордера.

Dim StrS As String.

With DialogSheets («ДиалогОперация »).

.Show.

If .OptionButtons (1).Value = xlOn Then StrS = «Купівля «.

If .OptionButtons (2).Value = xlOn Then StrS = «Продаж «.

If .OptionButtons (3).Value = xlOn Then StrS = «Погашення «.

If .OptionButtons (4).Value = xlOn Then StrS = «Купівля / Продаж «.

If .OptionButtons (5).Value = xlOn Then StrS = «Купівля / Погашення «.

End With.

Worksheets («Ордер »).Select.

і = CInt (InputBox («Запровадьте номер 1-го ордера »)).

If Mag (1) > 0 Then.

If Mag (2) < 0 Then>

If MemoOrder (i; min (Mag (1); Mag (2)); S192; S904; 0; _.

StrS + «РКО за «+ CStr (CurDate)) Then Exit Sub.

і = і + 1.

End If.

If Mag (3) > 0 Then.

If MemoOrder (i; min (Mag (1); Mag (3)); S192; S960; 0; _.

" Прибуток від продажу РКО за «+ CStr (CurDate)) Then Exit Sub.

і = і + 1.

End If.

End If.

If Mag (2) > 0 Then.

If Mag (1) < 0 Then>

If MemoOrder (i; min (Mag (2); Mag (1)); S904; S192; 0; _.

StrS + «РКО за «+ CStr (CurDate)) Then Exit Sub.

і = і + 1.

End If.

If Mag (3) > 0 Then.

If MemoOrder (i; min (Mag (2); Mag (3)); S904; S960; 0; _.

" Прибуток від продажу РКО за «+ CStr (CurDate)) Then Exit Sub.

і = і + 1.

End If.

End If.

If Mag (3) < 0 Then>

If Mag (1) < 0 Then>

If MemoOrder (i; min (Mag (3); Mag (1)); SR970; S192; 0; _.

" Негативна різниця від продажу РКО за «+ CStr (CurDate)) Then Exit Sub.

і = і + 1.

End If.

If Mag (2) < 0 Then>

If MemoOrder (i; min (Mag (3); Mag (2)); SR970; S904; 0; _.

" Негативна різниця від продажу РКО за «+ CStr (CurDate)) Then Exit Sub.

і = і + 1.

End If.

End If.

If Format (Mag (4)) > 0 Then.

If MemoOrder (i; Mag (4); S970; S904; 0; _.

" Комісія ВКБ зокрема. ПДВ «+ CStr (Format (Mag (4) / 6; «0,00 »))) Then Exit Sub.

End If.

End Sub.

" —————————————————————— Memo Order.

Function MemoOrder (Num; sum As Double; n1; n2; Pos As Integer; Order As String).

Dim і As Integer.

Dim Flag As Boolean.

Dim Str; Str1 As String.

Str1 = ««.

Str = CStr (sum).

Str = Format (Str; «0,00 »).

Flag = False.

For і = 1 To Len (Str).

If Mid (Str; і; 1) = «, «Then.

If CInt (Right (Str; 2)) = 0 Then.

Str1 = Str1 + «= «.

Exit For.

Else.

Str1 = Str1 + «- «.

End If.

Else.

If Mid (Str; і; 1) «0 «Then Flag = True.

If Mid (Str; і; 1) «0 «Or Flag Then Str1 = Str1 + Mid (Str; і; 1).

End If.

Next i.

Cells (3; 6) = Str1.

If Pos > 0 Then.

If n1 > 6 Then.

Cells (5; 6) = Worksheets («Клієнти »).Cells (2; n1).

Else.

Cells (5; 6) = Worksheets («Клієнти »).Cells (Pos; n1).

End If.

If n2 > 6 Then.

Cells (10; 6) = Worksheets («Клієнти »).Cells (2; n2).

Else.

Cells (10; 6) = Worksheets («Клієнти »).Cells (Pos; n2).

End If.

Else.

Cells (5; 6) = n1.

Cells (10; 6) = n2.

End If.

Cells (16; 1) = Order.

Cells (1; 6) = Num.

Range («A1:H24 »).Copy.

Range («A32 »).Select.

ActiveSheet.Paste.

If DialogPrint («Ордер »; 2) Then.

MemoOrder = True.

Else.

MemoOrder = False.

End If.

End Function.

" ———————————————— Печатка біржовий інформації ———;

Sub PrintBirgaInfo ().

Dim Sheet As Object.

Dim Flag As Boolean.

Dim і; n; k; Num As Long.

Dim mas (3) As Double.

Set Sheet = Worksheets («Біржа »).

CurDate = Worksheets («Брешемо »).Cells (1; 4).

Sheets («Біржова Інформація »).Select.

Cells (3; 10) = CurDate.

For і = 1 To 3.

mas (i) = 0.

Next i.

і = 2.

n = 7.

Range (Cells (n; 1); Cells (n + 100; 17)).Delete shift:=xlToLeft.

Flag = True.

Do While Sheet. Cells (i; 1) Empty.

If Sheet. Cells (i; 1) = CurDate Then.

Flag = False.

Cells (n; 1) = Sheet. Cells (i; 2).

Cells (n; 7) = Sheet. Cells (i; 3).

Cells (n; 9) = Sheet. Cells (i; 4).

Cells (n; 10) = Sheet. Cells (i; 5).

Cells (n; 5).Font.Bold = True.

Cells (n; 11) = Sheet. Cells (i; 6).

Cells (n; 11).Font.Bold = True.

Cells (n; 12) = Sheet. Cells (i; 7).

Cells (n; 13) = Sheet. Cells (i; 8).

k = 2.

While Worksheets («Папери »).Cells (k; 1) Empty.

If Worksheets («Папери »).Cells (k; 1) = Cells (n; 1) Then.

Cells (n; 2) = Worksheets («Папери »).Cells (k; 2).

Cells (n; 3) = Worksheets («Папери »).Cells (k; 3).

Cells (n; 6) = Worksheets («Папери »).Cells (k; 4).

End If.

k = k + 1.

Wend.

Cells (n; 2).NumberFormat = «ДД.ММ.ГГ «.

Cells (n; 3).NumberFormat = «ДД.ММ.ГГ «.

Cells (n; 6).NumberFormat = «# ##0 «.

Cells (n; 9).NumberFormat = «# ##0 «.

Range (Cells (n; 10); Cells (n; 17)).NumberFormat = «0,00 «.

Cells (n; 4) = Cells (3; 10) — Cells (n; 2).

Cells (n; 5) = Cells (n; 3) — Cells (3; 10).

Cells (n; 8) = Cells (n; 9) / Cells (n; 6) * 100.

Cells (n; 8).NumberFormat = «0,00 «.

If Cells (n; 7) 0 And Cells (n; 5) 0 Then.

Cells (n; 14) = (100 / Cells (n; 10) — 1) * 36 500 / Cells (n; 5) * 0,85.

Cells (n; 15) = (100 / Cells (n; 10) — 1) * 36 500 / Cells (n; 5).

Cells (n; 16) = (100 / Cells (n; 11) — 1) * 36 500 / Cells (n; 5) * 0,85.

Cells (n; 16).Font.Bold = True.

Cells (n; 17) = (100 / Cells (n; 11) — 1) * 36 500 / Cells (n; 5).

mas (1) = mas (1) + Cells (n; 5) * Cells (n; 9) * Cells (n; 14).

mas (2) = mas (2) + Cells (n; 5) * Cells (n; 9) * Cells (n; 16).

mas (3) = mas (3) + Cells (n; 5) * Cells (n; 9).

End If.

n = n + 1.

End If.

і = і + 1.

Loop.

If Flag Then.

MsgBox «Біржовий інформації немає «.

Exit Sub.

End If.

Num = n.

Range (Cells (7; 1); Cells (Num — 1; 17)).Borders (xlLeft).Weight = xlThin.

Range (Cells (7; 1); Cells (Num — 1; 17)).Borders (xlRight).Weight = xlThin.

Range (Cells (7; 1); Cells (Num — 1; 17)).Borders (xlTop).Weight = xlThin.

Range (Cells (7; 1); Cells (Num — 1; 17)).Borders (xlBottom).Weight = xlThin.

Range (Cells (7; 1); Cells (Num — 1; 17)).BorderAround Weight:=xlMedium.

Cells (Num; 1) = «Разом «.

Cells (Num; 1).Font.Bold = True.

Cells (Num; 1).HorizontalAlignment = xlCenter.

Cells (Num; 14) = mas (1) / mas (3).

Cells (Num; 15) = mas (1) / mas (3) / 0,85.

Cells (Num; 16) = mas (2) / mas (3).

Cells (Num; 16).Font.Bold = True.

Cells (Num; 17) = mas (2) / mas (3) / 0,85.

Range (Cells (Num; 14); Cells (Num; 17)).NumberFormat = «0,00 «.

For і = 1 To 3.

mas (i) = 0.

Next i.

For і = 7 To Num — 1.

mas (1) = mas (1) + Cells (i; 6).

mas (2) = mas (2) + Cells (i; 7).

mas (3) = mas (3) + Cells (i; 9).

Next.

Cells (Num; 6) = mas (1).

Cells (Num; 6).NumberFormat = «# ##0 «.

Cells (Num; 7) = mas (2).

Cells (Num; 9) = mas (3).

Cells (Num; 9).NumberFormat = «# ##0 «.

Cells (Num; 8) = mas (3) / mas (1) * 100.

Cells (Num; 8).NumberFormat = «0,00 «.

Cells (Num; 7).Font.Bold = True.

Cells (Num; 9).Font.Bold = True.

Range (Cells (Num; 1); Cells (Num; 17)).BorderAround Weight:=xlMedium.

Range (Cells (Num; 1); Cells (Num; 17)).Interior.ColorIndex = 15.

If DialogPrint («Біржова Інформація »; 1) Then Exit Sub.

End Sub.

" ———————————————— Дата ——————————————;

Sub DateChange ().

With DialogSheets («ДиалогДата »).

.EditBoxes.Text = CurDate.

.EditBoxes.InputType = 1.

.Show.

CurDate = Worksheets («Брешемо »).Cells (1; 4).

If Button = False Then.

CurDate = Date.

Worksheets («Брешемо »).Cells (1; 4) = CurDate.

MsgBox «Дата відновлено «.

Else.

If IsDate (.EditBoxes.Text) Then.

CurDate = .EditBoxes.Text.

MsgBox «Дата змінена «.

Worksheets («Брешемо »).Cells (1; 4) = CurDate.

Exit Sub.

End If.

MsgBox «Помилка при введення дати «.

End If.

End With.

End Sub.

" ———————————————— Формування поточної таблиці паперів —-;

Sub FormBum ().

Dim L As Object.

Dim і; k As Integer.

Set L = Worksheets («Папери »).

CurDate = Worksheets («Брешемо »).Cells (1; 4).

і = 2.

k = 1.

While L. Cells (i; 1) Empty.

If L. Cells (i; 2) = CurDate Then.

Worksheets («Брешемо »).Cells (k; 1) = L. Cells (i; 1).

k = k + 1.

End If.

і = і + 1.

Wend.

Worksheets («Брешемо »).Cells (1; 2) = k — 1.

Set L = Worksheets («Клієнти »).

і = 1.

While L. Cells (i; 1) Empty.

і = і + 1.

Wend.

Worksheets («Брешемо »).Cells (1; 3) = і - 2.

End Sub.

" ———————————————- Залишки біржі —————————-;

Sub EditOstBirga (CliNum As Long).

Dim ComBirga; sum; OstBegin As Double.

Dim DoFlag As Boolean.

Dim Sheet; Sheet1 As Object.

Dim і; k; RowNum As Long.

Set Sheet = Worksheets («ОстаткиБиржа »).

Set Sheet1 = Worksheets («Угоди »).

CurDate = Worksheets («Брешемо »).Cells (1; 4).

ComBirga = Worksheets («Інфо »).Cells (1; 2).

Sheet.Range («B2 »).Sort Key1:=Sheet.Range («B2 »); Order1:=xlAscending; _.

Key2:=Sheet.Range («A2 »); Order2:=xlDescending; _.

Header:=xlYes; OrderCustom:=1; _.

MatchCase:=False; Orientation:=xlTopToBottom.

OstBegin = 0.

RowNum = 0.

k = 2.

DoFlag = True.

Do While Sheet. Cells (k; 1) Empty.

If Sheet. Cells (k; 2) = CliNum And DoFlag Then.

If Sheet. Cells (k; 1) < CurDate Then>

OstBegin = Sheet. Cells (k; 6).

Else.

Do While Sheet. Cells (k; 1) Empty.

If Sheet. Cells (k; 2) CliNum Then Exit Do.

If Sheet. Cells (k; 1) = CurDate Then.

OstBegin = Sheet. Cells (k; 3).

RowNum = k.

Exit Do.

End If.

k = k + 1.

Loop.

End If.

DoFlag = False.

End If.

k = k + 1.

Loop.

If RowNum = 0 Then RowNum = k.

k = RowNum.

sum = 0.

і = 2.

While Sheet1. Cells (i; 1) Empty.

If Sheet1. Cells (i; 1) = CurDate And Sheet1. Cells (i; 2) = CliNum Then.

If Sheet1. Cells (i; 4) Empty Then.

sum = sum — _.

Sheet1.Cells (i; 4) * Sheet1. Cells (i; 6) * 10 000 — _.

Format (Sheet1.Cells (i; 4) * Sheet1. Cells (i; 6) * 100 * ComBirga + 0,0001; «0,00 »).

Else.

If Sheet1. Cells (i; 5) = 100 Then ComBirga = 0.

sum = sum + _.

Sheet1.Cells (i; 5) * Sheet1. Cells (i; 6) * 10 000 — _.

Format (Sheet1.Cells (i; 5) * Sheet1. Cells (i; 6) * 100 * ComBirga + 0,0001; «0,00 »).

End If.

End If.

і = і + 1.

Wend.

Sheet.Cells (k; 3) = OstBegin.

Sheet.Cells (k; 6) = OstBegin + sum + Sheet. Cells (k; 4).

Sheet.Cells (k; 1) = CurDate.

Sheet.Cells (k; 2) = CliNum.

End Sub.

Sub Ok ().

Button = True.

End Sub.

Sub Cancel ().

Button = False.

End Sub.

Sub ПросмотрОтчетов ().

Перегляд = True.

End Sub.

Sub Останов ().

ExitVar = True.

End Sub.

Sub EndOf ().

Dim і As Long.

і = 2.

While Cells (i; 1) Empty.

і = і + 1.

Wend.

Cells (i; 1).Select.

End Sub.

Function DialogPrint (Str As String; Count As Integer).

With DialogSheets («ДиалогПечать »).

AgainView:

Перегляд = False.

ExitVar = False.

Button = False.

.Show.

If Перегляд Then.

Worksheets (Str).PrintPreview.

GoTo AgainView.

End If.

If ExitVar Then.

DialogPrint = True.

Else.

DialogPrint = False.

End If.

If Button Then ActiveWindow.SelectedSheets.PrintOut copies:=Count.

End With.

End Function.

Function min (a; b).

If Abs (a) > Abs (b) Then.

min = Abs (b).

Else.

min = Abs (a).

End If.

End Function.

Додаток № 1.3. Журнал оборотов.

Додаток № 1.4. Журнал лицьового учета.

Додаток № 1.5. Меморіальний ордер.

Додаток № 1.6. Звіт інвестору про скоєних сделках.

Додаток № 1.7. Структура пртфеля у межах по бумагам.

Додаток № 1.8. Структура портфеля обобщенная.

Додаток № 1.9. Біржова информация.

Додаток № 1.10. Еженедельный звіт в депозитарий.

Додаток № 1.11. Щомісячний звіт в депозитарий.

Додаток № 2. Програма аналізу ефективності капіталовкладень у РКО.

Додаток 2.1. Текст программы.

Option Explicit.

Option Base 1.

" *************************** Сортування *************************.

" Процедура сортування страницы.

" Параметры:

" Sheet — лист.

" RangeSort — перша осередок для сортировки.

" StrKey1 — сортування спочатку проводиться у разі цьому столбцу.

" StrKey2 — та був по этому.

" StrKey3 — і з цього до останньої очередь.

" OrderType1 — Напрям сортування по стовпцю StrKey1.

" OrderType2 — Напрям сортування по стовпцю StrKey2.

" OrderType3 — Напрям сортування по стовпцю StrKey3.

" Приклад використання :

" Call Сортировка (Worksheets («Біржа »); «A2 »; «A2 »; «B2 »; «C2 »; xlAscending; xlDescending; xlAscending).

" *****************************************************************.

Sub Сортировка (Sheet As Object; RangeSort As String; StrKey1 As String; _.

StrKey2 As String; StrKey3 As String; TypeOrder1 As Integer; TypeOrder2 As Integer; TypeOrder3 As Integer).

Sheet.Range (RangeSort).Sort Key1:=Sheet.Range (StrKey1); Order1:=TypeOrder1; Key2:= _.

Sheet.Range (StrKey2); Order2:=TypeOrder2; Key3:=Sheet.Range (StrKey3); Order3:= _.

TypeOrder3; Header:=xlGuess; OrderCustom:=1; MatchCase:=False _.

; Orientation:=xlTopToBottom.

End Sub.

" ******************************* Пошук ***************************.

" Функція пошуку значення певному стовпці з певною позиції вперед/назад.

" Параметры:

" Sheet — лист.

" Column — колонка для поиска.

" Row — початкова рядок поиска.

" Text — дані значение.

" Direction — напрям поиска:

" 1 — вперед.

" -1 — назад.

" Приклад використання :

" MsgBox Поиск (Worksheets («Біржа »); 4; 8; 5; -1).

" *******************************************************************.

Function Поиск (Sheet As Object; Column As Integer; Row As Integer; Text; Direction As Integer).

Dim і As Integer.

Dim Compare; Compare1.

If Direction 1 And Direction -1 Then.

MsgBox «Неправильно поставлено напрям пошуку «.

End.

End If.

On Error GoTo ErrorFuncFind.

і = Row.

While Not IsEmpty (Sheet.Cells (i; Column)).

If IsDate (Text) Then.

Compare = CDate (Sheet.Cells (i; Column)).

Compare1 = CDate (Text).

Else.

If IsNumeric (Text) Then.

Compare = CDbl (Sheet.Cells (i; Column)).

Compare1 = CDbl (Text).

Else.

Compare = CStr (Sheet.Cells (i; Column)).

Compare1 = CStr (Text).

End If.

End If.

If Compare = Compare1 Then.

Пошук = i.

Exit Function.

End If.

і = і + Direction.

Wend.

Пошук = 0.

Exit Function.

ErrorFuncFind:

MsgBox «Розбіжність типів даних у виклику «+ Chr (13) + «функції Пошук й у шуканому стовпці. «_.

+ Chr (13) + Chr (13) + «Дані різних типів в стовпці бази «+ Chr (13).

End.

End Function.

Option Explicit.

Option Base 1.

" —————————————— Загальна частина ——————————————————;

" зовнішні параметры.

" тип даних для записи інформації про бумаге.

Type BumRecord.

Num As Long «номер бумаги.

DateStart As Date «дата выпуска.

DateEnd As Date «дата погашения.

Volume As Long «обсяг выпуска.

Present As Boolean.

End Type.

" тип даних для записи інформації про структуру портфеля.

Type PortfelRecord.

Dates () As Date «дата покупки.

Price () As Single «ціна покупки.

Volume () As Long «количество.

StartPos () As Integer «початковий індекс паперу на масиві паперів даної серии.

EndPos () As Integer «кінцевий індекс паперу на масиві паперів даної серии.

VolumeAll () As Long «кількість паперів цієї серії в портфеле.

End Type.

" тип даних для записи інформацію про индксах портфеля і рынка.

Type IndexRecord.

Dates As Date.

Portfel As Single.

Birga As Single.

End Type.

Const MaxBum = 500 «якомога більше паперів портфелі однієї серии.

Const DilerConst = 1 000 900 000 «константа для вибірки портфеля дилера.

Dim MaxPeriod As Long «якомога більше днів анализа (можно обчислити як той день анализа-первый день анализа+1).

Dim Portfel As PortfelRecord «даних про портфеле.

Dim BumInfo () As BumRecord «даних про бумагах.

Dim BumNum As Integer «кількість різних серій бумаг.

Dim Index () As IndexRecord «індекси портфеля і рынка.

Dim Revenue () As IndexRecord «дохідність до погашення портфеля і рынка.

Dim BirgaInfo () As Single «поточна біржова інформація з кожної серии.

Dim CoefIndex As Long «індекс коэффициента.

Dim RevIndex As Long «індекс доходности.

Dim EvalDate As Date «дата для расчета.

Dim StartDate As Date «початкова дата для постоения индексов.

Dim PortfelPricePred; BirgaPricePred As Single.

Dim Analize1; Analize2 As Boolean.

" ———————————————- Процедура розрахунку портфеля (головний модуль);

Sub АнализПортфель ().

Dim Sheet As Object.

Dim і; Ind As Integer.

Dim SumCell As Long.

Dim CurDate As Date.

Set Sheet = Worksheets («Папери »).

BumNum = 0.

While Sheet. Cells (BumNum + 2; 1) Empty.

BumNum = BumNum + 1.

Wend.

With DialogSheets («ДиалогДата »).

.EditBoxes (1).Text = «05.02.97 «.

.EditBoxes (2).Text = «30.05.97 «.

.EditBoxes (1).InputType = xlDate.

.EditBoxes (2).InputType = xlDate.

.Show.

StartDate = CDate (.EditBoxes (1).Text).

EvalDate = CDate (.EditBoxes (2).Text).

End With.

With DialogSheets («ДиалогВыбор »).

again:

.Show.

Analize1 = False.

Analize2 = False.

If .CheckBoxes (1).Value = 1 Then Analize1 = True.

If .CheckBoxes (2).Value = 1 Then Analize2 = True.

If Not Analize1 And Not Analize2 Then.

MsgBox «Виберіть тип аналізу «.

GoTo again.

End If.

End With.

MaxPeriod = EvalDate — StartDate + 1.

ReDim Index (MaxPeriod).

ReDim Revenue (MaxPeriod).

Index (1).Portfel = 1.

Index (1).Birga = 1.

Index (1).Dates = StartDate.

ReDim BumInfo (BumNum).

ReDim BirgaInfo (BumNum).

For і = 1 To BumNum.

With BumInfo (i).

.Num = Sheet. Cells (i + 1; 1).

.DateStart = Sheet. Cells (i + 1; 2).

.DateEnd = Sheet. Cells (i + 1; 3).

.Volume = Sheet. Cells (i + 1; 4).

End With.

Next i.

ReDim Portfel. Dates (BumNum; MaxBum).

ReDim Portfel. Price (BumNum; MaxBum).

ReDim Portfel. Volume (BumNum; MaxBum).

ReDim Portfel. StartPos (BumNum).

ReDim Portfel. EndPos (BumNum).

ReDim Portfel. VolumeAll (BumNum).

For і = 1 To BumNum.

Portfel.StartPos (i) = 1.

Portfel.EndPos (i) = 0.

Next i.

Set Sheet = Worksheets («Угоди »).

Call Сортировка (Worksheets («Угоди »); «A2 »; «A2 »; «B2 »; «D2 »; _.

xlAscending; xlAscending; xlAscending).

і = 2.

CoefIndex = 1.

RevIndex = 1.

CurDate = StartDate.

While Sheet. Cells (i; 1) Empty And Sheet. Cells (i; 1).

If Sheet. Cells (i; 2) = DilerConst Then.

Ind = ReturnBum (Sheet.Cells (i; 3)).

If Not IsEmpty (Sheet.Cells (i; 4)) Then.

Portfel.EndPos (Ind) = Portfel. EndPos (Ind) + 1.

Portfel.Dates (Ind; Portfel. EndPos (Ind)) = Sheet. Cells (i; 1).

Portfel.Price (Ind; Portfel. EndPos (Ind)) = Sheet. Cells (i; 4).

Portfel.Volume (Ind; Portfel. EndPos (Ind)) = Sheet. Cells (i; 6).

Portfel.VolumeAll (Ind) = Portfel. VolumeAll (Ind) + Sheet. Cells (i; 6).

Else.

SumCell = Sheet. Cells (i; 6).

Portfel.VolumeAll (Ind) = Portfel. VolumeAll (Ind) — Sheet. Cells (i; 6).

While SumCell >= Portfel. Volume (Ind; Portfel. StartPos (Ind)) And SumCell > 0.

SumCell = SumCell — Portfel. Volume (Ind; Portfel. StartPos (Ind)).

Portfel.StartPos (Ind) = Portfel. StartPos (Ind) + 1.

Wend.

If SumCell < Portfel. Volume (Ind; Portfel. StartPos (Ind)) Then>

Portfel.Volume (Ind; Portfel. StartPos (Ind)) = Portfel. Volume (Ind; Portfel. StartPos (Ind)) — SumCell.

End If.

End If.

End If.

" у цьому місці можео проаналізувати з урахуванням даних про портфелі за поточну дату.

" дата поточна — це Worksheets («Угоди »).cells (i-1;1).

" тобто. аналіз за цю поточну дату (доходность до погашення портфеля, индекс,…).

If StartDate CurDate Then.

Call Процедура_анализа (Sheet.Cells (i; 1)).

CoefIndex = CoefIndex + 1.

RevIndex = RevIndex + 1.

CurDate = Sheet. Cells (i; 1).

End If.

і = і + 1.

Wend.

If Analize1 Then.

Worksheets («РезультатИндекс »).Cells (1; 2) = «Портфель «.

Worksheets («РезультатИндекс »).Cells (1; 3) = «Ринок «.

For і = 1 To CoefIndex — 1.

Worksheets («РезультатИндекс »).Cells (i + 1; 1) = Index (i).Dates.

Worksheets («РезультатИндекс »).Cells (i + 1; 2) = Index (i).Portfel.

Worksheets («РезультатИндекс »).Cells (i + 1; 3) = Index (i).Birga.

Next i.

Charts («ДиаграммаИндекс »).ChartWizard Source:=Sheets («РезультатИндекс »).Range (_.

" A1: C «+ CStr (i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _.

CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _.

" Порівняння індексу портфеля і ринку "; CategoryTitle:= «дата »; ValueTitle:= _.

" індекс "; ExtraTitle:= ««.

Charts («ДиаграммаИндекс »).Select.

MsgBox «Діаграма Індексу «.

End If.

If Analize2 Then.

Worksheets («РезультатДоходность »).Cells (1; 2) = «Портфель «.

Worksheets («РезультатДоходность »).Cells (1; 3) = «Ринок «.

For і = 1 To RevIndex — 1.

Worksheets («РезультатДоходность »).Cells (i + 1; 1) = Revenue (i).Dates.

Worksheets («РезультатДоходность »).Cells (i + 1; 2) = Revenue (i).Portfel.

Worksheets («РезультатДоходность »).Cells (i + 1; 3) = Revenue (i).Birga.

Next i.

Charts («ДиаграммаДоходность »).ChartWizard Source:=Sheets («РезультатДоходность »).Range (_.

" A1: C «+ CStr (i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _.

CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _.

" Порівняння дохідності портфеля і ринку "; CategoryTitle:= «дата »; ValueTitle:= _.

" дохідність "; ExtraTitle:= ««.

Charts («ДиаграммаДоходность »).Select.

MsgBox «Діаграма Дохідності «.

End If.

End Sub.

" ——————————- функція повертає індекс паперу на масиві BumInfo ——————;

Function ReturnBum (bum As Long).

Dim і As Integer.

For і = 1 To BumNum.

If bum = BumInfo (i).Num Then.

ReturnBum = i.

Exit Function.

End If.

Next i.

MsgBox «Не знайдено папір у списку паперів. Занести папір лист Папери «.

End.

End Function.

" —————————— Процедура побудови індексів портфеля і ринку ————————;

Sub Процедура_анализа (CurDate As Date).

Dim і; k As Long.

Dim Sheet As Object.

Dim PortfelPrice; BirgaPrice As Single.

Dim BirgaCoef; PortfelCoef As Single.

Dim Doh; Volume As Single.

Dim Flag As Boolean.

Set Sheet = Worksheets («Біржа »).

" пошук першого рядка чудово початку біржовий інформації за поточний день.

і = Поиск (Worksheets («Біржа »); 1; 2; CurDate; 1).

If і = 0 Then.

" MsgBox «Біржова інформація за «+ CStr (CDate (CurDate)) + «не знайдено «.

" End.

CoefIndex = CoefIndex — 1.

Exit Sub.

End If.

" занесення біржовий інформації за поточний день.

If і 0 Then.

While Sheet. Cells (i; 1) = CurDate.

If Sheet. Cells (i; 6) Empty Then.

BirgaInfo (ReturnBum (Sheet.Cells (i; 2))) = Sheet. Cells (i; 6).

End If.

і = і + 1.

Wend.

End If.

" визначення з кожної папері звернення на бирже.

For і = 1 To BumNum.

If BumInfo (i).DateStart.

Показати весь текст
Заповнити форму поточною роботою