Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП по инфор.doc
Скачиваний:
2
Добавлен:
20.09.2019
Размер:
414.21 Кб
Скачать

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