Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум. Ч-2.doc
Скачиваний:
12
Добавлен:
10.06.2015
Размер:
1.29 Mб
Скачать

Тема № 2 пользовательские процедуры

Процедура - последовательность инструкций, выполняемых EXCEL.

Процедуры составляют большую часть кода VBA. При ее объявлении соблюдаются правила описания процедур. Упрощенный синтаксис является следующим:

Subимя([ аргументы ])

инструкции

EndSub

Следует обратить внимание на следующее:

  • ключевые слова SubиEndSubиспользуются в описании любой процедурыSub;

  • параметр имяопределяет имя создаваемой процедуры;

  • необязательный параметр [аргументы] позволяет передать в процедуру требуемые значения, многие процедуры параметров не требуют.

Тема 2.1 Ввод записей в базу данных

На рабочем листе создается таблица (база данных). Для этого вводятся названия столбцов (полей). С помощью процедуры предполагается дополнение имеющихся записей в первую пустую строку базы данных.

Пример 1.

Требуется создать программу по вводу новой записи в таблицу.

1

Фамилия

Должность

Оклад

2

Иванов

инженер

1000

3

Петров

бухгалтер

900

4

. . . . .

. . . .

N

Сидоров

инженер

1100

N+1

Алгоритм решения задачи и программа методом явного перехода по ячейкам (рис. 1).

Sub Ввод_1()

Dim q As Integer, prod as Variant

Range("A1").Select

ActiveCell.CurrentRegion.Select

q = Selection.Rows.Count

ActiveCell.Cells(q + 1, 1).Activate

m1: ActiveCell.Formula = InputBox(prompt:="Введите фамилию ")

ActiveCell.Offset(0, 1).Activate

ActiveCell.Formula = InputBox(prompt:="Введите должность")

ActiveCell.Cells(1, 2).Activate

ActiveCell.Formula = InputBox(prompt:="Введите оклад")

Prod = MsgBox("Продолжим ?", vbYesNo, "Ваши действия ?")

If Prod = vbYes Then

ActiveCell.Offset(1, -2).Activate

GoTo m1

End If

Range("A1").Select

End Sub

Алгоритм решения задачи (рис. 2) и программа методом ссылок на ячейки

Subввод_2 ()

i = 1

While Cells(i, 1) <> Empty

i = i + 1

Wend

prod = vbYes

While prod = vbYes

Cells(i, 1) =InputBox("Ведите фамилию сотрудника")

Cells(i, 2) = InputBox("Введите должность")

Cells(i, 3) = Val(InputBox("Введите оклад"))

prod = MsgBox("Продолжите ввод?", vbYesNo, "Выбор")

i = i + 1

Wend

End Sub

Тема 2.2 Поиск уникальной записи по указанным критериям

В процедуре осуществляется поиск уникальной записи по критериям, вводимым с клавиатуры. Найденная запись отражается в диалоговом окне, в случае отрицательного результата поиска выводится сообщение об этом. Стандартная функция Chr(13) позволяет продолжить вывод на новой строке диалогового окнаMsgBox.

В представленной ниже процедуре осуществляется поиск сотрудника по фамилии и должности, вводимым с клавиатуры. Принимается, что на предприятии отсутствуют однофамильцы, работающие на одной должности.

Sub qq1()

i = 1

fam=InputBox("Введите фамилию")

dol=InputBox("Введите должность")

While Cells(i, 1) <> Empty

If Cells(i, 1) = fam And Cells(i, 2) = dol Then

MsgBox "Фамилия - " + fam + Chr(13) + "Должность - " + dol + _

Chr(13) + "Оклад - " & Cells(i, 3)

Exit Sub

Else

i = i + 1

End If

Wend

MsgBox"Сотрудник не найден"

End Sub