16337

Массивы в VBA

Шпаргалка

Информатика, кибернетика и программирование

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

Русский

2013-06-20

61.5 KB

33 чел.

Массивы

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

Массивы – это формальное объединение нескольких однотипных элементов (чисел, символов, строк и т.д.), упорядоченных по индексам, определяющим положением каждого элемента в массиве.

Пример 1.

Результаты многократных замеров температуры воздуха в течение одного года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект, - массив измерений.

Значения температур в марте

Число

1

2

3

4

5

6

7

8

9

Т,  0С

-10

-9

-11

-5

0

+3

-1

0

+4

Первая ячейка содержит значение температуры 1 марта, что можно обозначить Т [1] = -10;  Т [2] = -9 и т.д. Заметим, что все ячейки таблицы содержат однотипные данные (Т).

Пример 2.

Таблица, содержащая однотипные данные – классный журнал со списком учащихся, где каждая ячейка определяется двумя значениями – фамилией ученика и датой, а в ячейку заносятся отметки – целые числа от 1 до 5.

Определение.  

Массив – это совокупность конечного числа элементов одного и того же типа, в которой каждый элемент имеет номер, а все элементы – общее имя.

Массивом называется ряд ячеек памяти, отведенных для хранения индексной переменной.

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

Номер элемента массива называется его индексом.

Если в форме описания массива задан один индекс, массив называется одномерным, если два индекса – двумерным, если n индексов – n-мерным.

Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный – понятию прямоугольной таблицы (матрицы, набору векторов). Размерность ограничена только объемом памяти конкретного компьютера.

Характеристики массива:

1 Тип – общий тип элементов массива;

2 Размерность – количество индексов массива;

3 Диапазон – количество допустимых значений каждого индекса;

4 Размер – количество элементов массива.

Пример 3.

xi (5, 6, 7) →           размер – 3

                       размерность – 1

                                      тип – integer

                            диапазон – 1..3

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

Объявление массива

Массивы должны быть объявлены до их использования в программе.

Синтаксис:

Dim | Public | Private Имя_Массива (Размерность_Массива) As Тип_Данных

где

Dim | Public | Private – ключевые слова, декларирующие массив

                                               и область его видимости;

         Имя_Массива – идентификатор, определяющий имя массива;

      Размерность_Массива – значение нижней и верхней границы значения

                                      индекса (номера) соответствующей размерности.

                                      Допускается описание до 60 размерностей.

                              As – ключевое слово, предваряющее указание типа

                                      элементов массива;

            Тип_Данных – любой, действительный для VBA тип данных

                                      (базовый или созданный пользователем).

Пример 1.

Dim A (7) As Integer

Объявляется одномерный массив (вектор) А из 8 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(7).

При объявлении многомерного массива в поле индекса указывается несколько индексов в соответствии с размерностью массива.

Пример 2.

Dim B (4, 5) As Single

Объявляется двумерный массив В 4 х 5 (матрица), состоящая из 5 строк и 6 столбцов действительных чисел.

По умолчанию значение нижнее границы массива при таком объявлении равно нулю. В этом случае говорят, что 0 – базовый индекс массива. Можно изменить базовый индекс, написав в области описания модуля (General Declarations) инструкцию Option Base 1. После этого индексы массивов А и В будут нумероваться с единицы.

Другим способом изменения базового индекса является использование ключевого слова To при объявлении массива.

Пример 3.

Dim A (1 To 7) As Integer

Dim B (1 To 4, 1 To 5) As Single

В этом примере базовому индексу массива установлено значение 1.

Подобным образом моно устанавливать как положительные, так и отрицательные базовые индексы

Пример 4.

Dim Z (-3 To 7) As Single.

Динамические массивы

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

Пример 1.

Dim R () As Single.

Затем в программе следует вычислить необходимое количество элементов массива и сохранить его в некоторой переменной, например n, а затем изменить размер динамического массива с помощью оператора ReDim.

Пример 2.

ReDim R (1 To 3).

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

ReDim [Preserve] Имя_Массива (Размерность_Массива) As Тип_Данных

где

ReDim – ключевое слово, указывающее, что переопределяются размеры массива;

Preserve – необязательное ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности. Если оно не используется, то данные в массиве при изменении размерности не сохраняются.

Имя_Массива – имя массива, удовлетворяющее стандартным правилам именования переменных;

Размерность_Массива - значение нижней и верхней границы значения индекса (номера) соответствующей размерности (до 60). Если отсутствует инструкция Option Base, нижняя граница индекса по умолчанию равна 0.

Тип_Данных – тип данных массива.

Пример 3.

Dim A () As Integer   ‘Объявление динамического массива

Dim n As Integer        ‘Объявление переменной, для хранения размерности

N = 9                           ‘Инициализация значения

ReDim A (n)               ‘Одномерный массив из 10 элементов

ReDim A (3 To n, 1 To n)   ‘Двумерный массив с базовыми индексами

Примечание. Оператор ReDim изменяет размерность массива, но не тип его элементов.

Действия над массивами

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

Пример 1.

Если массивы А и В описаны как

Dim A (1 To 2) As Byte, B (1 To 2) As Byte,

то применение к ним допустимой операции даст следующий результат:

Выражение

Результат

A = B

Все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны

Пример 2.

Значение одного массива присваивается другому поэлементно в операторе цикла.

Sub primer ()

Dim A (1 To 2) As Byte, B (1 To 2) As Byte

Dim I As Byte

B(1) = 2

B(2) = 4

For I = 1 To 2

A(i) = B(i)

Debug.Print A(i), B(i)

Next i

End Sub

  

Действия над элементами массива

После объявления массива каждый его элемент можно обрабатывать, указав идентификатор (имя) массива и индекс элемента в круглых скобках.

Пример 1.

Запись

Mas (2), VectorZ (10)

позволяет обратиться к третьему элементу массива Mas и одиннадцатому элементу массива VectorZ.

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

Формирование массива

1 способ.

Формирование массива в программе определяется поэлементно с помощью последовательности операторов.

Пример 1.

Dim B (1 To 2, 1 To 3) As Single

B (1,1) = 2 : B (1,2) = 4 : B (1,3) = 6

B (2,1) = 1 : B (2,2) = 6 : B (2,3) = 2

2 способ.

Формирование массива с помощью датчика случайных чисел.

Пример 2.

Sub primer ()

Dim A(1 To 12) As Variant

Randomize

For i = 1 To 10

A(i) = Rnd (40)     

Debug.Print A(i)

Next i

End Sub               

3 способ

Инициализация элементов массива оператором цикла.

Наиболее эффективно эта операция выполняется с помощью оператора For.

Пример 3.

Dim M (1 To 9, 1 To 9) As Integer

Dim i As Integer

Dim j As Integer

For i = 1 To 9

For j = 1 To 9

M(i, j) = i * j

Next j

Next i

4 способ

Использование функции Array (массив) для задания одномерного массива

Удобным способом определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant.

Пример 4.

Sub ShowArray ()

Dim A As Variant

A = Array (10, 20, 30)

Debug.Print A(0)  ‘Отобразится:  10

Debug.Print A(2)  ‘Отобразится:  30

End Sub

Использование функции Array (массив) для задания многомерного массива

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

Пример 5.

Option Base 1

Sub MultiDim ()

Dim A As Variant

A = Array (Array(“Санкт-Петербург“, “Россия“), Array (“Киев“, “Украина“))

Debug.Print A (1) (1)  ‘Отобразится: Санкт-Петербург

Debug.Print A (1) (2)  ‘Отобразится: Россия

End Sub

Функция Array позволяет задавать не просто многомерные массивы, а массивы, у которых строки имеют различное число компонентов.

Пример 6.

Private Sub VarArray ()

Dim M As Variant

M = Array(Array(1,2), Array (3,4,5))

Debug.Print M (0) (0), M (1) (2)        ‘Отобразится: 1       5

End Sub

 



 

А также другие работы, которые могут Вас заинтересовать

41149. Способы задания плоскости на эпюре 592.5 KB
  Способы задания плоскости на эпюре Из курса элементарной геометрии известно что через три точки не лежащие на одной прямой можно провести плоскость и при том только одну. Таким образом положение плоскости в пространстве логично определить задать тремя точками точки А В С табл. Кроме этого положение плоскости в пространстве определяют: прямая АВ и точка С не лежащая на прямой табл.
41150. Изобарная и изохорная теплоемкости 80 KB
  3 где индекс х обозначает условия протекания процесса подвода теплоты индекс указывает при каких условиях подводится теплота: при постоянном давлении или при постоянном объеме.2 то можно предположить что поскольку при постоянном объеме внешняя теплота равна изменению внутренней энергии а при постоянном давлении изменению теплосодержания рабочего тела то в общем случае это должны быть разные количества теплоты. Другими словами количество теплоты для увеличения температуры на 1 градус при постоянном давлении будет отличаться от...
41151. Преобразование треугольника в эквивалентную звезду. Метод контурных токов 134 KB
  Преобразование треугольника в эквивалентную звезду. Преобразованием треугольника в эквивалентную звезду называется такая замена части цепи соединенной по схеме треугольником цепью соединенной по схеме звезды при которой токи и напряжения в остальной части цепи сохраняются неизменными. под эквивалентностью треугольника и звезды понимается то что при одинаковых напряжениях между одноименными зажимами токи входящие в одноименные выводы одинаковы. Преобразование треугольника в звезду.
41152. Программные средства обеспечения безопасности передачи данных в компьютерных сетях 320.5 KB
  Введение Интенсивное развитие глобальных компьютерных сетей появление новых технологий поиска информации привлекают все больше внимания к сети Internet со стороны частных лиц и различных организаций. Развитие глобальных сетей привело к многократному увеличению количества не только пользователей но и атак на компьютеры подключенные к сети Internet. При подключении к Internet локальной или корпоративной сети необходимо позаботиться об обеспечении информационной безопасности в этой сети. В сфере компьютерных сетей межсетевой экран представляет...
41153. Применение Первого начала термодинамики для процессов идеального газа 218 KB
  Т =const Если Т =const то после подстановки в уравнение состояния 4.4 получим pV = const или pv = const 4. В соотвествии с 1 внутрення энергия пропорциональна температуре U  T или dU  dT другими словами dU = CVdT где CV коэффициент пропорциональности CV теплоемкость газа при постоянном объеме Дж кг К Если Т =const то dT =0 и U = 0.7: pv = const следовательно pv=...
41154. Формирование уставного капитала и имущества организации, их состав и назначение. Определение потребности в основных и оборотных средствах, показатели использования 135.5 KB
  Определение потребности в основных и оборотных средствах показатели использования.Основные средства предприятия. Состав основных средств структура и воспроизводственная характеристика. Классификация основных средств основных фондов и ее экономическое значение.
41155. ТОВАР В СИСТЕМЕ МАРКЕТИНГА 1.06 MB
  Основные журналы по изучению товара в системе маркетинга Содержание товара как инструмента комплекса маркетинга. Услуги как особый вид товара в системе маркетинга. Концепция товарного ассортимента решения относительно товара продуктовой линии и упаковки.
41156. УЧЕТ ДЕНЕЖНЫХ СРЕДСТВ И ИХ ЭКВИВАЛЕНТОВ 138 KB
  Управление денежными средствами становится все более важным изза огромной сложности финансовых рынков. Правильное раскрытие и классификация денежных средств и их эквивалентов необходимы для точной оценки ликвидности компании. В МСБУ 7 Отчеты о движении денежных средств даны следующие определения денежным средствам их эквивалентам и потокам денежных средств: Денежные средства включают наличные деньги и вклады до востребования. Эквивалент денежных средств краткосрочные высоколиквидные вложения...
41157. Пошук інформації в системі 121.5 KB
  Перегляд тексту документа.Друк тексту документа. Підведення підсумків уроку Яку роботу можна проводити з документами Що таке закладка Що таке інформаційна панель Що таке експорт документів Що таке структура документа Відповіді студентів 2 хв. Перегляд тексту документа.