Аннотация
Плохов В.В. Автошкола “Кадиллак”
Челябинск: ЮУрГУ, ЭиУ; 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. Введение
MicrosoftExcel имеет встроенный язык программирования — Visual Basic for Аpplications(VBA). Этот язык позволяет создавать приложения, выполняемые в среде MicrosoftOffice. Это могут быть разнообразные аналитические программы, финансовыесистемы, программы учета кадров, системы автоматического создания официальныхписем/документов с помощью библиотеки готовых шаблонов и т.п. При этоминтерфейс создаваемой программы может быть совершенно непохожим на интерфейстого приложения, в котором она написана.
VBAсочетает в себе практически неограниченные возможности с простотой изучения ииспользования. Теперь большинство функций можно описать, не прибегая к программированию.
ПрограммаMS Excel, являясь лидером на рынке программ обработки электронных таблиц,определяет тенденции развития в этой области. Вплоть до версии 4.0 программаExcel представляла собой фактический стандарт с точки зрения функциональныхвозможностей и удобства работы.
Однимиз важнейших функциональных расширений программы, предназначенным дляпрофессионалов, является встроенная в Excel Среда программирования Visual Basic(VBA) для решения прикладных задач. Благодаря VBA фирме Microsoft удалось нетолько расширить возможности языка макрокоманд Excel 4.0, но и ввести новыйуровень прикладного программирования, поскольку VBA позволяет создаватьполноценные прикладные пакеты, которые по своим функциям выходят далеко зарамки обработки электронных таблиц.
VisualBasic for Applications представляет собой новаторское достижение в языкахпрограммирования, возможно наиболее значительное с тех пор, как состоялсявыпуск первой интегрированной среды разработки. Это означает, не то что VBA —лучшее средство разработки, а лишь то, что VBA существует. Поскольку основойприложений Microsoft послужил один и тот же язык программирования, вероятно,многим придет в голову мысль воспользоваться им. Точно так же, какпользователям Windows для подготовки множества программ необходимо освоить одининтерфейс, в VBA достаточно изучить одну среду программирования, чтобысоставлять разнообразные приложения.
ВстраиваниеVBA в какое-то приложение означает для него создание объектной модели, врезультате VBA-программа может обращаться к объектам этого приложения иманипулировать ими.
Введениедостаточно мощного языка программирования в Excel делает эту программнуюплатформу весьма привлекательной для профессионалов, которые занимаютсяразработкой специализированных прикладных систем.
Разработкаязыка программирования VBA, встраиваемого в прикладные системы, является однимиз стратегических направлений компании Microsoft. Этот язык уже интегрирован втакие программы, как Word for Windows, Power Point и ряд других. VBA позволяетсоздавать программные модули, меню, диалоговые окна и другие ресурсы в средеWindows. Благодаря этому языку появляется возможность значительно расширитьнабор функций в Excel, а также создавать функции, значения которых зависят отнекоторых условий и событий.
2. Основнаячасть2.1 Постановка задачи
Используясредства Microsoft Office Excelи средство разработки программных продуктов VBA создатьприложение, автоматизирующее оперирование информацией предприятия типа“Автошкола”. А именно:
1) Добавлениеновых клиентов в базу данных автошколы.
2) Формированиегруппы.
3) Расформированиегруппы.
4) Вносоплаты клиентами.
5) Редактированиенеобходимой информации об учебе (Экзамены/Зачеты).
6) Просмотрполной отчетной информации о клиенте.
7) Формированиеотчетов об успешности сдачи экзаменов различными категориями клиентов.
8) Формированиеотчетов об успешности сдачи экзаменов учениками обучаемыми конкретнымиинструкторами (для анализа работы инструкторов).
9) Справкапо программе.2.2 Исходные данные
Исходнаятаблица данных хранится на листе “Данные” (по умолчанию скрыт). На немсодержится информация о преподавателях теории.
/>
Рисунок 1 – “Преподаватели теории”
Такжена нем содержится информация о преподавателях вождения.
/>
Рисунок 2 — «Преподаватели вождения»
Информацияо текущей группе (эта информация записывается средствами диалога формированиягруппы).
/>
Рисунок 3 — «Текущая группа»
Информацияоб условиях обучения (оплате за курс обучения, необходимому количествуоткатанных часов).
/>
Рисунок 4 — «Условия обучения»
Главнаябаза данных же, формируется на листе “База”, который также по умолчанию скрыт.
2.3 Описание структуры приложения
/>2.4 Описание форм2.4.1Главная форма
При открытиирабочей книги проекта, автоматически запускается главная форма приложения.
/>
Рисунок 5 – Главная форма
В рамке“Текущая группа” – содержится информация о дате, когда было начато обучениегруппы. Дата, когда программа обучения будет пройдена, а также количество днейоставшихся до конца программы обучения. Если в поле “Осталось дней до концаобучения” – содержится отрицательное число – это значит, что программа обученияуже была завершена, однако группа еще не расформирована, по каким-либопричинам.
Однако всеэти данные отображаются при условии, что группа сформирована, в противном жеслучае в рамке будет отображено “Не установлено”.
/>
Рисунок 6 — Рамка «текущая группа», при наличии текущейгруппы
/>
Рисунок 7 – Рамка «текущая группа», при отсутствии текущейгруппы
Кнопка“Справка” на главной форме – открывает окно, отображающее краткую справочнуюинформацию по использованию приложения.
Кнопка“Группа” на главной форме – открывает окно, по управлению группой, где можноформировать и расформировывать группы.
Кнопка“Клиенты” на главной форме – открывает окно Клиенты, где производятся всеосновные операции с клиентами, такие как добавление нового клиента, внесениеоплаты клиентами, управление допусками клиента (внесение информации о сдачеэкзаменов и зачетов), получение полной информации по клиенту.
Кнопка“Статистика сдачи” на главной форме – открывает окно позволяющее формироватьотчеты о сдаче экзаменов различными категориями клиентов обучаемых/обученных вавтошколе.
Кнопка“Статистика инструкторов” на главной форме – ткрывает окно позволяющееформировать отчеты о сдаче экзаменов учениками, обучающимися у конкретныхмастеров.
Кнопка“Выход” – сохраняет все внесенные изменения, и закрывает приложение. 2.4.2 Форма “Справка”
ВСправке информация разбита по категориям, каждая из которых отображается в своюочередь в отдельной рамке. Справка содержит минимально необходимую информациюпо работе с приложением. Клик на кнопке “Все ясно!” в справке – приводит квозвращению в главное меню программы. />
Рисунок8 – Справка2.4.3 Форма “Группы”
/>
Рисунок 9 – окно “Группа”
Здесь вдвух вкладках содержатся списки клиентов. Во вкладке “Текущая группа” – содержитсясписок клиентов, которые в данный момент проходят обучение. А во вкладке“Очередь” – содержится список клиентов, которые записаны в автошколу, однакоеще не начали обучение. Если текущая группа не сформирована, то список навкладке “Текущая группа” будет пуст.
/> />
Рисунок 10 – Список Рисунок 11 — Список «Очередь»
“Текущая группа”
Кнопка“Сформировать группу” – открывает окно формирования группы в том случае, еслитекущей группы не существует, в противном случае будет возвращено сообщение обошибке.
/>
Рисунок 12 – Сообщение об ошибке
Кнопка“Выпустить группу”, если план обучения не завершен, выдаст ошибку оневозможности расформирования группы.
/>
Рисунок 13 –Ошибка “Программа обучения не пройдена”
Еслипрограмма обучения пройдена, то появится запрос на подтверждение орасформировании группы.
/>
Рисунок 14 — Запрос «Расформирование группы»
Ответ“Нет” вернет в окно “Группа”, ответ “Да” также вернет в окно группа, однакотекущая группа будет расформирована, а всем обучающимся присвоен статус“Окончил”.
Кнопка“Закрыть” – вернет в главное меню.2.4.4Форма “Формирование группы”
Приактивации окна формирования группы, автоматически устанавливаются значенияполей “Начало обучения” и “Конец обучения”. “Начало обучения” устанавливается всоответствии с текущей системной датой, а конец обучения через 90-дневный срокот текущей даты. Выпадающий список “Учитель” содержит фамилии всехпреподавателей теории.
/>
Рисунок 15- Окно формирования группы
Дляформирования группы необходимо перенести клиентов, которые будут включены вгруппу, из списка “Ожидающие клиенты” в список “Формируемая группа”. Перенососуществляется посредством кнопок “==>>” и “
/>
Рисунок 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 — «Статистика инструкторов»
Этаформа предназначена для формирования отчета о качестве обучения учениковразличными инструкторами, посредством анализа статистической информации о сдаче/несдаче экзаменов их учениками.
Выпадающийсписок “Автомобиль” – содержит значение “Любой”, и значения всех автомобилейимеющихся в автопарке школы.
Выпадающийсписок “Инструктор” – формируется посредством анализа первого поля. Изаполняется всеми инструкторами, которые обучают на этой модели автомобиля.
Кнопка“Отчет” – формирует табличный отчет по заданным критериям.
Кнопка“Закрыть” – возвращает в главное меню.2.5 Отчёты
В этомприложении представлены 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 Sub5.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»)) 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 Sub5.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) AndListBox1.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)
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 Sub5.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 Sub5.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 "" AndVal(ed_home.Text) 0 And Val(ed_room.Text) 0 AndVal(ed_ser.Text) 0 And Val(ed_num.Text) 0 AndVal(ed_birth.Text) 0 And Val(ed_date.Text) 0 Anded_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 Sub5.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 "" Anded_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 "" Anded_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 Sub5.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) = «Да» ElseSheets(«База»).Cells(i, 17) = «Нет»
If cb_pdd.Value = True Then Sheets(«База»).Cells(i, 15) = «Да» ElseSheets(«База»).Cells(i, 15) = «Нет»
If cb_help.Value = True Then Sheets(«База»).Cells(i, 16) = «Да» ElseSheets(«База»).Cells(i, 16) = «Нет»
If cb_insidepdd.Value = True Then Sheets(«База»).Cells(i, 23) = «Да» ElseSheets(«База»).Cells(i, 23) = «Нет»
If cb_insidedrive.Value = True Then Sheets(«База»).Cells(i, 24) = «Да» ElseSheets(«База»).Cells(i, 24) = «Нет»
If cb_insidegorod.Value = True Then Sheets(«База»).Cells(i, 25) = «Да» ElseSheets(«База»).Cells(i, 25) = «Нет»
If cb_gaipdd.Value = True Then Sheets(«База»).Cells(i, 26) = «Да» ElseSheets(«База»).Cells(i, 26) = «Нет»
If cb_gaidrive.Value = True Then Sheets(«База»).Cells(i, 27) = «Да» ElseSheets(«База»).Cells(i, 27) = «Нет»
If cb_gaigorod.Value = True Then Sheets(«База»).Cells(i, 28) = «Да» ElseSheets(«База»).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 Sub5.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 Sub5.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 = «Любой» ThenSheets(«База»).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) ="
End If
If cb_car.Text = «Любой» ThenSheets(«База»).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) = «Да» AndSheets(«База»).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) = «Да» AndSheets(«База»).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 = «Любой» ThenSheets(«База»).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) ="
End If
If cb_car.Text = «Любой» ThenSheets(«База»).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) = «Да» AndSheets(«База»).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) = «Да» AndSheets(«База»).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 Sub5.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 = «Любой» Thencb_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) = «Да» AndSheets(«База»).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) = «Да» AndSheets(«База»).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