- •Учебная практика по информатике - 2
- •Санкт-Петербург
- •Общие положения
- •2. Содержание отчета по результатам учебной практики
- •3. Требования к оформлению отчета
- •4. Таблица выбора варианта индивидуального задания
- •5. Рабочая программа дисциплины «Учебная практика по информатике» (извлечение)
- •1. Цель и задачи учебной практики
- •2. Место практики в учебном процессе
- •3. Организация учебной практики по информатике
- •4. Требования к учебной практике
- •5. Содержание учебной практики по информатике
- •7. Пример выполнения индивидуального задания
- •8. Библиографический список
7. Пример выполнения индивидуального задания
Создать 3 таблицы на разных рабочих листах. Первая таблица содержит информацию о работающих (Табельный номер, Фамилия, Разряд), вторая – справочник по разрядам (Разряд, Оклад) и третья должна содержать сведения о начислении зарплаты (Табельный номер, Фамилия, Коэффициент отработанного времени, Начислено).
Требуется написать программу на языке VBA для заполнения таблиц. Данный пример VBA-кода содержит три процедуры:
Entertab1 создает и организует заполнение таблицы 1;
Entertab2 создает и организует заполнение таблицы 2;
Calculation заполняет таблицу 3 на основе данных, содержащихся в таблицах 1 и 2.
Текст программы:
Sub Entertab1()
Sheets(1).Activate
Range("A:C").Clear
Range("A:C").HorizontalAlignment = xlCenter
Columns("B").ColumnWidth = 20
ActiveSheet.Cells(1, 1) = "Таб.номер"
ActiveSheet.Cells(1, 2) = "Фамилия"
ActiveSheet.Cells(1, 3) = "Разряд"
i = 2
s = InputBox("Табельный номер")
Do While s <> ""
ActiveSheet.Cells(i, 1) = s
ActiveSheet.Cells(i, 2) = InputBox("Фамилия")
ActiveSheet.Cells(i, 3) = InputBox("Разряд")
i = i + 1
s = InputBox("Табельный номер")
Loop
End Sub
В результате выполнения процедуры Entertab1 может быть получена таблица с основными сведениями о работающих следующего вида:
|
A |
B |
C |
1 |
Таб.номер |
Фамилия |
Разряд |
2 |
1111 |
Иванов |
12 |
3 |
1122 |
Петров |
15 |
4 |
1222 |
Сидоров |
13 |
5 |
2222 |
Марков |
14 |
Sub Entertab2()
Sheets(2).Activate
Range("A:B").Clear
Range("A:B").HorizontalAlignment = xlCenter
ActiveSheet.Cells(1, 1) = "Разряд"
ActiveSheet.Cells(1, 2) = "Оклад"
i = 2
s = InputBox("Разряд")
Do While s <> ""
ActiveSheet.Cells(i, 1) = s
ActiveSheet.Cells(i, 2) = InputBox("Оклад")
i = i + 1
s = InputBox("Разряд")
Loop
End Sub
В результате выполнения процедуры Entertab2 может быть получена таблица со справочными данными о разрядах:
|
A |
B |
1 |
Разряд |
Оклад |
2 |
10 |
400 |
3 |
11 |
500 |
4 |
12 |
600 |
5 |
13 |
700 |
6 |
14 |
800 |
7 |
15 |
900 |
Sub Calculation()
Sheets(3).Activate
Range("A:D").Clear
Range("A:D").HorizontalAlignment = xlCenter
Columns("B:C").ColumnWidth = 20
ActiveSheet.Cells(1, 1) = "Таб.номер"
ActiveSheet.Cells(1, 2) = "Фамилия"
ActiveSheet.Cells(1, 3) = "Коэффициент"
ActiveSheet.Cells(1, 4) = "Начислено"
i = 2
j = 2
Do While Sheets(1).Cells(j, 1) <> ""
ActiveSheet.Cells(i, 1) = Sheets(1).Cells(j, 1)
ActiveSheet.Cells(i, 2) = Sheets(1).Cells(j, 2)
r = Sheets(1).Cells(j, 2)
ActiveSheet.Cells(i, 3) = InputBox("Коэффициент <=1",, "1")
k = 2
Do While Sheets(2).Cells(k, 1) <> ""
If Sheets(1).Cells(j, 3) = Sheets(2).Cells(k, 1) Then
ok = Sheets(2).Cells(k, 2)
End If
k = k + 1
Loop
ActiveSheet.Cells(i, 4) = ActiveSheet.Cells(i, 3) * ok
j = j + 1
i = i + 1
Loop
End Sub
В результате выполнения процедуры Calculation может быть получена таблица с начисленной суммой:
|
A |
B |
C |
D |
1 |
Таб.номер |
Фамилия |
Коэффициент |
Начислено |
2 |
1111 |
Иванов |
1 |
600 |
3 |
1122 |
Петров |
0,8 |
720 |
4 |
1222 |
Сидоров |
0,9 |
630 |
5 |
2222 |
Марков |
0,7 |
560 |