Часть2.
После нажатия кнопки «Продолжить» на UserForm1 открывается UserForm2 – «Часть2».
Задание2 чати2 выполнено с использованием инструментов Excel. Чтобы оно выполнялось при нажатии определенных кнопок на UserForm2, необходимо, пользуясь средствами Excel одновременно записывать макросы, которые затем вставить в процедуры нажатия соответствующих кнопок. Для этого необходимо нажать Сервис – Макрос – Начать запись, выполнить необходимые действия и завершить запись макроса. В записанном макросе появится нужная программа, которую затем надо вставить в процедуру нажатия какой-либо кнопки.
Задание1.Часть2.
Для выполнения задания1 части2 – упорядочивание информации по номеру телефонной станции в порядке возрастания и по сроку оплаты в порядке убывания на пользовательской форме разработаны две кнопки условия: optionbutton1(«По полю ФИО в порядке возрастания») и optionbutton2(«В порядке убывания заработной платы»). Чтобы получить необходимую программу, надо выделить начальные данные проекта на таблице «Данные», скопировать их на отдельный лист, нажать на панели инструментов Excel Данные – Сортировка. Появится меню, в котором нужно выбрать сортировку по колонке «ФИО» по возрастанию. Таблица будет упорядочена в соответствии с этим критерием. Затем проделать то же самое, но выбрать колонку «К выдаче» и сортировку по убыванию. Полученные программы в макросах надо вставить в процедуру нажатия кнопки «Запустить»:
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
Worksheets(5).Activate
Range("A1:I48").Select
Selection.ClearContents
Range("A1").Select
ActiveWindow.Zoom = 70
Worksheets(5).Name = "Упорядочивание по ФИО"
Worksheets(5).Cells(1, 1) = "Упорядочивание по ФИО"
Sheets("Данные").Select
Range("A1:I21").Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("Упорядочивание по ФИО").Select
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
ElseIf OptionButton2.Value = True Then
Worksheets(6).Activate
Range("A1:I48").Select
Selection.ClearContents
Range("A1").Select
ActiveWindow.Zoom = 70
Worksheets(6).Name = "Упорядочивание по зарплате"
Worksheets(6).Cells(1, 1) = "Упорядочивание по зарплате"
Sheets("Данные").Select
Range("A1:I21").Select
Selection.Copy
Sheets("Упорядочивание по зарплате").Select
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("I3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select
End if
End Sub
Отсортированные по ФИО по возрастанию данные выводятся на лист5:
Упорядочивание по ФИО по возрастанию |
|
|
|
|
|
|
|
|
Ф.И.О. |
Пол |
Стаж (лет) |
Отдел |
Должность |
Оклад |
Надбавка |
Районный коэффициент |
К выдаче |
Афанасьева Т.А. |
ж |
10 |
Обслуживания |
Секретарь |
2900 |
0 |
1,01 |
2929 |
Буторин В.В. |
м |
5,5 |
Технический |
Механик |
2500 |
0 |
1 |
2500 |
Денисова Г.А. |
ж |
11 |
Технический |
Техничка |
1700 |
1500 |
1 |
3200 |
Иванов И.И |
м |
5 |
Технический |
Техник |
2400 |
1800 |
1,13 |
4746 |
Кирилов Н.А |
м |
8 |
Планово-финансовый |
Менеджер |
7000 |
2500 |
1,2 |
11400 |
Кузубов В.А. |
м |
6 |
Обслуживания |
Юрист |
4500 |
2300 |
1,14 |
7752 |
Курапов Н.И. |
м |
9,5 |
Обслуживания |
Охранник |
2600 |
2000 |
1,12 |
5152 |
Метелкин Д.А. |
м |
4,5 |
Обслуживания |
Психолог |
5000 |
0 |
1,16 |
5800 |
Печенцева В.И. |
ж |
7,1 |
Технический |
Техничка |
1700 |
0 |
1 |
1700 |
Постников П.А. |
м |
6 |
Обслуживания |
Менеждер |
8000 |
2500 |
1,2 |
12600,00098 |
Романов Д.И. |
м |
7 |
Обслуживания |
Продавец |
4000 |
2000 |
1,1 |
6600 |
Савельев Н.И. |
м |
4 |
Обслуживания |
Секретарь-референт |
6000 |
2100 |
1,08 |
8748 |
Соколова М.Н. |
ж |
6,5 |
Планово-финансовый |
Бухгалтер |
4000 |
1000 |
1,13 |
5650 |
Степанов Д.В. |
м |
8 |
Планово-финансовый |
Директор |
9000 |
3000 |
1,7 |
20400 |
Устинова Л.А. |
ж |
3 |
Планово-финансовый |
Секретарь |
2900 |
1700 |
1,07 |
4922 |
Уфимцев А.Л. |
м |
2,1 |
Планово-финансовый |
Гендиректор |
12000 |
3000 |
1,7 |
25500 |
Федорцев А.Н. |
м |
2,9 |
Технический |
Механик |
2500 |
2000 |
1 |
4500 |
Худяков С.К. |
м |
4 |
Транспортный |
Водитель |
2600 |
2000 |
1 |
4600 |
Щеголев К.С. |
м |
11 |
Технический |
Конструктор |
4000 |
1000 |
1,05 |
5250 |
Щербакова Т.И. |
ж |
3 |
Планово-финансовый |
Бухгалтер |
4000 |
0 |
1,13 |
4520 |
Отсортированные данные по убыванию зарплаты выводятся на лист6:
Упорядочивание по зарплате по убыванию |
|
|
|
|
|
|
||
Ф.И.О. |
Пол |
Стаж (лет) |
Отдел |
Должность |
Оклад |
Надбавка |
Районный коэффициент |
К выдаче |
Уфимцев А.Л. |
м |
2,1 |
Планово-финансовый |
Гендиректор |
12000 |
3000 |
1,7 |
25500 |
Степанов Д.В. |
м |
8 |
Планово-финансовый |
Директор |
9000 |
3000 |
1,7 |
20400 |
Постников П.А. |
м |
6 |
Обслуживания |
Менеждер |
8000 |
2500 |
1,2 |
12600 |
Кирилов Н.А |
м |
8 |
Планово-финансовый |
Менеджер |
7000 |
2500 |
1,2 |
11400 |
Савельев Н.И. |
м |
4 |
Обслуживания |
Секретарь-референт |
6000 |
2100 |
1,08 |
8748 |
Кузубов В.А. |
м |
6 |
Обслуживания |
Юрист |
4500 |
2300 |
1,14 |
7752 |
Романов Д.И. |
м |
7 |
Обслуживания |
Продавец |
4000 |
2000 |
1,1 |
6600 |
Метелкин Д.А. |
м |
4,5 |
Обслуживания |
Психолог |
5000 |
0 |
1,16 |
5800 |
Соколова М.Н. |
ж |
6,5 |
Планово-финансовый |
Бухгалтер |
4000 |
1000 |
1,13 |
5650 |
Щеголев К.С. |
м |
11 |
Технический |
Конструктор |
4000 |
1000 |
1,05 |
5250 |
Курапов Н.И. |
м |
9,5 |
Обслуживания |
Охранник |
2600 |
2000 |
1,12 |
5152 |
Устинова Л.А. |
ж |
3 |
Планово-финансовый |
Секретарь |
2900 |
1700 |
1,07 |
4922 |
Иванов И.И |
м |
5 |
Технический |
Техник |
2400 |
1800 |
1,13 |
4746 |
Худяков С.К. |
м |
4 |
Транспортный |
Водитель |
2600 |
2000 |
1 |
4600 |
Щербакова Т.И. |
ж |
3 |
Планово-финансовый |
Бухгалтер |
4000 |
0 |
1,13 |
4520 |
Федорцев А.Н. |
м |
2,9 |
Технический |
Механик |
2500 |
2000 |
1 |
4500 |
Денисова Г.А. |
ж |
11 |
Технический |
Техничка |
1700 |
1500 |
1 |
3200 |
Афанасьева Т.А. |
ж |
10 |
Обслуживания |
Секретарь |
2900 |
0 |
1,01 |
2929 |
Буторин В.В. |
м |
5,5 |
Технический |
Механик |
2500 |
0 |
1 |
2500 |
Печенцева В.И. |
ж |
7,1 |
Технический |
Техничка |
1700 |
0 |
1 |
1700 |
Задание2. Часть2.
Необходимо построить круговую диаграмму по графе «К выдаче» и «Стаж» для сотрудников планово-финансового отдела, т.е. данная диаграмма будет являться столбиковой с двумя столбцами для значений графы «К выдаче» и «Стаж». Первоначально, чтобы программа была как можно более удобной, необходимые данные для диаграммы выводятся на отдельный лист. Поскольку значение суммы к выдаче значительно больше величины стажа в годах, последнюю надо умножить на 365. Затем записывается макрос – по полученной на листе «Данные для диаграммы» информации строится диаграмма. Полученная в макросе программа вставляется в процедуру нажатия кнопки «Построить диаграмму».
Private Sub CommandButton3_Click()
Worksheets(8).Activate
Worksheets(8).Name = "Данные для диаграммы"
m = 1
For j = 1 To 9
Worksheets(8).Cells(m, j) = Worksheets(1).Cells(1, j)
Next
Worksheets(8).Cells(1, 3) = "Стаж(дней)"
For i = 1 To 20
If info(i).otd = "Планово-финансовый" Then
Worksheets(8).Cells(m + 1, 1) = info(i).fio
Worksheets(8).Cells(m + 1, 2) = info(i).Pol
Worksheets(8).Cells(m + 1, 3) = info(i).stag * 365
Worksheets(8).Cells(m + 1, 4) = info(i).otd
Worksheets(8).Cells(m + 1, 5) = info(i).dolg
Worksheets(8).Cells(m + 1, 6) = info(i).okl
Worksheets(8).Cells(m + 1, 7) = info(i).nadb
Worksheets(8).Cells(m + 1, 8) = info(i).rakoe
Worksheets(8).Cells(m + 1, 9) = info(i).kvid
m = m + 1
End If
Next
Range("A2:A7,C2:C7,F2:F7").Select
Range("F2").Activate
Charts.Add
ActiveChart.ChartType = xl3DColumn
ActiveChart.SetSourceData Source:=Sheets("Данные для диаграммы").Range( _
"A2:A7,C2:C7,F2:F7"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).XValues = _
"=('Данные для диаграммы'!R2C1:R7C1,'Данные для диаграммы'!R2C1,'Данные для диаграммы'!R3C1,'Данные для диаграммы'!R4C1,'Данные для диаграммы'!R5C1,'Данные для диаграммы'!R7C1,'Данные для диаграммы'!R7C1)"
ActiveChart.SeriesCollection(1).Name = "=""Стаж (в днях)"""
ActiveChart.SeriesCollection(2).XValues = _
"=('Данные для диаграммы'!R2C1:R7C1,'Данные для диаграммы'!R2C1,'Данные для диаграммы'!R3C1,'Данные для диаграммы'!R4C1,'Данные для диаграммы'!R5C1,'Данные для диаграммы'!R7C1,'Данные для диаграммы'!R7C1)"
ActiveChart.SeriesCollection(2).Name = "=""Заработная плата"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Диаграмма1"
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
End Sub
Результат:
Полученная диаграмма располагается на отдельном листе ЭТ.
Задание3.Часть2.
Задание3 части2 выполняется с помощью написанной на языке Visual Basic программы. Для вывода информации о мужчинах со стажем работы менее 10 лет необходимо нажать на кнопку «Запустить» в рамке «Вывод информации» на UserForm2. Запустится следующая программа:
Private Sub CommandButton2_Click()
Worksheets(7).Activate
ActiveWindow.Zoom = 75
Worksheets(7).Name = "Вывод информации2"
m = 1
Worksheets(7).Cells(m, 1) = "Мужчины со стажем менее 10 лет"
For j = 1 To 9
Worksheets(7).Cells(m + 1, j) = Worksheets(1).Cells(1, j)
Next
For i = 1 To 20
If info(i).Pol = "м" Then
If info(i).stag < 10 Then
Worksheets(7).Cells(m + 2, 1) = info(i).fio
Worksheets(7).Cells(m + 2, 2) = info(i).Pol
Worksheets(7).Cells(m + 2, 3) = info(i).stag
Worksheets(7).Cells(m + 2, 4) = info(i).otd
Worksheets(7).Cells(m + 2, 5) = info(i).dolg
Worksheets(7).Cells(m + 2, 6) = info(i).okl
Worksheets(7).Cells(m + 2, 7) = info(i).nadb
Worksheets(7).Cells(m + 2, 8) = info(i).rakoe
Worksheets(7).Cells(m + 2, 9) = info(i).kvid
m = m + 1
End If
End If
Next
End Sub
Сначала значение Pol элемента массива сравнивается с «М», если оно удовлетворяет этому условию, то проверяется, не меньше ли 10 значение stag этого элемента. Если оба условия выполнены, этот элемент выводится на лист7 электронной таблицы.
Для завершения работы с курсовой работой нужно нажать на кнопку «Выход» на UserForm2.