Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Microsoft Excel на языке Visual Basic for Appli....doc
Скачиваний:
3
Добавлен:
30.11.2018
Размер:
649.73 Кб
Скачать

Часть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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]