Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_po_VBA3_20_06.doc
Скачиваний:
27
Добавлен:
20.11.2019
Размер:
1.79 Mб
Скачать

If условие Then Exit Do

2.8 Обработка информационных массивов

С элементами массива удобно работать, используя цикл For. В этом случае в качестве счетчика цикла будет использоваться значение индекса элемента.

Блок операторов ввода элементов массива с последующим их выводом в окно Immediate на языке VBA можно записать следующим образом:

For i = 1 То 5

A(i) = InputBox(“Введите” & I & “-й элемент массива”)

Debug.Print I, “элемент ”, A(i)

Next i

Таким образом, изменяя индекс, можно легко переходить от одного элемента к другому.

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

При размещении в окне списка нового элемента используется метод AddItem, который имеет в качестве аргумента переменную, значение которой добавляется в список.

Синтаксическая конструкция имеет вид:

ListBox.AddItem Идентификатор

Например, чтобы увеличить зарплату на размер премии равный 10% необходимо создать проект Формы с управляющими элементами:

ListBox1, ListBox2, TextBox1, CommandButton1, как показано на рисунке 4:

Рис. 4 Проект Формы с управляющими элементами

Private Sub CommandButton1_Click()

Dim z( ), p( ) As Single, i, n As Integer

n = Val(TextBox1.Text)

ReDim z(n), p(n) As Single ‘Описание динамического массива

For i = 1 To n

z(i) = Rnd( ) * 10000 ‘Генерирование зарплаты величиной до 10000

ListBox1.AddItem z(i) ‘Вывод значения зарплаты в окно списка

p(i) = z(i) * 1.1

ListBox2.AddItem p(i) ‘Вывод значения премиальных в окно списка

Next i

End Sub

2.9 Процедуры и функции

Процедуры и функции призваны упростить работу с большими программами. Они представляют собой последовательности операторов языка, выполняющих некоторое законченное действие. У процедур, в отличие от функций, не существует возвращаемого значения. Применение процедур и функций эффективно тогда, когда необходимо несколько раз выполнять одну и ту же операцию в разных местах программы.

1) Процедура и её вызов в языке VBА записывается следующим образом:

Sub Имя_процедуры (формальные параметры)

ОПЕРАТОРЫ

End Sub

Sub Программа ( )

Call Имя_процедуры (фактические параметры)

End Sub

где Call – оператор вызова подпрограммы;

формальные параметры – имена тех переменных, значения которых необходимо передать в процедуру в данный момент;

фактические параметры – конкретные значения переменных.

Между формальными и фактическими параметрами устанавливается строгое соответствие, которое задается порядком их следования.

Например, фрагмент программы, в которой через работу процедуры записывает слово Теsт в столбец из 10 ячеек, начиная с А1. При этом каждый раз выдается звуковой сигнал.

Sub Сигнал()

For Count = 1 To 10

For j = 1 To 10000000 ‘Пустой цикл – приостановка действия

Next j

Call Подпрограмма(Count)

Next Count

End Sub

Sub Подпрограмма(i)

Cells(i, 1).Formula = "Test"

Beep

End Sub

2) Функции пользователя отличаются от процедур тем, что они возвращают зна­чение, и это значение может быть использовано в выражениях на­равне с другими переменными. Функция имеет следующую структуру:

Function Имя_функции (формальное параметры) [As тип]

ОПЕРАТОРЫ

End Function

Sub Программа ( )

И мя_Переменной = Имя_функции (фактические параметры)

End Sub

Например, фрагмент программы, в которой реализован вызов функции, вычисляющей площадь произвольного многоугольника, изображённого на рисунке:

Function SТреугольника(a, b, c) As Single

Dim P As Single

P = (a + b + c) / 2

SТреугольника = Sqr(P * (P - a) * (P - b) * (P - c))

End Function

Sub Sфигуры()

s1 = SТреугольника(10, 5, 6)

s2 = SТреугольника(5, 6, 5)

s3 = SТреугольника(6, 6, 5)

s4 = SТреугольника(7, 5, 6)

Debug.Print "Площадь фигуры ="; s1 + s2 + s3 + s4

End Sub

Выдача результата в окне Immediate будет иметь вид:

Площадь фигуры = 51,73184

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