Офисное программирование
Добавить в закладки К обложке
- Введение - Страница 1
- Часть IОсноные седения о программироании на VBA - Страница 2
- 1.2. Редактор VBA. Первое знакомство - Страница 7
- 1.3. Изменение порядка выполнения операторов - Страница 9
- Глава 2Объект UserForm - Страница 14
- 2.2. Использование форм - Страница 16
- Глава 3Массивы, процедуры, функции - Страница 20
- 3.2. Работа с различными типами данных - Страница 24
- 3.3. Процедуры и функции VBA - Страница 26
- Глава 4Создание VBA-программ - Страница 31
- 4.2. Элементы управления ComboBox, OptionButton и Frame - Страница 34
- 4.3. Элементы управления MultiPage, ScrollBar, SpinButton[2] - Страница 37
- 4.4. Объект DataObject[3] - Страница 41
- Часть IIПрограммирование на VBA в Word - Страница 44
- 5.2. Форматирование документа - Страница 48
- Глава 6Автоматизация стандартных документов - Страница 52
- 6.2. Создание и автоматическое заполнение бланков стандартных документов - Страница 55
- Часть IIIПрограммирование на VBA в Excel - Страница 58
- 7.2. Использование возможностей VBA при непосредственных расчетах - Страница 63
- 7.3. Финансовые функции - Страница 67
- Глава 8Построение диаграмм средстами VBA - Страница 69
- 8.2. Построение круговых диаграмм и гистограмм - Страница 72
- Глава 9Базы данных в Excel - Страница 73
- 9.2. Конструирование пользовательского интерфейса - Страница 76
- Глава 10Создание собственного головного меню[9] - Страница 78
- Литература - Страница 83
Динамические массивы создаются с помощью оператора Dim, Private, Public или Static, причем список размерностей опускается, затем их размер устанавливается с помощью оператора ReDim во время выполнения процедуры.
Оператор ReDim имеет следующий синтаксис:
ReDim [Preserve] varname (subscripts) [As type] [, varname (subscripts) [As type]],
где необязательное ключевое слово Preserve приводит к тому, что VBA сохраняет данные в имеющемся массиве, когда изменяется размер массива с помощью ReDim;
varname – имя существующего массива;
subscripts – измерения массива (синтаксис для оператора subscripts в операторе ReDim такой же, как для оператора Dim);
type – любой тип VBA или определенный пользователем тип.
Необходимо использовать отдельный оператор As type для каждого массива, который вы определяете.
Примеры:
1) Dim Month() As String – объявляет динамический массив Month;
2) ReDim Month(1 to 30) – изменяет размер массива до 30 элементов;
3) ReDim Month(31) – изменяет размер массива до 31 элемента;
4) ReDim Preserv Month(1 to 31) – изменяет размер массива до 31 элемента, сохраняя содержимое;
5) Dim Table() As Integer – объявляет динамический массив;
6) ReDim Table(3, 15) – делает массив двумерным;
7) ReDim Table(4, 20) – изменяет размер двумерного массива;
8) ReDim Preserv Table(4, 25) – только изменяет последний размер массива;
9) Dim Mas as Variant – объявляет переменную типа Variant;
10) ReDim Mas(20) As Integer – создает массив 20 целых чисел в Variant.
Выводы:
1) можно изменять только последнее измерение многомерного массива, когда используется ключевое слово Preserv;
2) можно использовать ReDim для создания типизированного массива внутри переменной типа Variant.
Массив в программе можно также определить поэлементно. Например, следующий код
Dim B(l to 2, 1 to 2) as single
В(1,1)=2
В(1,2)=5
В(2,1)=4
В(2,2)=3
создает двумерную таблицу

При работе с массивами бывает полезно применять следующие функции и процедуры.
1. Array (списокАргументов)
Создает массив типа Variant. Аргумент в скобках представляет разделенный запятыми список значений, присваиваемых элементам массива.
Пример:
Dim День As Variant
День=Array(«Пн»,"вт","ср",….)
2. VBA имеет две функции, которые отслеживают верхний и нижний индексы предела массива, – функции Lbound и ubound. Эти функции возвращают нижнее и верхнее граничные значения индексов статического или динамического массива.
Синтаксис:
Lbound (имяМассива [, размерность])
Ubound (имяМассива [, размерность]),
где ИмяМассива – имя переменной массива;
Размерность – целое число, указывающее размерность массива, нижнюю или верхнюю границу которой возвращает функция. Для первой размерности следует указать 1, для второй – 2 и т. д. Если аргумент размерность опущен, подразумевается значение 1.
3. Использование оператора Erase для очистки или удаления массивов.
Оператор Erase позволяет выполнять одну из двух задач в зависимости от того, каким массивом манипулирует пользователь – статическим или динамическим. В случае статических массивов Erase позволяет очищать все элементы массива, в основном переустанавливая массив в то же самое состояние, какое он имел, когда VBA создавал его в оперативной памяти. В случае динамических массивов Erase позволяет полностью удалять массив и его содержимое из оперативной памяти.
VBA удаляет из памяти массивы, объявляемые локально в процедуре (так же, как и любые другие локальные переменные), каждый раз, когда процедура прекращает выполняться. Однако массивы, объявляемые на модульном уровне, существуют, пока любая процедура в этом модуле выполняется. Если программа большая, можно восстановить ресурс памяти, используемой динамическими массивами модульного уровня. Оператор Erase позволяет делать именно это.
Оператор Erase имеет следующий синтаксис:
Erase array1 [, array2, …]
Здесь array1 и array2 представляют любое допустимое имя массива VBA.