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

6.Использование структурированных типов данных на примере массивов Понятие массива. Работа с массивами

Для работы с набором значений одного типа обычно используется массив. Все элементы массива имеют одно и то же имя. Для доступа к конкретному элементу нужно указать индекс (номер) элемента в массиве. Индексов может быть несколько, тогда они перечисляются через запятую.

Инструкция объявления массива имеет вид:

Dim ИмяМассива ( [Размер] ) [As ИмяТипа]

Вместо Dim можно использовать Private или Public. Если тип не указан, по умолчанию будет принят тип Variant.

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

ReDim [Preserve] ИмяМассива (Размер)

Далее, в процессе выполнения программы размер массива можно многократно переопределять, используя ту же инструкцию ReDim. При переопределении содержимое элементов массива будет теряться. Чтобы при переопределении размера массива сохранить значения тех его элементов, присутствие которых не противоречит новому размеру, следует использовать ключевое слово Preserve.

Размер определяет количество индексов массива и их возможные значения. Он представляет собой список

[НомПерв1 То] НомПосл1, [НомПерв2 То] НомПосл2, ...

Выражение НомПерв То НомПосл устанавливает границы изменения индекса массива. Ими должны быть целые числа, в том числе и отрицательные. Если нижняя граница индекса не указана, она принимается равной нулю. С помощью инстукции Option Base 1 можно принудительно перевести VB в режим, когда нижняя граница индекса массива по умолчанию будет приниматься равной 1.

Верхнюю и нижнюю границы индекса массива в процессе выполнения программы можно узнать, используя функции Lbound и Ubound:

Lbound (ИмяМассива, НомерИндекса)

Ubound (ИмяМассива, НомерИндекса)

Параметр НомерИндекса используют в случае многомерного массива, когда речь идет не о первом индексе.

Полезна также функция Array, которая создает массив типа Variant с одновременным присваиванием им значений. Например,

Dim X As Variant

X = Array("июнь", "июль", "август")

Практические задания Задание 6.1

Создайте приведенную форму и реализуйте указанные операции. Данные для выполнения операции находятся в массиве. Заполнение массива выполняется с помощью датчика случайных чисел. Результат помещается в другой массив такого же размера.

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

Dim A() As Integer

Dim B() As Integer

Dim N As Integer

Const A1 As Integer = -10

Const A2 As Integer = 10

Private Sub CommandButton2_Click()

k = N

'Увеличение элементов в 2 раза

If OptionButton1.Value Then

For i = 1 To N

B(i) = A(i) * 2

Next

'Удаление отрицательных

ElseIf OptionButton2.Value Then

k = 0

For i = 1 To N

If A(i) >= 0 Then k = k + 1: B(k) = A(i)

Next

'Обратный порядок элементов

ElseIf OptionButton3.Value Then

For i = 1 To N

B(N - i + 1) = A(i)

Next

'Упорядочение массива

ElseIf OptionButton4.Value Then

For i = 1 To N

B(i) = A(i)

Next

For i = 1 To N - 1

m = i

For j = i + 1 To N

If B(j) < B(m) Then m = j

Next

R = B(i): B(i) = B(m): B(m) = R

Next

End If

'Вывод результата

TextBox3.Text = ""

For i = 1 To k

TextBox3.Text = TextBox3.Text & " " & B(i)

Next

End Sub

Private Sub CommandButton1_Click()

'Определение размерности массивов

N = TextBox1.Text

ReDim A(1 To N)

ReDim B(1 To N)

'Заполнение массива А и вывод значений на экран

TextBox2.Text = ""

For i = 1 To N

A(i) = Int((A2 - A1 + 1) * Rnd + A1)

TextBox2.Text = TextBox2.Text & " " & A(i)

Next

TextBox3.Text = ""

End Sub

Задание 6.2

Переделайте задание 5.1 с использованием массива.

Добавьте в это задание следующую операцию:

  • проверить, образуют ли заданные числа возрастающую последовательность.

Задание 6.3

Добавьте в задание 6.1 следующие операции:

  • изменение знака элементов массива на противоположный;

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

7.Создание функций пользователя в MS Excel

Создание функций пользователя

Функцией называется последовательность инструкций, в результате выполнения которой вычисляется некоторое значение. Формальный синтаксис функций был описан в лабораторной работе 5.

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

  • добавьте к проекту новый модуль, используя команду Вставка\ Модуль, или перейдите в существующий модуль;

  • наберите в этом модуле необходимые инструкции, для ускорения процесса можно воспользоваться командой Вставка\ Процедура, обратите внимание, что перед Function должно стоять ключевое слово Public;

  • вызовите окно Просмотр объектов (кнопка F2 или команда Вид\ Просмотр объектов), в списке проектов (верхний левый список) выберите VBA Project, в списке Классы – нужный модуль, а в списке Компоненты – имя вашей функции;

  • откройте окно Параметры компонента (команда Свойства контекстного меню для выбранной функции) и введите в поле Описание текст с описанием функции.

Вызвать на рабочем листе созданную вами функцию можно как обычно. Она находится в категории Определенные пользователем.

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