Автошкола "Кадиллак"

дипломная работа: Информатика, программирование

Документы: [1]   Word-107605.doc Страницы: Назад 1 Вперед


Аннотация


                                           Плохов В.В. Автошкола "КадиллактАЭ

                                                          Челябинск: ЮУрГУ, ЭиУ; 2007, 22с.


Это приложение разработано для того, чтобы автоматизировать все основные аспекты работы с данными предприятия "АвтошколатАЭ.  Такие как: Занесение новых клиентов в базу данных, получение о клиентах информации из базы данных, быстрый расчет статистической информации об успешности обучения в автошколе различными категориями клиентов.

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

Содержание

Содержание        3

1. Введение        4

2. Основная часть        6

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

2.2 Исходные данные        7

2.3 Описание структуры приложения        9

2.4 Описание форм        10

2.4.1 Главная форма        10

2.4.2 Форма "СправкатАЭ        12

2.4.3 Форма "ГруппытАЭ        14

2.4.4 Форма "Формирование группытАЭ        16

2.4.5 Форма "КлиентытАЭ        18

2.4.6 Форма "Добавление клиентатАЭ        19

2.4.7 Форма "Формирование бланка оплатытАЭ        22

2.4.8 Форма "ДопускитАЭ        23

2.4.9 Форма "Информация о клиентетАЭ        25

2.4.10 Форма "Статистика сдачитАЭ        25

2.4.11 Форма "Статистика инструкторовтАЭ        27

2.5 Отчёты        28

2.5.1 Информация о клиенте        28

2.5.2 Результаты учебы        29

2.5.3 Статистика инструкторов        30

3. Заключение        31

4. Литература        31

5. Приложения        32

5.1 Главная форма        32

5.2 Форма "СправкатАЭ        34

5.3 Форма "ГруппытАЭ        35

5.4 Форма "Формирование группытАЭ        38

5.5 Форма "КлиентытАЭ        41

5.6 Форма "Добавление клиентатАЭ        42

5.7 Форма "Формирование бланка оплатытАЭ        47

5.8 Форма "ДопускитАЭ        50

5.9 Форма "Информация о клиентетАЭ        56

5.10 Форма "Статистика сдачитАЭ        59

5.11 Форма "Статистика инструкторовтАЭ        65


  1. Введение


Microsoft Excel имеет встроенный язык программирования - Visual Basic for Аpplications (VBA). Этот язык позволяет создавать приложения, выполняемые в среде Microsoft Office. Это могут быть разнообразные аналитические программы, финансовые системы, программы учета кадров, системы автоматического создания официальных писем/документов с помощью библиотеки готовых шаблонов и т.п. При этом интерфейс создаваемой программы может быть совершенно непохожим на интерфейс того приложения, в котором она написана.

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

Программа MS Excel, являясь лидером на рынке программ обработки электронных таблиц, определяет тенденции развития в этой области. Вплоть до версии 4.0 программа Excel представляла собой фактический стандарт с точки зрения функциональных возможностей и удобства работы.

Одним из важнейших функциональных расширений программы, предназначенным для профессионалов, является встроенная в Excel Среда программирования Visual Basic (VBA) для решения прикладных задач. Благодаря VBA фирме Microsoft удалось не только расширить возможности языка макрокоманд Excel 4.0, но и ввести новый уровень прикладного программирования, поскольку VBA позволяет создавать полноценные прикладные пакеты, которые по своим функциям выходят далеко за рамки обработки электронных таблиц.

Visual Basic for Applications представляет собой новаторское достижение в языках программирования, возможно наиболее значительное с тех пор, как состоялся выпуск первой интегрированной среды разработки. Это означает, не то что VBA тАФ лучшее средство разработки, а лишь то, что VBA существует. Поскольку основой приложений Microsoft послужил один и тот же язык программирования, вероятно, многим придет в голову мысль воспользоваться им. Точно так же, как пользователям Windows для подготовки множества программ необходимо освоить один интерфейс, в VBA достаточно изучить одну среду программирования, чтобы составлять разнообразные приложения.

Встраивание VBA в какое-то приложение означает для него создание объектной модели, в результате VBA-программа может обращаться к объектам этого приложения и манипулировать ими.

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

Разработка языка программирования VBA, встраиваемого в прикладные системы, является одним из стратегических направлений компании Microsoft. Этот язык уже интегрирован в такие программы, как Word for Windows, Power Point и ряд других. VBA позволяет создавать программные модули, меню, диалоговые окна и другие ресурсы в среде Windows. Благодаря этому языку появляется возможность значительно расширить набор функций в Excel, а также создавать функции, значения которых зависят от некоторых условий и событий.

  1. Основная часть


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


Используя средства Microsoft Office Excel и средство разработки программных продуктов VBA создать приложение,  автоматизирующее оперирование информацией предприятия типа "АвтошколатАЭ. А именно:

  1. Добавление новых клиентов в базу данных автошколы.
  2. Формирование группы.
  3. Расформирование группы.
  4. Внос оплаты клиентами.
  5. Редактирование необходимой информации об учебе (Экзамены/Зачеты).
  6. Просмотр полной отчетной информации о клиенте.
  7. Формирование отчетов об успешности сдачи экзаменов различными категориями клиентов.
  8. Формирование отчетов об успешности сдачи экзаменов учениками обучаемыми конкретными инструкторами (для анализа работы инструкторов).
  9. Справка по программе.


2.2 Исходные данные

Исходная таблица данных хранится на листе "ДанныетАЭ (по умолчанию скрыт). На нем содержится информация о преподавателях теории.

Рисунок 1 тАУ "Преподаватели теориитАЭ

Также на нем содержится информация о преподавателях вождения.

Рисунок 2 - "Преподаватели вождения"

Информация о текущей группе (эта информация записывается средствами диалога формирования группы).

Рисунок 3 - "Текущая группа"

Информация об условиях обучения (оплате за курс обучения, необходимому количеству откатанных часов).

Рисунок 4 - "Условия обучения"

Главная база данных  же, формируется на листе "БазатАЭ, который также по умолчанию скрыт.

2.3 Описание структуры приложения


    1. Описание форм


2.4.1 Главная форма


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


Рисунок 5 тАУ Главная форма

В рамке "Текущая группатАЭ тАУ содержится информация о дате, когда было начато обучение группы. Дата, когда программа обучения будет пройдена, а также количество дней оставшихся до конца программы обучения. Если в поле "Осталось дней до конца обучениятАЭ тАУ содержится отрицательное число тАУ это значит, что программа обучения уже была завершена, однако группа еще не расформирована, по  каким-либо причинам.

Однако все эти данные отображаются при условии, что группа сформирована, в противном же случае в рамке будет отображено "Не установленотАЭ.

Рисунок 6 - Рамка "текущая группа" , при наличии текущей группы



Рисунок 7 тАУ Рамка "текущая группа" , при отсутствии текущей группы

Кнопка "СправкатАЭ на главной форме тАУ открывает окно, отображающее краткую справочную информацию по использованию приложения.

Кнопка "ГруппатАЭ на главной форме тАУ открывает окно, по управлению группой, где можно формировать и расформировывать группы.

Кнопка "КлиентытАЭ на главной форме тАУ открывает окно Клиенты, где производятся все основные операции с клиентами, такие как добавление нового клиента, внесение оплаты клиентами, управление допусками клиента (внесение информации о сдаче экзаменов и зачетов), получение полной информации по клиенту.

Кнопка "Статистика сдачитАЭ на главной форме тАУ открывает окно позволяющее формировать отчеты о сдаче экзаменов различными категориями  клиентов обучаемых/обученных в автошколе.

Кнопка "Статистика инструкторовтАЭ на главной форме тАУ ткрывает окно позволяющее формировать отчеты о сдаче экзаменов учениками, обучающимися у конкретных мастеров.

Кнопка "ВыходтАЭ тАУ сохраняет все внесенные изменения, и закрывает приложение.


2.4.2 Форма "СправкатАЭ


В Справке информация разбита по категориям, каждая из которых отображается в свою очередь в отдельной рамке. Справка содержит минимально необходимую информацию по работе с приложением. Клик на кнопке "Все ясно!тАЭ в справке тАУ приводит к возвращению в главное меню программы.

Рисунок 8 тАУ Справка


2.4.3 Форма "ГруппытАЭ

Рисунок 9 тАУ окно "ГруппатАЭ


Здесь в двух вкладках содержатся списки клиентов. Во вкладке "Текущая группатАЭ тАУ содержится список клиентов, которые в данный момент проходят обучение. А во вкладке "ОчередьтАЭ тАУ содержится список клиентов, которые записаны в автошколу, однако еще не начали обучение. Если текущая группа не сформирована, то список на вкладке "Текущая группатАЭ будет пуст.


                         

Рисунок 10 тАУ Список                         Рисунок 11 - Список "Очередь"

"Текущая группатАЭ




Кнопка "Сформировать группутАЭ тАУ открывает окно формирования группы в том случае, если текущей группы не существует, в противном случае будет возвращено сообщение об ошибке.

Рисунок 12 тАУ Сообщение об ошибке

Кнопка "Выпустить группутАЭ, если план обучения не завершен, выдаст ошибку о невозможности расформирования группы.


Рисунок 13 тАУОшибка "Программа обучения не пройденатАЭ


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

Рисунок 14 - Запрос "Расформирование группы"


Ответ "НеттАЭ вернет в окно "ГруппатАЭ, ответ "ДатАЭ также вернет в окно группа, однако текущая группа будет расформирована, а всем обучающимся присвоен статус "ОкончилтАЭ.

Кнопка "ЗакрытьтАЭ тАУ вернет в главное меню.

2.4.4 Форма "Формирование группытАЭ


При активации окна формирования группы, автоматически устанавливаются значения полей "Начало обучениятАЭ и "Конец обучениятАЭ. "Начало обучениятАЭ устанавливается в соответствии с текущей системной датой, а конец обучения через 90-дневный срок от текущей даты. Выпадающий список "УчительтАЭ содержит фамилии всех преподавателей теории.


Рисунок 15- Окно формирования группы


Для формирования группы необходимо перенести клиентов, которые будут включены в группу, из списка "Ожидающие клиентытАЭ в список "Формируемая группатАЭ. Перенос осуществляется посредством кнопок "==>>тАЭ и "<<==тАЭ, также стоит заметить, что при выборе значений из списка работает multiselect (множественный выбор). После завершения выбора необходимо нажать на кнопку "СформироватьтАЭ. Если список "Формируемая группатАЭ будет пуст, то будет возвращена ошибка.

Рисунок 16 тАУ Ошибка "Группа пустатАЭ

Если во введенных датах будет содержаться ошибочная информация, то будет возвращена ошибка.


Рисунок 17 тАУ Ошибка "Неверная дататАЭ

Если вся введенная информация будет корректна, и список "Формируемая группатАЭ не будет пуст, то при клике на кнопку "СформироватьтАЭ будет выдан запрос о подтверждении формирования группы.


Рисунок 18 - Подтверждение формирования группы


При ответе "НеттАЭ вы будете возвращены в окно формирования группы, при ответе "ДатАЭ вы попадете в окно "ГруппатАЭ, и текущая группа будет сформирована. Т.е. будут установлены сроки обучения и всем членам ныне текущей группы вместо статуса "ОжидаеттАЭ будет присвоен статус "ОбучаемыйтАЭ.

Кнопка "ЗакрытьтАЭ тАУ вернет вас в окно "ГруппатАЭ.

2.4.5 Форма "КлиентытАЭ


Рисунок 19 - Окно "Клиенты"


Кнопка "Добавить клиентатАЭ тАУ открывает окно "Добавление клиентатАЭ, где посредством заполнения полей на форме, будет сформирована новая в базе данных о клиенте.

Кнопка "Внести оплатутАЭ тАУ открывает окно "Формирование бланка оплататАЭ, где можно сформировать бланк оплаты для конкретного клиента и непосредственно внести оплату за обучение.

Кнопка "ДопускитАЭ тАУ открывает окно "Данные по учебе клиентатАЭ, где формируется вся информация, о сдаче экзаменов/зачетов клиентом.

Кнопка "Информация о клиентетАЭ тАУ открывает окно выбора клиента, по которому будет выведена информация.

Кнопка "ЗакрытьтАЭ тАУ вернет вас в главное меню.

2.4.6 Форма "Добавление клиентатАЭ

Рисунок 20 - Окно "Добавление клиента"


Рамка "Личные данныетАЭ тАУ предназначена для ввода такой информации, как "ФамилиятАЭ, "ИмятАЭ, "ОтчествотАЭ, "Дата рождениятАЭ.

Рисунок 21 тАУ Рамка "Личные данныетАЭ

Рамка "Паспортные данныетАЭ тАУ предназначена для ввода такой информации, как "Кем выдантАЭ, "Дата выдачитАЭ, "СериятАЭ, "НомертАЭ.

Рисунок 22 - Рамка "Паспортные данные"


Рамка "АдрестАЭ тАУ предназначена для ввода такой информации, как "УлицатАЭ, "ДомтАЭ, "КвартиратАЭ, "Домашний телефонтАЭ, "Сотовый телефонтАЭ. Однако номера телефонов являются опциональными полями, то есть их необязательно заполнять, они помечены звездочкой "*тАЭ.

Рисунок 23 - Рамка "Адрес"


Рамка "ОстальноетАЭ тАУ содержит два выпадающих списка: "АвтомобильтАЭ и "ИнструктортАЭ. Сперва клиент выбирает марку автомобиля, на котором желает проходить обучения. И в зависимости от выбранной им марки формируется выпадающий список "ИнструктортАЭ, из тех мастеров, которые обучают вождению на выбранной пользователем модели автомобиля.


Рисунок 24 тАУ Рамка "ОстальноетАЭ

Кнопка "Внести в базу данных!тАЭ тАУ осуществляет запись клиента в базу. Если вся информация введена в необходимом объеме и без ошибок, то будет выдано сообщение об успешном внесении клиента в базу данных. После нажатия на кнопку "ОКтАЭ, вы будете возвращены в окно "КлиентытАЭ.


Рисунок 25 тАУ Сообщение об успешном внесении клиента в базу данных


В том случае, если данные введены не в полном объеме или содержат ошибки, то будет выдано сообщение об ошибке.

Рисунок 26 - Сообщение ошибочных данных

2.4.7 Форма "Формирование бланка оплатытАЭ

Рисунок 27 - Формирование бланка оплата


В поле "Дата оплатытАЭ тАУ устанавливается дата, когда произведена оплата. Выпадающий список "ФИО ПлательщикатАЭ тАУ содержит клиентов со статусами "ОбучаемыйтАЭ и "ОжидаеттАЭ, он предназначен для выбора плательщика. Поле "Сумма платежатАЭ тАУ предназначено для ввода суммы, которая будет переведена на счет автошколы. Кнопка "Сформировать бланктАЭ тАУ переводит в вас к бланку оплаты, но только в том случае, если введенная сумма отлична от 0, и дата оплаты установлена корректно. В противном случае будет выдано сообщение об ошибке.

Рисунок 28 - сообщение ошибочных данных


В том случае, если вы удачно перешли к бланку оплаты, то окно "Формирование бланка оплатытАЭ будет скрыто, и вы сможете распечатать бланк посредством кнопки "ПечатьтАЭ, либо вернуться к окну "Формирование бланка оплатытАЭ посредством кнопки "ВернутьсятАЭ.

После того, как плательщик передаст деньги кассиру и распишется об оплате денег, то необходимо занести сведения об оплате клиентом в базу данных. Для этого с нужными выбранными значениями окна "Формирование бланка оплатытАЭ нужно нажать на кнопку "Подтвердить оплатутАЭ. Тогда, вам будет отображено сообщение об успешном занесении оплаты в базу данных.

Рисунок 29 тАУ Сообщение внесения оплаты

Кнопка "ЗакрытьтАЭ тАУ возвратит вас к окну "КлиентытАЭ.


2.4.8 Форма "ДопускитАЭ

Рисунок 30 - Окно "Допуски"


Вверху содержится выпадающий список, который включает в себя всех клиентов, которые в данный момент проходят обучение. После выбора клиента отображается информация о том сколько он оплатил, сколько откатал часов, и какие экзамены/зачеты он сдал. Для получения допуска до внутренних экзаменов, клиент должен сдать все зачеты, а именно "ПДДтАЭ, "Первая помощьтАЭ, должен пройти медицинский осмотр, оплатить полную сумму обучения, и откатать положенный минимум академических часов на автомобиле. Если все эти условия будут выполнены, то рамка "Допуск до внутренних экзаменовтАЭ станет неактивной, и активизируется рамка "Допуск до экзаменов в ГАИтАЭ. Для того чтобы получить допуск до экзаменов в ГАИ, клиент обязан успешно сдать внутренние экзамены, а именно "ПДДтАЭ, "АвтодромтАЭ, "ГородтАЭ. Только после успешной сдачи этих экзаменов клиент может быть допущен до окончательного этапа "Экзамены в ГАИтАЭ. В этом случае, рамка "Допуск до экзаменов в ГАИтАЭ становится неактивной, а рамка "Экзамены в ГАИтАЭ активизируется. Сюда заносится информация о результатах экзаменов в ГАИ, которые в дальнейшем "ияют на статистику общего уровня сдачи/не сдачи экзаменов в ГАИ от автошколы.

Рисунок 31 - Окно "Допуски", после некоторых изменений

Кнопка "СохранитьтАЭ тАУ сохраняет все внесенные изменения о результатах зачетов/экзаменов.

Кнопка "ВыйтитАЭ тАУ возвращает в окно "КлиентытАЭ.

2.4.9 Форма "Информация о клиентетАЭ

Рисунок 32 - Окно "Информация о клиенте"


Эта форма является простым инструментом для формирования отчета по клиенту. Левый выпадающий список содержит тип клиента ("ОкончилтАЭ, "ОбучаемыйтАЭ, "ОжидаеттАЭ), а второй список посредством анализа первого списка заполняется клиентами выбранной категории. Кнопка "ОКтАЭ переводит к отчету по выбранному клиенту.

2.4.10 Форма "Статистика сдачитАЭ

Рисунок 33 - Окно "Статистика сдачи"


Эта форма является основным средством по получению статистической информации, характеризующей уровень сдачи/не сдачи экзаменов клиентами.

Верхнее поле "Всего записей в базетАЭ тАУ содержит количественную информацию о том, сколько клиентов всех статусов ("ОкончилтАЭ, "ОбучаемыйтАЭ, "ОжидаеттАЭ), содержится в базе данных.

Рамка "ФильтрытАЭ тАУ  содержит все формирующие отчет критерии.

Выпадающий список "СтатустАЭ тАУ содержит значения "ЛюбойтАЭ, "ОкончилтАЭ, "ОбучаемыйтАЭ (включение статуса "ОжидаеттАЭ нецелесообразно, так как по понятным причинам клиенты этого статуса не имеют никаких сданных экзаменов).

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

Выпадающий список "АвтомобильтАЭ тАУ содержит значение "ЛюбойтАЭ, и значения всех автомобилей имеющихся в автопарке школы. Также является средством более точного запроса отчета.

Рисунок 34 - Окно "Статистика сдачи"  с детальным запросом


Кнопка "Быстрый отчеттАЭ тАУ предназначена для быстрого формирования результатов и отображения их во всплывающем сообщении.

Рисунок 35 - "Быстрый отчет"


Кнопка "Табличный отчеттАЭ тАУ предназначена для формирования этого же отчета на отдельной таблице с возможностью ее распечатки.

2.4.11 Форма "Статистика инструкторовтАЭ

Рисунок 36 - "Статистика инструкторов"


Эта форма предназначена для формирования отчета о качестве обучения учеников различными инструкторами, посредством анализа статистической информации о сдаче/не сдаче экзаменов их учениками.

Выпадающий список "АвтомобильтАЭ тАУ содержит значение "ЛюбойтАЭ, и значения всех автомобилей имеющихся в автопарке школы.

Выпадающий список "ИнструктортАЭ тАУ формируется посредством анализа первого поля. И заполняется всеми инструкторами, которые обучают на этой модели автомобиля.

Кнопка "ОтчеттАЭ тАУ формирует табличный отчет по заданным критериям.

Кнопка "ЗакрытьтАЭ тАУ возвращает в главное меню.

    1. Отчёты


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

2.5.1 Информация о клиенте


Рисунок 37 тАУ Информация о клиенте


Отчёт "ИнформациятАЭ тАУ отображает всю информацию о выбранном клиенте в таблице. Эта информация содержит помимо общих данных указанных при его регистрации, также и информацию касательно его обучения.

Кнопка "ПечатьтАЭ тАУ открывает диалог отправления этого отчета на печать, а кнопка "ВернутьсятАЭ тАУ скрывает этот лист и возвращает на форму построения отчета.

2.5.2 Результаты учебы

Рисунок 38 - Результаты учебы


Отчет "Результаты учебытАЭ тАУ отображает все данные по учебе, а именно о сдаче экзаменов, различными категориями учеников. Верхнее поле содержит критерии выбранной категории  ("СтатустАЭ, "Год рождениятАЭ, "АвтомобильтАЭ), ниже идут непосредственно сами количественные результаты сдачи  каждого из экзаменов.

В графе "Итого допущено до экзамена в ГАИтАЭ тАУ отображается количественная информация о том, сколько учеников сдали все внутренние экзамены автошколы.

В графе "Итого сдало экзамен в ГАИтАЭ тАУ отображается количественная информация о том, сколько учеников сдали все экзамены в ГАИ и получили возможность получить права.

В графе "Всего записей в базетАЭ тАУ отображается сколько всего запсией в базе данных, которые удовлетворяют заданному критерию.

Кнопка "ПечатьтАЭ тАУ открывает диалог отправления этого отчета на печать, а кнопка "ВернутьсятАЭ тАУ скрывает этот лист и возвращает на форму построения отчета.

2.5.3 Статистика инструкторов

Рисунок 39 - Статистика инструкторов


Отчет "Статистика инструкторовтАЭ тАУ отображает все данные по результатам сдачи экзаменов у конкретных инструкторов.

Графа "ИнструктортАЭ тАУ отображает имя инструктора по которому выдается информация.

Графа "АвтомобильтАЭ тАУ отображает марку автомобиля, на которой проводит обучение инструктор.

Графа "Кол-вотАЭ записанных учеников тАУ отображает количественную информацию об учениках, обучавшихся у данного инструктора. В расчет принимаются только те, кто уже окончил обучение.

Ниже идет подробная информация по каждому экзамену.

Самая нижняя графа тАУ "Процент полностью сдавших экзамены в ГАИтАЭ, отображает процентную информацию о тех, кто сдал все экзамены в гаи, и получил возможность получить права.

Кнопка "ПечатьтАЭ тАУ открывает диалог отправления этого отчета на печать, а кнопка "ВернутьсятАЭ тАУ скрывает этот лист и возвращает на форму построения отчета.


3. Заключение


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

В ходе выполнения курсовой работы была подробно изучена среда разработки VBA и закреплены следующие навыки:

  1. Создание пользовательского интерфейса.
  2. Создание алгоритмов автоматизирующих процесс работы с базой данных.
  3. Занесение новых значений в базу данных.
  4. Обработка ошибочных данных.
  5. Алгоритмы создания отчетной информации.


В дальнейшем возможна доработка этого приложения, в качестве примеров можно привести  следующие доработки:

  1. Добавление новых видов отчетов.
  2. Добавление интерфейсной части по редактированию исходной базы данных (устройство на работу новых сотрудников, расширение автопарка).
  3. Добавление учета посещаемости занятий.
  4. Анализ сдачи экзаменов по сезонам.


4. Литература


  1. Горных Е. Н. Программирование на VBA.: Учебное пособие - Челябинск: Изд. ЮУрГУ, 2003.-76 с.
  2. Уокенбах Джон. Профессиональное программирование на VBA в Excel 2002.:Пер. с англ. тАУ М.: Издательский дом "Вильямс», 2003. тАУ 784 с.

5. Приложения

Здесь содержатся некоторые листинги кода.


5.1 Главная форма


Кнопка "КлиентытАЭ:

Private Sub bt_client_Click()

MainForm.Hide

ClientForm.Show (0)

End Sub


Кнопка "ВыходтАЭ:

Private Sub bt_exit_Click()

MainForm.Hide

Application.DisplayFormulaBar = True

Application.CommandBars("Standard").Visible = True

Application.CommandBars("Formatting").Visible = True

Workbooks("cursed2ex.xls").Save

Workbooks("cursed2ex.xls").Close

End Sub


Кнопка "ГруппытАЭ:

Private Sub bt_group_Click()

MainForm.Hide

GroupForm.Show (0)

End Sub


Кнопка "Статистика сдачитАЭ:

Private Sub bt_stat_Click()

MainForm.Hide

StatForm.Show (0)

End Sub


Кнопка "Статистика инструкторовтАЭ:

Private Sub CommandButton1_Click()

MainForm.Hide

InstrForm.Show (0)

End Sub


Кнопка "СправкатАЭ:

Private Sub CommandButton2_Click()

MainForm.Hide

MainHelpForm.Show (0)

End Sub


Активация главной формы:

Private Sub UserForm_Activate()

Dim x, y As Integer

x = 0

y = 0

Sheets("База").Activate

Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Ожидает" Then

    x = x + 1

    End If

Next i

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Обучаемый" Then

    y = y + 1

    End If

Next i

Sheets("Данные").Activate

If Sheets("Данные").Range("I2") = "" Then lb_beg.Caption = "Не установлено" Else lb_beg.Caption = Sheets("Данные").Range("I2")

If Sheets("Данные").Range("J2") = "" Then lb_end.Caption = "Не установлено" Else lb_end.Caption = Sheets("Данные").Range("J2")

If lb_beg.Caption = "Не установлено" Then lb_rest.Caption = "Не установлено"    Else lb_rest.Caption = CDate(lb_end.Caption) - Date

End Sub

5.2 Форма "СправкатАЭ

Кнопка "Все ясно!тАЭ:

Private Sub CommandButton1_Click()

MainHelpForm.Hide

MainForm.Show (0)

End Sub

Завершение работы формы:

Private Sub UserForm_Terminate()

MainForm.Show (0)

End Sub

Активация формы:

Здесь листинг опущен, так как происходит лишь установка значений текстовых полей, которые очень объемны, по своему содержанию.

5.3 Форма "ГруппытАЭ


Кнопка "ЗакрытьтАЭ:

Private Sub bt_exitgroup_Click()

GroupForm.Hide

MainForm.Show (0)

End Sub


Кнопка "Сформировать группутАЭ:

Private Sub bt_newgroup_Click()

Dim x, y As Integer

x = 0

y = 0

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Ожидает" Then

    x = x + 1

    End If

Next i

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Обучаемый" Then

    y = y + 1

    End If

Next i

If x = 0 Or y > 0 Then

z = MsgBox("Нельзя сформировать группу! ", vbCritical + vbOKOnly, "Автошкола")

Else

GroupForm.Hide

CreateGroupForm.Show (0)

End If

End Sub


Кнопка "Выпустить группутАЭ:

Private Sub bt_unform_Click()

If CDate(Sheets("Данные").Range("J2")) <= Date And lb_cur.ListCount > 0 Then

    x = MsgBox("Вы подтверждаете окончание обучения группы?", vbQuestion + vbYesNo, "Автошкола")

    If x = 6 Then

    Sheets("База").Activate

    Sheets("База").Cells(1, 1).Select

    all = Selection.CurrentRegion.Rows.Count

        For i = 2 To all

            If Sheets("База").Cells(i, 29) = "Обучаемый" Then Cells(i, 29) = "Окончил"

        Next i

    lb_cur.Clear

    Sheets("Данные").Activate

    Sheets("Данные").Range("H2") = ""

    Sheets("Данные").Range("I2") = ""

    Sheets("Данные").Range("J2") = ""

    End If

Else

    If lb_cur.ListCount > 0 Then

        x = MsgBox("Программа обучения еще не пройдена!", vbCritical + vbOKOnly, "Автошкола")

    Else

        x = MsgBox("Группа не набрана!", vbCritical + vbOKOnly, "Автошкола")

    End If

End If

End Sub


Активация формы:

Private Sub UserForm_Activate()

lb_cur.Clear

lb_next.Clear

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Обучаемый" Then lb_cur.AddItem (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4))

Next i

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Ожидает" Then lb_next.AddItem (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4))

Next i

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

MainForm.Show (0)

End Sub



5.4 Форма "Формирование группытАЭ

Кнопка "ЗакрытьтАЭ:

Private Sub bt_exit_Click()

CreateGroupForm.Hide

GroupForm.Show (0)

End Sub


Кнопка "СформироватьтАЭ:

Private Sub bt_save_Click()

On Error GoTo erin:

If ed_date.Text = CDate(ed_date.Text) And ed_enddate.Text = CDate(ed_enddate.Text) And CDate(ed_enddate.Text) > CDate(ed_date.Text) And ListBox1.ListCount <> 0 Then

    answ = MsgBox("Вы действительно хотите сформировать группу в таком составе? Она будет зафиксирована до конца обучения.", vbYesNo + vbQuestion, "Автошкола")

    If (answ = 6) Then

        Sheets("База").Activate

        Sheets("База").Cells(1, 1).Select

        all = Selection.CurrentRegion.Rows.Count

        s = ListBox1.ListCount

        For i = 2 To all

            For k = 0 To s - 1

                If Sheets("База").Cells(i, 29) = "Ожидает" And (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4)) = ListBox1.List(k) Then

                    Sheets("База").Cells(i, 29) = "Обучаемый"

                End If

            Next k

        Next i

        Sheets("Данные").Activate

        Sheets("Данные").Range("I2") = ed_date

        Sheets("Данные").Range("J2") = ed_enddate

        Sheets("Данные").Range("H2") = cb_teacher

        CreateGroupForm.Hide

        GroupForm.Show (0)

    End If

End If

If ed_date.Text <> CDate(ed_date.Text) Or ed_enddate.Text <> CDate(ed_enddate.Text) Or CDate(ed_enddate.Text) <= CDate(ed_date.Text) Or ListBox1.ListCount = 0 Then

erin:

    If ListBox1.ListCount = 0 Then

        x = MsgBox("Группа пуста!", vbCritical + vbOKOnly, "Автошкола")

    Else

        x = MsgBox("Ошибка в дате!", vbCritical + vbOKOnly, "Автошкола")

    End If

End If

End Sub


Кнопка "==>>тАЭ:

Private Sub CommandButton1_Click()

Dim i As Integer

For i = ListBox1.ListCount - 1 To 0 Step -1

If ListBox1.Selected(i) Then

ListBox2.AddItem ListBox1.List(i)

ListBox1.RemoveItem i

End If

Next i

End Sub


Кнопка "<<==тАЭ:

Private Sub CommandButton2_Click()

Dim i As Integer

For i = ListBox2.ListCount - 1 To 0 Step -1

If ListBox2.Selected(i) Then

ListBox1.AddItem ListBox2.List(i)

ListBox2.RemoveItem i

End If

Next i

End Sub


Активация формы:

Private Sub UserForm_Activate()

ed_date.Text = Date

ed_enddate.Text = Date + 90

cb_teacher.ListIndex = 0

ListBox1.Clear

ListBox2.Clear

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Ожидает" Then ListBox2.AddItem (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4))

Next i

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

GroupForm.Show (0)

End Sub

5.5 Форма "КлиентытАЭ

Кнопка "ЗакрытьтАЭ:

Private Sub bt_exitclient_Click()

ClientForm.Hide

MainForm.Show (0)

End Sub


Кнопка "Внести оплатутАЭ:

Private Sub bt_makeblank_Click()

ClientForm.Hide

PayForm.Show (0)

End Sub


Кнопка "Добавить клиентатАЭ:

Private Sub bt_newclient_Click()

ClientForm.Hide

AddClientForm.Show (0)

End Sub


Кнопка "Информация о клиентетАЭ:

Private Sub bt_showsuc_Click()

ClientForm.Hide

SelectForm.Show (0)

End Sub


Кнопка "ДопускитАЭ:

Private Sub bt_waydata_Click()

ClientForm.Hide

WayForm.Show (0)

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

MainForm.Show (0)

End Sub

5.6 Форма "Добавление клиентатАЭ

Кнопка "Внести в базу данных!тАЭ:

Private Sub bt_add_Click()

On Error GoTo erin:

If ed_surname.Text <> "" And ed_name.Text <> "" And ed_patron.Text <> "" And ed_birth.Text <> "" And ed_str.Text <> "" And ed_home.Text <> "" And ed_room.Text <> "" And ed_who.Text <> "" And ed_date.Text <> "" And ed_ser.Text <> "" And ed_num.Text <> "" And Val(ed_home.Text) <> 0 And Val(ed_room.Text) <> 0 And Val(ed_ser.Text) <> 0 And Val(ed_num.Text) <> 0 And Val(ed_birth.Text) <> 0 And Val(ed_date.Text) <> 0 And ed_birth.Text = CDate(ed_birth.Text) And ed_date.Text = CDate(ed_date.Text) Then

    Dim all As Integer

    Sheets("База").Activate

    Sheets("База").Cells(1, 1).Select

    Selection.CurrentRegion.Select

    all = Selection.CurrentRegion.Rows.Count

    Sheets("База").Cells(all + 1, 1) = Val(Sheets("База").Cells(all, 1)) + 1

    Sheets("База").Cells(all + 1, 2) = AddClientForm.ed_surname.Text

    Sheets("База").Cells(all + 1, 3) = AddClientForm.ed_name.Text

    Sheets("База").Cells(all + 1, 4) = AddClientForm.ed_patron.Text

    Sheets("База").Cells(all + 1, 5) = CDate(AddClientForm.ed_birth.Text)

    Sheets("База").Cells(all + 1, 6) = AddClientForm.ed_who.Text

    Sheets("База").Cells(all + 1, 7) = CDate(AddClientForm.ed_date.Text)

    Sheets("База").Cells(all + 1, 8) = AddClientForm.ed_ser.Text

    Sheets("База").Cells(all + 1, 9) = AddClientForm.ed_num.Text

    Sheets("База").Cells(all + 1, 10) = AddClientForm.ed_str.Text

    Sheets("База").Cells(all + 1, 11) = AddClientForm.ed_home.Text

    Sheets("База").Cells(all + 1, 12) = AddClientForm.ed_room.Text

    Sheets("База").Cells(all + 1, 13) = AddClientForm.ed_phone.Text

    Sheets("База").Cells(all + 1, 14) = AddClientForm.ed_mobile.Text

    Sheets("База").Cells(all + 1, 15) = "Нет"

    Sheets("База").Cells(all + 1, 16) = "Нет"

    Sheets("База").Cells(all + 1, 17) = "Нет"

    Sheets("База").Cells(all + 1, 18) = AddClientForm.cb_car.Value

    Sheets("База").Cells(all + 1, 19) = AddClientForm.cb_teacher.Value

    Sheets("База").Cells(all + 1, 20) = 0

    Sheets("База").Cells(all + 1, 21) = 0

    Sheets("База").Cells(all + 1, 23) = "Нет"

    Sheets("База").Cells(all + 1, 24) = "Нет"

    Sheets("База").Cells(all + 1, 25) = "Нет"

    Sheets("База").Cells(all + 1, 26) = "Нет"

    Sheets("База").Cells(all + 1, 27) = "Нет"

    Sheets("База").Cells(all + 1, 28) = "Нет"

    Sheets("База").Cells(all + 1, 29) = "Ожидает"

    x = MsgBox("Клиент успешно занесен в базу данных", vbInformation + vbOKOnly, "Автошкола")

    AddClientForm.Hide

    ClientForm.Show (0)

Else

erin:

    x = MsgBox("Проверьте правильность введеных значений", vbCritical + vbOKOnly, "Автошкола")

End If

End Sub


Кнопка "ЗакрытьтАЭ:

Private Sub bt_exit_Click()

AddClientForm.Hide

ClientForm.Show (0)

End Sub


Список "АвтомобильтАЭ:

Private Sub cb_car_Change()

Sheets("Данные").Activate

cb_teacher.Clear

For i = 2 To 10

    If Sheets("Данные").Cells(i, 4) = cb_car.Value Then cb_teacher.AddItem Sheets("Данные").Cells(i, 3)

Next i

cb_teacher.ListIndex = 0

End Sub


Поле "ДомтАЭ:

Private Sub ed_home_Change()

ed_home.Text = Val(ed_home.Text)

End Sub


Поле "СотовыйтАЭ:

Private Sub ed_mobile_Change()

ed_mobile.Text = Val(ed_mobile.Text)

End Sub


Поле "НомертАЭ:

Private Sub ed_num_Change()

ed_num.Text = Val(ed_num.Text)

End Sub


Поле "Дом. телефонтАЭ:

Private Sub ed_phone_Change()

ed_phone.Text = Val(ed_phone.Text)

End Sub


Поле "КвартиратАЭ:

Private Sub ed_room_Change()

ed_room.Text = Val(ed_room.Text)

End Sub


Поле "СериятАЭ:

Private Sub ed_ser_Change()

ed_ser.Text = Val(ed_ser.Text)

End Sub


Активация формы:

Private Sub UserForm_Activate()

ed_surname.Text = ""

ed_name.Text = ""

ed_patron.Text = ""

ed_birth.Text = ""

ed_who.Text = ""

ed_date.Text = ""

ed_ser.Text = ""

ed_num.Text = ""

ed_str.Text = ""

ed_home.Text = ""

ed_room.Text = ""

ed_phone.Text = ""

ed_mobile.Text = ""

End Sub


Инициализация формы:

Private Sub UserForm_Initialize()

Sheets("Данные").Activate

cb_car.ListIndex = 0

cb_teacher.Clear

cb_teacher.AddItem Cells(4, 3)

cb_teacher.ListIndex = 0

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

AddClientForm.Hide

ClientForm.Show (0)

End Sub


5.7 Форма "Формирование бланка оплатытАЭ

Кнопка "ЗакрытьтАЭ:

Private Sub bt_exit_Click()

PayForm.Hide

ClientForm.Show (0)

End Sub


Кнопка "Сформировать бланктАЭ:

Private Sub bt_makeblank_Click()

If (ed_datepay.Text = CDate(ed_datepay.Text)) And cb_whopay.Text <> "" And ed_money.Value <> "" And ed_money.Value <> 0 Then

Sheets("Оплата").Activate

Sheets("Оплата").Range("B5").Value = cb_whopay.Value

Sheets("Оплата").Range("C8").Value = ed_datepay.Text

Sheets("Оплата").Range("C9").Value = ed_money.Text & " руб."

PayForm.Hide

Sheets("Оплата").Visible = True

Else

    x = MsgBox("Проверьте правильность введеных значений", vbCritical + vbOKOnly, "Автошкола")

End If

End Sub


Кнопка "Подтвердить оплатутАЭ:

Private Sub bt_pay_Click()

If (ed_datepay.Text = CDate(ed_datepay.Text)) And cb_whopay.Text <> "" And ed_money.Value <> "" And ed_money.Value <> 0 Then

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) <> "Окончил" And (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4)) = cb_whopay.Text Then Cells(i, 21) = Val(Cells(i, 21)) + ed_money.Value

Next i

    y = MsgBox("Оплата внесена!", vbInformation + vbOKOnly, "Автошкола")

Else

    x = MsgBox("Проверьте правильность введеных значений", vbCritical + vbOKOnly, "Автошкола")

End If

End Sub


Поле "Сумма платежа (руб.)тАЭ:

Private Sub ed_money_Change()

ed_money.Value = Val(ed_money.Value)

End Sub


Активация формы:

Private Sub UserForm_Activate()

cb_whopay.Clear

ed_money.Value = ""

Dim x As Integer

x = 0

ed_datepay.Text = Date

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) <> "Окончил" Then

    cb_whopay.AddItem (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4))

    x = x + 1

    End If

Next i

If x = 0 Then

    y = MsgBox("Текущая группа пуста!", vbCritical + vbOKOnly, "Автошкола")

    PayForm.Hide

    ClientForm.Show (0)

Else

    cb_whopay.ListIndex = 0

End If

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

PayForm.Hide

ClientForm.Show (0)

End Sub

5.8 Форма "ДопускитАЭ

Процедура (обновление активности):

Sub endis()

level_1.Enabled = True

level_2.Enabled = True

level_3.Enabled = True

If cb_able.Value = True And cb_pdd.Value = True And cb_help.Value = True And Val(desc_howmuchdrive.Text) >= Sheets("Данные").Range("L4") And Val(desc_howmuchpay.Caption) >= Sheets("Данные").Range("L2") Then

            level_1.Enabled = False

            If cb_insidepdd.Value = True And cb_insidedrive.Value = True And cb_insidegorod.Value = True Then

                level_2.Enabled = False

            Else

                level_3.Enabled = False

            End If

        Else

            level_2.Enabled = False

            level_3.Enabled = False

        End If

End Sub


Кнопка "ВыйтитАЭ:

Private Sub bt_exit_Click()

WayForm.Hide

ClientForm.Show (0)

End Sub


Кнопка "СохранитьтАЭ:

Private Sub bt_save_Click()

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If ComboBox1.Text = (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4)) And Sheets("База").Cells(i, 29) = "Обучаемый" Then

        If cb_able.Value = True Then Sheets("База").Cells(i, 17) = "Да" Else Sheets("База").Cells(i, 17) = "Нет"

        If cb_pdd.Value = True Then Sheets("База").Cells(i, 15) = "Да" Else Sheets("База").Cells(i, 15) = "Нет"

        If cb_help.Value = True Then Sheets("База").Cells(i, 16) = "Да" Else Sheets("База").Cells(i, 16) = "Нет"

        If cb_insidepdd.Value = True Then Sheets("База").Cells(i, 23) = "Да" Else Sheets("База").Cells(i, 23) = "Нет"

        If cb_insidedrive.Value = True Then Sheets("База").Cells(i, 24) = "Да" Else Sheets("База").Cells(i, 24) = "Нет"

        If cb_insidegorod.Value = True Then Sheets("База").Cells(i, 25) = "Да" Else Sheets("База").Cells(i, 25) = "Нет"

        If cb_gaipdd.Value = True Then Sheets("База").Cells(i, 26) = "Да" Else Sheets("База").Cells(i, 26) = "Нет"

        If cb_gaidrive.Value = True Then Sheets("База").Cells(i, 27) = "Да" Else Sheets("База").Cells(i, 27) = "Нет"

        If cb_gaigorod.Value = True Then Sheets("База").Cells(i, 28) = "Да" Else Sheets("База").Cells(i, 28) = "Нет"

        Sheets("База").Cells(i, 20) = desc_howmuchdrive.Text

    End If

Next i

End Sub


Элементы типа Checkbox:

Private Sub cb_able_Click()

Call endis

End Sub


Private Sub cb_help_Click()

Call endis

End Sub


Private Sub cb_insidedrive_Click()

Call endis

End Sub


Private Sub cb_insidegorod_Click()

Call endis

End Sub


Private Sub cb_insidepdd_Click()

Call endis

End Sub


Private Sub cb_pdd_Click()

Call endis

End Sub


Список "КлиенттАЭ:

Private Sub ComboBox1_Change()

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If ComboBox1.Text = (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4)) And Sheets("База").Cells(i, 29) = "Обучаемый" Then

        cb_able.Value = False

        cb_pdd.Value = False

        cb_help.Value = False

        cb_insidepdd.Value = False

        cb_insidedrive.Value = False

        cb_insidegorod.Value = False

        cb_gaipdd.Value = False

        cb_gaidrive.Value = False

        cb_gaigorod.Value = False

        level_1.Enabled = True

        level_2.Enabled = True

        level_3.Enabled = True

        If Sheets("База").Cells(i, 17) = "Да" Then cb_able.Value = True

        If Sheets("База").Cells(i, 15) = "Да" Then cb_pdd.Value = True

        If Sheets("База").Cells(i, 16) = "Да" Then cb_help.Value = True

        If Sheets("База").Cells(i, 23) = "Да" Then cb_insidepdd.Value = True

        If Sheets("База").Cells(i, 24) = "Да" Then cb_insidedrive.Value = True

        If Sheets("База").Cells(i, 25) = "Да" Then cb_insidegorod.Value = True

        If Sheets("База").Cells(i, 26) = "Да" Then cb_gaipdd.Value = True

        If Sheets("База").Cells(i, 27) = "Да" Then cb_gaidrive.Value = True

        If Sheets("База").Cells(i, 28) = "Да" Then cb_gaigorod.Value = True

        desc_howmuchdrive.Text = Val(Cells(i, 20))

        desc_howmuchpay.Caption = Val(Cells(i, 21))

        Sheets("Данные").Activate

        Call endis

    End If

Next i

End Sub


Поле "Откатано часовтАЭ:

Private Sub desc_howmuchdrive_Change()

desc_howmuchdrive.Text = Val(desc_howmuchdrive.Text)

Call endis

End Sub


Активация формы:

Private Sub UserForm_Activate()

Dim first, hod As Integer

hod = 0

first = 0

ComboBox1.Clear

cb_able.Value = False

cb_pdd.Value = False

cb_help.Value = False

cb_insidepdd.Value = False

cb_insidedrive.Value = False

cb_insidegorod.Value = False

cb_gaipdd.Value = False

cb_gaidrive.Value = False

cb_gaigorod.Value = False

level_1.Enabled = True

level_2.Enabled = True

level_3.Enabled = True

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 29) = "Обучаемый" Then

    hod = hod + 1

    If hod = 1 Then first = i

    ComboBox1.AddItem (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4))

    End If

Next i

If first <> 0 Then

    i = first

    If Sheets("База").Cells(i, 17) = "Да" Then cb_able.Value = True

    If Sheets("База").Cells(i, 15) = "Да" Then cb_pdd.Value = True

    If Sheets("База").Cells(i, 16) = "Да" Then cb_help.Value = True

    If Sheets("База").Cells(i, 23) = "Да" Then cb_insidepdd.Value = True

    If Sheets("База").Cells(i, 24) = "Да" Then cb_insidedrive.Value = True

    If Sheets("База").Cells(i, 25) = "Да" Then cb_insidegorod.Value = True

    If Sheets("База").Cells(i, 26) = "Да" Then cb_gaipdd.Value = True

    If Sheets("База").Cells(i, 27) = "Да" Then cb_gaidrive.Value = True

    If Sheets("База").Cells(i, 28) = "Да" Then cb_gaigorod.Value = True

    desc_howmuchdrive.Text = Val(Sheets("База").Cells(i, 20))

    desc_howmuchpay.Caption = Val(Sheets("База").Cells(i, 21))

    Sheets("Данные").Activate

    Call endis

    ComboBox1.ListIndex = 0

Else

    y = MsgBox("Текущая группа пуста!", vbCritical + vbOKOnly, "Автошкола")

    WayForm.Hide

    ClientForm.Show (0)

End If

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

ClientForm.Show (0)

End Sub

5.9 Форма "Информация о клиентетАЭ

Кнопка "ОКтАЭ:

Private Sub bt_ok_Click()

If ComboBox1.Text <> "" Then

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If ComboBox1.Text = (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4)) Then

        Sheets("Клиент-Отчет").Range("B3") = ComboBox1.Text

        Sheets("Клиент-Отчет").Range("B4") = Sheets("База").Cells(i, 5)

        Sheets("Клиент-Отчет").Range("B5") = "№ " & Sheets("База").Cells(i, 8) & " " & Sheets("База").Cells(i, 9) & " выдан " & Sheets("База").Cells(i, 6) & ", " & Sheets("База").Cells(i, 7)

        Sheets("Клиент-Отчет").Range("B6") = "ул. " & Sheets("База").Cells(i, 10) & ", " & "дом " & Sheets("База").Cells(i, 11) & ", кв. " & Sheets("База").Cells(i, 12)

        If Sheets("База").Cells(i, 13) <> "" And Sheets("База").Cells(i, 14) <> "" Then

            Sheets("Клиент-Отчет").Range("B7") = Sheets("База").Cells(i, 13) & " ; " & Sheets("База").Cells(i, 14)

        Else

            Sheets("Клиент-Отчет").Range("B7") = Sheets("База").Cells(i, 13) & Sheets("База").Cells(i, 14)

        End If

        Sheets("Клиент-Отчет").Range("D3") = Sheets("База").Cells(i, 19)

        Sheets("Клиент-Отчет").Range("D4") = Sheets("Данные").Range("H2")

        Sheets("Клиент-Отчет").Range("D5") = Sheets("База").Cells(i, 18)

        Sheets("Клиент-Отчет").Range("D6") = Sheets("База").Cells(i, 21)

        Sheets("Клиент-Отчет").Range("D7") = Sheets("База").Cells(i, 20)

       

        Sheets("Клиент-Отчет").Range("B9") = Sheets("База").Cells(i, 17)

        Sheets("Клиент-Отчет").Range("B10") = Sheets("База").Cells(i, 15)

        Sheets("Клиент-Отчет").Range("B11") = Sheets("База").Cells(i, 16)

        Sheets("Клиент-Отчет").Range("D9") = Sheets("База").Cells(i, 23)

        Sheets("Клиент-Отчет").Range("D10") = Sheets("База").Cells(i, 24)

        Sheets("Клиент-Отчет").Range("D11") = Sheets("База").Cells(i, 25)

       

        Sheets("Клиент-Отчет").Range("A14") = Sheets("База").Cells(i, 26)

        Sheets("Клиент-Отчет").Range("C14") = Sheets("База").Cells(i, 27)

        Sheets("Клиент-Отчет").Range("D14") = Sheets("База").Cells(i, 28)


    End If

Next i

SelectForm.Hide

Sheets("Клиент-Отчет").Activate

Sheets("Клиент-Отчет").Visible = True

Else

x = MsgBox("Нет клиентов в этой категории!", vbCritical + vbOKOnly, "Автошкола")

End If

End Sub


Список "СтатустАЭ:

Private Sub ComboBox2_Change()

Dim hod As Integer

hod = 0

ComboBox1.Clear

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

status = ComboBox2.Text

For i = 2 To all

    If Sheets("База").Cells(i, 29) = status Then

    hod = hod + 1

    If hod = 1 Then first = i

    ComboBox1.AddItem (Sheets("База").Cells(i, 2) & " " & Sheets("База").Cells(i, 3) & " " & Sheets("База").Cells(i, 4))

    End If

Next i

If hod <> 0 Then ComboBox1.ListIndex = 0

End Sub


Активизация формы:

Private Sub UserForm_Activate()

ComboBox1.Clear

ComboBox2.Clear

ComboBox2.AddItem ("Ожидает")

ComboBox2.AddItem ("Обучаемый")

ComboBox2.AddItem ("Окончил")

ComboBox2.ListIndex = 0

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

ClientForm.Show (0)

End Sub

5.10 Форма "Статистика сдачитАЭ

Кнопка "Быстрый отчеттАЭ:

Private Sub bt_filter_Click()

Dim ins1, ins2, ins3, gai1, gai2, gai3, fins, fgai As Integer

ins1 = 0

ins2 = 0

ins3 = 0

gai1 = 0

gai2 = 0

gai3 = 0

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

Selection.CurrentRegion.Select

all = Selection.CurrentRegion.Rows.Count

Sheets("База").Activate

Sheets("База").Cells(1, 36).Select

Selection.CurrentRegion.Select

Selection.Clear

Sheets("База").Cells(2, 31) = ""

Sheets("База").Cells(2, 32) = ""

Sheets("База").Cells(2, 33) = ""

Sheets("База").Cells(2, 34) = ""

If cb_stat.Text = "Любой" Then Sheets("База").Cells(2, 31) = "" Else Sheets("База").Cells(2, 31) = cb_stat.Text

If CheckBox1 = True Then

    Sheets("База").Cells(2, 32) = ">=" & CDate("1.1." & ed_year.Text)

    Sheets("База").Cells(2, 33) = "<" & CDate("1.1." & Val(ed_year.Text) + 1)

End If

If cb_car.Text = "Любой" Then Sheets("База").Cells(2, 34) = "" Else Sheets("База").Cells(2, 34) = cb_car.Text

Sheets("База").Range(Cells(1, 1), Cells(all, 29)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("База").Range( _

        "AE1:AH2"), CopyToRange:=Sheets("База").Range("AJ1"), Unique:=False

If CheckBox1.Value = True Then y = ed_year.Text Else y = "Любой"

Sheets("База").Cells(1, 36).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 58) = "Да" Then ins1 = ins1 + 1

    If Sheets("База").Cells(i, 59) = "Да" Then ins2 = ins2 + 1

    If Sheets("База").Cells(i, 60) = "Да" Then ins3 = ins3 + 1

    If Sheets("База").Cells(i, 58) = "Да" And Sheets("База").Cells(i, 59) = "Да" And Sheets("База").Cells(i, 60) = "Да" Then fins = fins + 1

    If Sheets("База").Cells(i, 61) = "Да" Then gai1 = gai1 + 1

    If Sheets("База").Cells(i, 62) = "Да" Then gai2 = gai2 + 1

    If Sheets("База").Cells(i, 63) = "Да" Then gai3 = gai3 + 1

    If Sheets("База").Cells(i, 61) = "Да" And Sheets("База").Cells(i, 62) = "Да" And Sheets("База").Cells(i, 63) = "Да" Then fgai = fgai + 1

Next i

x = MsgBox("По вашему запросу:" & vbNewLine & "Статус -" & cb_stat.Text & ", Год рождения: " & y & ", Автомобиль: " & cb_car.Text & vbNewLine & vbNewLine & "Всего записей: " & all - 1 & vbNewLine & vbNewLine & "Сдавших внутренний экзамен - ПДД: " & ins1 & vbNewLine & "Сдавших внутренний экзамен - Автодром: " & ins2 & vbNewLine & "Сдавших внутренний экзамен - Город: " & ins3 & vbNewLine & "Итого допущеных до экзамена в ГАИ: " & fins & vbNewLine & "Сдавших экзамен в ГАИ - ПДД: " & gai1 & vbNewLine & "Сдавших экзамен в ГАИ - Автодром: " & gai2 & vbNewLine & "Сдавших экзамен в ГАИ - Город: " & gai3 & vbNewLine & "Итого получивших права: " & fgai, vbInformation + vbOKOnly, "Автошкола")

End Sub


Кнопка "Табличный отчеттАЭ:

Private Sub bt_tab_Click()

Sheets("Отчет").Visible = True

Dim ins1, ins2, ins3, gai1, gai2, gai3, fins, fgai As Integer

ins1 = 0

ins2 = 0

ins3 = 0

gai1 = 0

gai2 = 0

gai3 = 0

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

Selection.CurrentRegion.Select

all = Selection.CurrentRegion.Rows.Count

Sheets("База").Activate

Sheets("База").Cells(1, 36).Select

Selection.CurrentRegion.Select

Selection.Clear

Sheets("База").Cells(2, 31) = ""

Sheets("База").Cells(2, 32) = ""

Sheets("База").Cells(2, 33) = ""

Sheets("База").Cells(2, 34) = ""

If cb_stat.Text = "Любой" Then Sheets("База").Cells(2, 31) = "" Else Sheets("База").Cells(2, 31) = cb_stat.Text

If CheckBox1 = True Then

    Sheets("База").Cells(2, 32) = ">=" & CDate("1.1." & ed_year.Text)

    Sheets("База").Cells(2, 33) = "<" & CDate("1.1." & Val(ed_year.Text) + 1)

End If

If cb_car.Text = "Любой" Then Sheets("База").Cells(2, 34) = "" Else Sheets("База").Cells(2, 34) = cb_car.Text

Sheets("База").Range(Cells(1, 1), Cells(all, 29)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("База").Range( _

        "AE1:AH2"), CopyToRange:=Sheets("База").Range("AJ1"), Unique:=False

If CheckBox1.Value = True Then y = ed_year.Text Else y = "Любой"

Sheets("База").Cells(1, 36).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 58) = "Да" Then ins1 = ins1 + 1

    If Sheets("База").Cells(i, 59) = "Да" Then ins2 = ins2 + 1

    If Sheets("База").Cells(i, 60) = "Да" Then ins3 = ins3 + 1

    If Sheets("База").Cells(i, 58) = "Да" And Sheets("База").Cells(i, 59) = "Да" And Sheets("База").Cells(i, 60) = "Да" Then fins = fins + 1

    If Sheets("База").Cells(i, 61) = "Да" Then gai1 = gai1 + 1

    If Sheets("База").Cells(i, 62) = "Да" Then gai2 = gai2 + 1

    If Sheets("База").Cells(i, 63) = "Да" Then gai3 = gai3 + 1

    If Sheets("База").Cells(i, 61) = "Да" And Sheets("База").Cells(i, 62) = "Да" And Sheets("База").Cells(i, 63) = "Да" Then fgai = fgai + 1

Next i

Sheets("Отчет").Activate

Sheets("Отчет").Range("A3") = cb_stat.Text

If ed_year.Text = "" Then Sheets("Отчет").Range("B3") = "Любой" Else Sheets("Отчет").Range("B3") = ed_year.Text

Sheets("Отчет").Range("C3") = cb_car.Text

Sheets("Отчет").Range("B4") = ins1

Sheets("Отчет").Range("B5") = ins2

Sheets("Отчет").Range("B6") = ins3

Sheets("Отчет").Range("D4") = gai1

Sheets("Отчет").Range("D5") = gai2

Sheets("Отчет").Range("D6") = gai3

Sheets("Отчет").Range("D8") = fins

Sheets("Отчет").Range("D10") = fgai

Sheets("Отчет").Range("B11") = all - 1

StatForm.Hide

End Sub


Флажок "Активация года рождениятАЭ:

Private Sub CheckBox1_Click()

If CheckBox1 = True Then

    ed_year.Enabled = True

    ed_year.Text = 1990

Else

    ed_year.Enabled = False

    ed_year.Text = ""

End If

End Sub


Поле "Год рождениятАЭ:

Private Sub ed_year_Change()

If CheckBox1 = True Then ed_year.Text = Val(ed_year.Text)

End Sub


Активация формы:

Private Sub UserForm_Activate()

cb_stat.Clear

cb_car.Clear

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

all = Selection.CurrentRegion.Rows.Count

descnumcount.Caption = all - 1

cb_stat.AddItem ("Любой")

cb_stat.AddItem ("Обучаемый")

cb_stat.AddItem ("Окончил")

cb_stat.ListIndex = 0

Sheets("Данные").Activate

Sheets("Данные").Cells(1, 14).Select

alld = Selection.CurrentRegion.Rows.Count

cb_car.AddItem ("Любой")

For i = 2 To alld

    cb_car.AddItem (Sheets("Данные").Cells(i, 14))

Next i

cb_car.ListIndex = 0

ed_year.Enabled = False

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

StatForm.Hide

MainForm.Show (0)

End Sub

5.11 Форма "Статистика инструкторовтАЭ

Список "АвтомобильтАЭ:

Private Sub cb_car_Change()

Sheets("Данные").Activate

cb_teacher.Clear

For i = 2 To 10

    If Sheets("Данные").Cells(i, 4) = cb_car.Value Then cb_teacher.AddItem Sheets("Данные").Cells(i, 3)

Next i

If cb_car.Value = "Любой" Then cb_teacher.AddItem "Любой"

cb_teacher.ListIndex = 0

End Sub


Кнопка "ЗакрытьтАЭ:

Private Sub CommandButton1_Click()

InstrForm.Hide

MainForm.Show (0)

End Sub


Кнопка "ОтчеттАЭ:


Private Sub CommandButton2_Click()

Dim ins1, ins2, gai1, gai2, fins, fgai As Integer

ins1 = 0

ins2 = 0

gai1 = 0

gai2 = 0

fins = 0

fgai = 0

Sheets("База").Activate

Sheets("База").Cells(1, 1).Select

Selection.CurrentRegion.Select

all = Selection.CurrentRegion.Rows.Count

Sheets("База").Activate

Sheets("База").Range("BN2") = ""

Sheets("База").Range("BO2") = ""

Sheets("База").Cells(1, 70).Select

Selection.CurrentRegion.Select

Selection.Clear

If cb_car.Text <> "Любой" Then Sheets("База").Range("BN2") = cb_car.Text

If cb_teacher.Text <> "Любой" Then Sheets("База").Range("BO2") = cb_teacher.Text

Sheets("База").Range(Cells(1, 1), Cells(all, 29)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("База").Range( _

        "BN1:BP2"), CopyToRange:=Sheets("База").Range("BR1"), Unique:=False

Sheets("База").Cells(1, 70).Select

all = Selection.CurrentRegion.Rows.Count

For i = 2 To all

    If Sheets("База").Cells(i, 93) = "Да" Then ins1 = ins1 + 1

    If Sheets("База").Cells(i, 94) = "Да" Then ins2 = ins2 + 1

    If Sheets("База").Cells(i, 92) = "Да" And Sheets("База").Cells(i, 93) = "Да" And Sheets("База").Cells(i, 94) = "Да" Then fins = fins + 1

    If Sheets("База").Cells(i, 96) = "Да" Then gai1 = gai1 + 1

    If Sheets("База").Cells(i, 97) = "Да" Then gai2 = gai2 + 1

    If Sheets("База").Cells(i, 95) = "Да" And Sheets("База").Cells(i, 96) = "Да" And Sheets("База").Cells(i, 97) = "Да" Then fgai = fgai + 1

Next i

Sheets("Отчет_Инструктор").Activate

Sheets("Отчет_Инструктор").Range("B1") = cb_teacher.Text

Sheets("Отчет_Инструктор").Range("B2") = cb_car.Text

Sheets("Отчет_Инструктор").Range("B3") = all - 1

Sheets("Отчет_Инструктор").Range("B4") = ins1

Sheets("Отчет_Инструктор").Range("B5") = ins2

Sheets("Отчет_Инструктор").Range("B6") = fins

Sheets("Отчет_Инструктор").Range("B7") = gai1

Sheets("Отчет_Инструктор").Range("B8") = gai2

Sheets("Отчет_Инструктор").Range("B9") = fgai

Sheets("Отчет_Инструктор").Range("B11") = ((100 / (all - 1)) * fgai) / 100

InstrForm.Hide

Sheets("Отчет_Инструктор").Visible = True

End Sub


Активация формы:

Private Sub UserForm_Activate()

Sheets("Данные").Activate

cb_car.Clear

cb_car.AddItem ("Любой")

cb_car.AddItem ("ВАЗ-2105")

cb_car.AddItem ("ВАЗ-2106")

cb_car.AddItem ("ВАЗ-2108")

cb_car.AddItem ("ВАЗ-2109")

cb_car.AddItem ("ВАЗ-2110")

cb_car.ListIndex = 0

End Sub


Завершение работы формы:

Private Sub UserForm_Terminate()

MainForm.Show (0)

End Sub

Страницы: Назад 1 Вперед