Разработка приложения на visual basic
Курсовое проектирование по информатике:
«Разработка приложения для обработки экономической информации в среде Microsoft Excel на языке Visual Basic for Applications».
Содержание.
Введение………………………………………………………………………….…3
Переменные проекта………….………………………………………………..4
Основной алгоритм проекта…………………………………………………5
Алгоритмы подпрограмм, тексты программ на языке Visual Basic.
Часть1………………………………………………………………………………………….……6
Задание2………………………………………………………………………………………….…..9
Задание3………………………………………………………………………………………….…12
Задание4……………………………………………………………………………………….……15
Часть2……………………………………………………………………………………….……16
Задание1………….………………………………………………………………………….……..17
Задание2……………………………………………………………………………………………20
Задание3……………………………………………………………………………………………21
Заключение………………………………………………………………………………………22
Введение.
Данный курсовой проект предназначен для развития навыков в области разработки программного обеспечения для обработки экономической информации с помощью средств Visual Basic for Applications. Курсовая работа должна отвечать следующим требованиям:
· Правильное описание типов переменных, использующихся в работе, правильное задание локальных и глобальных переменных. Должен быть также разработан собственный тип пользователя.
· Создание удобного пользовательского интерфейса.
· Возможность работы в режиме диалога.
· Обработка массива методами структурного программирования.
Приложение должно позволять оперировать с экономической информацией, содержащейся в электронной таблице Excel. Приложение должно представлять собой совокупность пользовательских форм и программ на языке Visual Basic. Интерфейс должен быть доступен и удобен для пользователя, должен сопровождаться комментариями.
В данной курсовой работе дана информация о расчете заработной платы работников предприятия: ФИО работников, пол, стаж, отдел, должность, оклад, надбавка, районный коэффициент. Необходимо произвести различные действия с этой информацией: рассчитать заработную плату каждого работника, сгруппировать информацию по отделам, упорядочить по окладу, ФИО и заработной плате, вывести необходимые сведения, построить диаграмму.
Проект состоит из трех пользовательских форм: одна выводит информацию о студенте, две другие соответствуют заданиям первой и второй части курсовой. Все программы содержатся в процедурах нажатия кнопок. Курсовая работа состоит из двух частей. Все задания сопровождаются текстами на языке Visual Basic, пояснительными комментариями, результатами работы программы. К первой все задания сопровождаются алгоритмами. Задания 1,2,3,4 части1 и задание3 части2 выполняются с помощью написанных на языке Visual Basic программ. Задания 1 и 2 части2 выполняются с помощью средств Excel. Сама курсовая работа разработана в системе Office2000, поэтому на некоторых старых версиях Office97 могут появляться ошибки. Курсовой проект размещен на диске А в файле «Курсовая_17». Диск А приложен к оформленной курсовой работе.
Переменные проекта
Первоначально есть информация о расчете заработной платы 20 работников предприятия 20 человек, которая находится в таблице Excel. Для работы с этими данными в проекте задается собственный тип пользователя dann, который состоит из значений следующего типа:
Type dann
fio As String * 20 – ФИО работников предприятия, строковое значение, длина максимум 20 символов.
Pol As String – пол работников, строковое значение.
stag As Single – стаж работников, тип Single.
otd As String – отдел, строковое значение.
dolg As String – должность, строковое значение.
okl As Integer – оклад, тип Integer, целое значение.
nadb As Integer – надбавка к окладу, тип Integer, целое значение.
rakoe As Single – районный коэффициент, тип Single.
kvid As Single – сумма к выдаче, тип Single.
End Type
Значения Fio, Pol, Stag, otd, dolg, okl, nadb, rakoe считываются из электронной таблицы Excel, значения kvid вычисляются в процессе работы программы.
Далее заданы следующие переменные, которые используются в проекте:
Public i, j, k, m As Integer – переменные i, j используются для работы в циклах, переменные m и k используются при выводе данных в электронную таблицу.
Public n As String – в переменную n заносится значение отдела при группировке информации по отделам.
Public info(21) As dann – массив типа dann, в нем содержатся данные о 20 работниках предприятия.
Public p As dann – переменная типа dann, используется при упорядочивании информации.
Все эти переменные являются глобальными, используются в нескольких программах и описываются как Public перед модулем1.
Основной алгоритм проекта
Комментарии:
Первоначально происходит считывание данных из электронной таблицы, заполняются 20 значений массива info. Затем вычисляются значения сумм к выдаче для каждого работника предприятия. Суммы к выдаче вычисляются путем складывания оклада работника, его надбавки и умножения полученной суммы на районный коэффициент. Полученные значения выводятся в электронную таблицу. После этого открываются пользовательские формы, на которых пользователь должен нажать какую-либо кнопку, т. е. открывается кнопочное меню и нажатие любой кнопки соответствует выбору определенного условия. При нажатии на определенные кнопки запускаются подпрограмма1 и подпрограмма2 (см. ниже) или же может открыться новое кнопочное меню, при нажатии на одну из кнопок которого запускается подпрограмма3, подпрограмма4, рисуется диаграмма или же завершается работа с проектом.
Алгоритмы подпрограмм, тексты программ на языке Visual Basic и инструкция пользователя.
При нажатии какой-либо кнопки запускается необходимая программа, которая содержится в процедуре нажатия кнопки.
Часть1.
Первоначально имеются сведения о 20 работниках предприятия, которые расположены на листе «Данные» электронной таблицы Excel.
Ф. И.О. |
Пол |
Стаж (лет) |
Отдел |
Должность |
Оклад |
Надбавка |
Районный коэффициент |
К выдаче |
Буторин В. В. |
м |
5,5 |
Технический |
Механик |
2500 |
0 |
1 |
|
Федорцев А. Н. |
м |
2,9 |
Технический |
Механик |
2500 |
2000 |
1 |
|
Худяков С. К. |
м |
4 |
Транспортный |
Водитель |
2600 |
2000 |
1 |
|
Печенцева В. И. |
ж |
7,1 |
Технический |
Техничка |
1700 |
0 |
1 |
|
Курапов Н. И. |
м |
9,5 |
Обслуживания |
Охранник |
2600 |
2000 |
1,12 |
|
Иванов И. И |
м |
5 |
Технический |
Техник |
2400 |
1800 |
1,13 |
|
Степанов Д. В. |
м |
8 |
Планово-финансовый |
Директор |
9000 |
3000 |
1,7 |
|
Романов Д. И. |
м |
7 |
Обслуживания |
Продавец |
4000 |
2000 |
1,1 |
|
Афанасьева Т. А. |
ж |
10 |
Обслуживания |
Секретарь |
2900 |
0 |
1,01 |
|
Уфимцев А. Л. |
м |
2,1 |
Планово-финансовый |
Гендиректор |
12000 |
3000 |
1,7 |
|
Устинова Л. А. |
ж |
3 |
Планово-финансовый |
Секретарь |
2900 |
1700 |
1,07 |
|
Кузубов В. А. |
м |
6 |
Обслуживания |
Юрист |
4500 |
2300 |
1,14 |
|
Кирилов Н. А |
м |
8 |
Планово-финансовый |
Менеджер |
7000 |
2500 |
1,2 |
|
Метелкин Д. А. |
м |
4,5 |
Обслуживания |
Психолог |
5000 |
0 |
1,16 |
|
Соколова М. Н. |
ж |
6,5 |
Планово-финансовый |
Бухгалтер |
4000 |
1000 |
1,13 |
|
Савельев Н. И. |
м |
4 |
Обслуживания |
Секретарь-референт |
6000 |
2100 |
1,08 |
|
Постников П. А. |
м |
6 |
Обслуживания |
Менеждер |
8000 |
2500 |
1,2 |
|
Щербакова Т. И. |
ж |
3 |
Планово-финансовый |
Бухгалтер |
4000 |
0 |
1,13 |
|
Щеголев К. С. |
м |
11 |
Технический |
Конструктор |
4000 |
1000 |
1,05 |
|
Денисова Г. А. |
ж |
11 |
Технический |
Техничка |
1700 |
1500 |
1 |
|
На листе с данными имеется незаполненная колонка «К выдаче». Она будет заполнена в процессе работы программы. На листе размещена кнопка. При ее нажатии («Начать») вызывается модуль1, в котором содержится макрос Student. (Call Studen). Этот макрос предназначен для занесения данных с электронной таблицы в массив info.
Sub Student()
Worksheets(1).Activate
For i = 1 To 20
With info(i)
.fio = Worksheets(1).Cells(1 + i, 1)
.Pol = Worksheets(1).Cells(1 + i, 2)
.stag = Worksheets(1).Cells(1 + i, 3)
.otd = Worksheets(1).Cells(1 + i, 4)
.dolg = Worksheets(1).Cells(1 + i, 5)
.okl = Worksheets(1).Cells(1 + i, 6)
.nadb = Worksheets(1).Cells(i + 1, 7)
.rakoe = Worksheets(1).Cells(i + 1, 8)
End With
Next
studen. Show
End Sub
После занесения данных в массив info открывается форма с информацией о студенте (studen. show).
При нажатии на кнопку «Продолжить» открывается форма UserForm1 – «Часть1». При инициализации формы вычисляется значение сумм к выдаче для каждого работника предприятия (задание1 первой части), на листе1 заполняется колонка «К выдаче»:
Private Sub UserForm_Initialize()
For i = 1 To 20
With info(i)
.kvid = (.okl + .nadb) * .rakoe
Worksheets(1).Cells(i + 1, 9) = .kvid
End With
Next
End Sub
На форме расположено несколько кнопок. Пользователь должен нажать какую-либо из них.
Задание2.Часть1
Для группировки информации задается значение, с которым сравнивается значение отдела элемента массива info. Если оно совпадает, этот элемент массива выводится. Алгоритм группировки информации по отделу:
Итак, для группировки начальной информации необходимо нажать на кнопку «Начать» на рамке «Группировка информации по отделам» на UserForm1. При нажатии кнопки «Начать» запускается следующая программа:
Private Sub CommandButton2_Click()
Worksheets(2).Activate
Range("A1:I48").Select
Selection. ClearContents
Range("A1").Select
m = 1
Cells(m, 1) = "По отделам"
For i = 1 To 9
Worksheets(2).Cells(m + 1, i) = Worksheets(1).Cells(1, i)
Next
n = "Планово-финансовый"
For i = 1 To 20
If info(i).otd = n Then
Worksheets(2).Cells(m + 3, 1) = info(i).fio
Worksheets(2).Cells(m + 3, 2) = info(i).Pol
Worksheets(2).Cells(m + 3, 3) = info(i).stag
Worksheets(2).Cells(m + 3, 4) = info(i).otd
Worksheets(2).Cells(m + 3, 5) = info(i).dolg
Worksheets(2).Cells(m + 3, 6) = info(i).okl
Worksheets(2).Cells(m + 3, 7) = info(i).nadb
Worksheets(2).Cells(m + 3, 8) = info(i).rakoe
Worksheets(2).Cells(m + 3, 9) = info(i).kvid
m = m + 1
End If
Next
m = m + 2
n = "Технический"
For i = 1 To 20
If info(i).otd = n Then
Worksheets(2).Cells(m + 2, 1) = info(i).fio
Worksheets(2).Cells(m + 2, 2) = info(i).Pol
Worksheets(2).Cells(m + 2, 3) = info(i).stag
Worksheets(2).Cells(m + 2, 4) = info(i).otd
Worksheets(2).Cells(m + 2, 5) = info(i).dolg
Worksheets(2).Cells(m + 2, 6) = info(i).okl
Worksheets(2).Cells(m + 2, 7) = info(i).nadb
Worksheets(2).Cells(m + 2, 8) = info(i).rakoe
Worksheets(2).Cells(m + 2, 9) = info(i).kvid
m = m + 1
End If
Next
m = m + 2
n = "Обслуживания"
For i = 1 To 20
If info(i).otd = n Then
Worksheets(2).Cells(m + 2, 1) = info(i).fio
Worksheets(2).Cells(m + 2, 2) = info(i).Pol
Worksheets(2).Cells(m + 2, 3) = info(i).stag
Worksheets(2).Cells(m + 2, 4) = info(i).otd
Worksheets(2).Cells(m + 2, 5) = info(i).dolg
Worksheets(2).Cells(m + 2, 6) = info(i).okl
Worksheets(2).Cells(m + 2, 7) = info(i).nadb
Worksheets(2).Cells(m + 2, 8) = info(i).rakoe
Worksheets(2).Cells(m + 2, 9) = info(i).kvid
m = m + 1
End If
Next
If CheckBox1.Value = True Then ‘задание 4
m = m + 2
Worksheets(2).Cells(m, 1) = "Упорядочивание по окладу по возрастанию"
For j = 1 To 9
Worksheets(2).Cells(m + 1, j) = Worksheets(1).Cells(1, j)
Next
For i = 2 To 20
For j = 20 To i Step -1
If info(j).okl < info(j — 1).okl Then
p = info(j — 1)
info(j — 1) = info(j)
info(j) = p
End If
Next j
Next i
For i = 1 To 20
Worksheets(2).Cells(m + 2, 1) = info(i).fio
Worksheets(2).Cells(m + 2, 2) = info(i).Pol
Worksheets(2).Cells(m + 2, 3) = info(i).stag
Worksheets(2).Cells(m + 2, 4) = info(i).otd
Worksheets(2).Cells(m + 2, 5) = info(i).dolg
Worksheets(2).Cells(m + 2, 6) = info(i).okl
Worksheets(2).Cells(m + 2, 7) = info(i).nadb
Worksheets(2).Cells(m + 2, 8) = info(i).rakoe
Worksheets(2).Cells(m + 2, 9) = info(i).kvid
m = m + 1
Next
CheckBox1.Value = False
Worksheets(2).Activate
End If
End Sub
Полученные результаты выводятся на лист2, ячейки которого предварительно очищаются при каждом нажатии кнопки «Начать».
Результат группировки следующий:
По отделам |
||||||||
Ф. И.О. |
Пол |
Стаж (лет) |
Отдел |
Должность |
Оклад |
Надбавка |
Районный коэффициент |
К выдаче |
Степанов Д. В. |
м |
8,0 |
Планово-финансовый |
Директор |
9000 |
3000 |
1,70 |
20400 |
Уфимцев А. Л. |
м |
2,1 |
Планово-финансовый |
Гендиректор |
12000 |
3000 |
1,70 |
25500 |
Устинова Л. А. |
ж |
3,0 |
Планово-финансовый |
Секретарь |
2900 |
1700 |
1,07 |
4922 |
Кирилов Н. А |
м |
8,0 |
Планово-финансовый |
Менеджер |
7000 |
2500 |
1,20 |
11400 |
Соколова М. Н. |
ж |
6,5 |
Планово-финансовый |
Бухгалтер |
4000 |
1000 |
1,13 |
5650 |
Щербакова Т. И. |
ж |
3,0 |
Планово-финансовый |
Бухгалтер |
4000 |
0 |
1,13 |
4520 |
Буторин В. В. |
м |
5,5 |
Технический |
Механик |
2500 |
0 |
1,00 |
2500 |
Федорцев А. Н. |
м |
2,9 |
Технический |
Механик |
2500 |
2000 |
1,00 |
4500 |
Печенцева В. И. |
ж |
7,1 |
Технический |
Техничка |
1700 |
0 |
1,00 |
1700 |
Иванов И. И |
м |
5,0 |
Технический |
Техник |
2400 |
1800 |
1,13 |
4746 |
Щеголев К. С. |
м |
11,0 |
Технический |
Конструктор |
4000 |
1000 |
1,05 |
5250 |
Денисова Г. А. |
ж |
11,0 |
Технический |
Техничка |
1700 |
1500 |
1,00 |
3200 |
Курапов Н. И. |
м |
9,5 |
Обслуживания |
Охранник |
2600 |
2000 |
1,12 |
5152 |
Романов Д. И. |
м |
7,0 |
Обслуживания |
Продавец |
4000 |
2000 |
1,10 |
6600 |
Афанасьева Т. А. |
ж |
10,0 |
Обслуживания |
Секретарь |
2900 |
0 |
1,01 |
2929 |
Кузубов В. А. |
м |
6,0 |
Обслуживания |
Юрист |
4500 |
2300 |
1,14 |
7752 |
Метелкин Д. А. |
м |
4,5 |
Обслуживания |
Психолог |
5000 |
0 |
1,16 |
5800 |
Савельев Н. И. |
м |
4,0 |
Обслуживания |
Секретарь-референт |
6000 |
2100 |
1,08 |
8748 |
Постников П. А. |
м |
6,0 |
Обслуживания |
Менеждер |
8000 |
2500 |
1,20 |
12600 |
Задание3. Часть1.
В задании3 к части1 необходимо получить сведения о работниках с определенным стажем, имеющим надбавки к зарплате, т. е. предполагается, что величина стажа работника, по которой будет искаться информация о работниках среди тех, кто имеет надбавки к зарплате, должна определяться пользователем (в алгоритме – ввод n). Алгоритм программы следующий:
Для выполнения этого задания необходимо нажать кнопку «Запустить» на UserForm1. Запустится следующая программа:
Private Sub CommandButton4_Click()
Label2.Enabled = True ‘задание 3
ComboBox1.Enabled = True
ComboBox1.Value = Clear
Worksheets(4).Activate
ActiveWindow. Zoom = 75
Worksheets(4).Name = "Вывод информации"
Range("A1:I48").Select
Selection. ClearContents
Range("A1").Select
m = 1
Cells(1, 1) = "Работники с надбавкой"
For i = 1 To 9
Worksheets(4).Cells(m + 1, i) = Worksheets(1).Cells(1, i)
Next
k = 1
For i = 1 To 20
If info(i).nadb <> 0 Then ‘находим работников с надбавкой
Worksheets(4).Cells(k + 2, 1) = info(i).fio
Worksheets(4).Cells(k + 2, 2) = info(i).Pol
Worksheets(4).Cells(k + 2, 3) = info(i).stag
Worksheets(4).Cells(k + 2, 4) = info(i).otd
Worksheets(4).Cells(k + 2, 5) = info(i).dolg
Worksheets(4).Cells(k + 2, 6) = info(i).okl
Worksheets(4).Cells(k + 2, 7) = info(i).nadb
Worksheets(4).Cells(k + 2, 8) = info(i).rakoe
Worksheets(4).Cells(k + 2, 9) = info(i).kvid
k = k + 1
End If
Next
m = k
ComboBox1.Visible = True
With ComboBox1
.RowSource = "c3:c15"
.ListIndex = 0
End With
End Sub
Из программы видно, что первоначально на лист4 выводятся сведения о тех работниках, что имеют надбавку к зарплате. Далее у работников с надбавкой берется информация о стаже таких работников (колонка c3:c15) и полученные данные заносятся в список ComboBox1, который становится доступным (ComboBox1.Enabled = True). Далее пользователь из ниспадающего списка ComboBox1 должен выбрать величину стажа, о работниках с которой он хотел бы получить информацию. При изменении значения ComboBox1 запускается следующая программа:
Private Sub ComboBox1_click()
k = m + 1
n = Val(ComboBox1.Value)
For i = 1 To 9
Worksheets(4).Cells(k + 1, i) = Worksheets(1).Cells(1, i)
Next
For i = 1 To 20
If info(i).stag = n Then
If info(i).nadb <> 0 Then
Worksheets(4).Cells(k + 2, 1) = info(i).fio
Worksheets(4).Cells(k + 2, 2) = info(i).Pol
Worksheets(4).Cells(k + 2, 3) = info(i).stag
Worksheets(4).Cells(k + 2, 4) = info(i).otd
Worksheets(4).Cells(k + 2, 5) = info(i).dolg
Worksheets(4).Cells(k + 2, 6) = info(i).okl
Worksheets(4).Cells(k + 2, 7) = info(i).nadb
Worksheets(4).Cells(k + 2, 8) = info(i).rakoe
Worksheets(4).Cells(k + 2, 9) = info(i).kvid
k = k + 1
End If
End If
Next
For i = 1 To 20
Worksheets(4).Cells(k + 2, i) = Clear
Next
End Sub
Информация о работниках с надбавкой со стажем, который установил пользователь, выводится на лист4 ниже работников с надбавкой:
Задание4. Часть1.
В данном проекте модно производить упорядочивание данных в порядке возрастания оклада (задание4, часть1). Алгоритм упорядочивания следующий:
Для упорядочивания данных массива info используется метод пузырька. Для того, чтобы в проекте произошло упорядочивание данных по возрастанию оклада, необходимо щелкнуть на форме UserForm1 на флажок надписью «Выполнить задания с упорядочиванием данных в порядке возрастания оклада». Программа упорядочивания содержится в процедуре нажатия флажка CheckBox1:
Private Sub CheckBox1_Click()
Worksheets(3).Activate
Worksheets(3).Name = "Упорядочивание"
m = 1
Worksheets(3).Activate
Range("A1:I48").Select
Selection. ClearContents
Range("A1").Select
Worksheets(3).Cells(m, 1) = "Упорядочивание по окладу по возрастанию"
For j = 1 To 9
Worksheets(3).Cells(m + 1, j) = Worksheets(1).Cells(1, j)
Next
For i = 2 To 20
For j = 20 To i Step -1
If info(j).okl < info(j — 1).okl Then
p = info(j — 1)
info(j — 1) = info(j)
info(j) = p
End If
Next j
Next i
For i = 1 To 20
Worksheets(3).Cells(m + 2, 1) = info(i).fio
Worksheets(3).Cells(m + 2, 2) = info(i).Pol
Worksheets(3).Cells(m + 2, 3) = info(i).stag
Worksheets(3).Cells(m + 2, 4) = info(i).otd
Worksheets(3).Cells(m + 2, 5) = info(i).dolg
Worksheets(3).Cells(m + 2, 6) = info(i).okl
Worksheets(3).Cells(m + 2, 7) = info(i).nadb
Worksheets(3).Cells(m + 2, 8) = info(i).rakoe
Worksheets(3).Cells(m + 2, 9) = info(i).kvid
m = m + 1
Next
CheckBox1.Value = False
End Sub
Результат упорядочивания выводится на лист3, ячейки которого предварительно очищаются:
Часть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.
Заключение
В проекте на языке Visual Basic for Applications было создано приложение, позволяющее производить различные действия с информацией в электронной таблице Excel. Программа не содержит каких-либо ошибок. Все используемые переменные описаны соответствующим образом и работа с ними не вызывает никаких ошибок. Возможна работа в режиме диалога. В первой части курсовой используются написанные на языке Visual Basic программы, во второй используются инструменты и средства Excel. Программы при нажатии на кнопки могут выполняться столько раз, сколько это будет нужно пользователю. Таким образом, задачи, поставленные этой курсовой работой, были выполнены.