--PAGE_BREAK--
Рисунок SEQ Рисунок \* ARABIC 28 — сообщение ошибочных данных
В том случае, если вы удачно перешли к бланку оплаты, то окно “Формирование бланка оплаты” будет скрыто, и вы сможете распечатать бланк посредством кнопки “Печать”, либо вернуться к окну “Формирование бланка оплаты” посредством кнопки “Вернуться”.
После того, как плательщик передаст деньги кассиру и распишется об оплате денег, то необходимо занести сведения об оплате клиентом в базу данных. Для этого с нужными выбранными значениями окна “Формирование бланка оплаты” нужно нажать на кнопку “Подтвердить оплату”. Тогда, вам будет отображено сообщение об успешном занесении оплаты в базу данных.
Рисунок SEQ Рисунок \* ARABIC 29 – Сообщение внесения оплаты
Кнопка “Закрыть” – возвратит вас к окну “Клиенты”.
2.4.8 Форма “Допуски”
Рисунок SEQ Рисунок \* ARABIC 30 — Окно «Допуски»
Вверху содержится выпадающий список, который включает в себя всех клиентов, которые в данный момент проходят обучение. После выбора клиента отображается информация о том сколько он оплатил, сколько откатал часов, и какие экзамены/зачеты он сдал. Для получения допуска до внутренних экзаменов, клиент должен сдать все зачеты, а именно “ПДД”, “Первая помощь”, должен пройти медицинский осмотр, оплатить полную сумму обучения, и откатать положенный минимум академических часов на автомобиле. Если все эти условия будут выполнены, то рамка “Допуск до внутренних экзаменов” станет неактивной, и активизируется рамка “Допуск до экзаменов в ГАИ”. Для того чтобы получить допуск до экзаменов в ГАИ, клиент обязан успешно сдать внутренние экзамены, а именно “ПДД”, “Автодром”, “Город”. Только после успешной сдачи этих экзаменов клиент может быть допущен до окончательного этапа “Экзамены в ГАИ”. В этом случае, рамка “Допуск до экзаменов в ГАИ” становится неактивной, а рамка “Экзамены в ГАИ” активизируется. Сюда заносится информация о результатах экзаменов в ГАИ, которые в дальнейшем влияют на статистику общего уровня сдачи/не сдачи экзаменов в ГАИ от автошколы.
Рисунок SEQ Рисунок \* ARABIC 31 — Окно «Допуски», после некоторых изменений
Кнопка “Сохранить” – сохраняет все внесенные изменения о результатах зачетов/экзаменов.
Кнопка “Выйти” – возвращает в окно “Клиенты”.
2.4.9 Форма “Информация о клиенте”
Рисунок SEQ Рисунок \* ARABIC 32 — Окно «Информация о клиенте»
Эта форма является простым инструментом для формирования отчета по клиенту. Левый выпадающий список содержит тип клиента (“Окончил”, “Обучаемый”, “Ожидает”), а второй список посредством анализа первого списка заполняется клиентами выбранной категории. Кнопка “ОК” переводит к отчету по выбранному клиенту.
2.4.10 Форма “Статистика сдачи”
Рисунок SEQ Рисунок \* ARABIC 33 — Окно «Статистика сдачи»
Эта форма является основным средством по получению статистической информации, характеризующей уровень сдачи/не сдачи экзаменов клиентами.
Верхнее поле “Всего записей в базе” – содержит количественную информацию о том, сколько клиентов всех статусов (“Окончил”, “Обучаемый”, “Ожидает”), содержится в базе данных.
Рамка “Фильтры” – содержит все формирующие отчет критерии.
Выпадающий список “Статус” – содержит значения “Любой”, “Окончил”, “Обучаемый” (включение статуса “Ожидает” нецелесообразно, так как по понятным причинам клиенты этого статуса не имеют никаких сданных экзаменов).
Поле “Год рождения” – предназначено для введения года рождения клиентов, по которым производится запрос, однако по умолчанию это поле неактивно. для того чтобы активизировать это поле, необходимо включить флажок расположенный правее него, тогда год рождения будет учтен при анализе информации фильтров, в противном случае, год рождения учтен не будет.
Выпадающий список “Автомобиль” – содержит значение “Любой”, и значения всех автомобилей имеющихся в автопарке школы. Также является средством более точного запроса отчета.
Рисунок SEQ Рисунок \* ARABIC 34 — Окно «Статистика сдачи» с детальным запросом
Кнопка “Быстрый отчет” – предназначена для быстрого формирования результатов и отображения их во всплывающем сообщении.
Рисунок SEQ Рисунок \* ARABIC 35 — «Быстрый отчет»
Кнопка “Табличный отчет” – предназначена для формирования этого же отчета на отдельной таблице с возможностью ее распечатки.
2.4.11 Форма “Статистика инструкторов”
Рисунок SEQ Рисунок \* ARABIC 36 — «Статистика инструкторов»
Эта форма предназначена для формирования отчета о качестве обучения учеников различными инструкторами, посредством анализа статистической информации о сдаче/не сдаче экзаменов их учениками.
Выпадающий список “Автомобиль” – содержит значение “Любой”, и значения всех автомобилей имеющихся в автопарке школы.
Выпадающий список “Инструктор” – формируется посредством анализа первого поля. И заполняется всеми инструкторами, которые обучают на этой модели автомобиля.
Кнопка “Отчет” – формирует табличный отчет по заданным критериям.
Кнопка “Закрыть” – возвращает в главное меню.
2.5 Отчёты В этом приложении представлены 3 различных отчета, которые представляют собой сформированную законченным образом табличную информацию.
2.5.1 Информация о клиенте
Рисунок SEQ Рисунок \* ARABIC 37 – Информация о клиенте
Отчёт “Информация” – отображает всю информацию о выбранном клиенте в таблице. Эта информация содержит помимо общих данных указанных при его регистрации, также и информацию касательно его обучения.
Кнопка “Печать” – открывает диалог отправления этого отчета на печать, а кнопка “Вернуться” – скрывает этот лист и возвращает на форму построения отчета.
2.5.2 Результаты учебы
Рисунок SEQ Рисунок \* ARABIC 38 — Результаты учебы
Отчет “Результаты учебы” – отображает все данные по учебе, а именно о сдаче экзаменов, различными категориями учеников. Верхнее поле содержит критерии выбранной категории (“Статус”, “Год рождения”, “Автомобиль”), ниже идут непосредственно сами количественные результаты сдачи каждого из экзаменов.
В графе “Итого допущено до экзамена в ГАИ” – отображается количественная информация о том, сколько учеников сдали все внутренние экзамены автошколы.
В графе “Итого сдало экзамен в ГАИ” – отображается количественная информация о том, сколько учеников сдали все экзамены в ГАИ и получили возможность получить права.
В графе “Всего записей в базе” – отображается сколько всего запсией в базе данных, которые удовлетворяют заданному критерию.
Кнопка “Печать” – открывает диалог отправления этого отчета на печать, а кнопка “Вернуться” – скрывает этот лист и возвращает на форму построения отчета.
2.5.3 Статистика инструкторов
Рисунок SEQ Рисунок \* ARABIC 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»)) 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)
продолжение
--PAGE_BREAK--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
продолжение
--PAGE_BREAK--