
- •Использование visual basic for applications для разработки приложений в ms office
- •Введение
- •1. Общие принципы ооп
- •2. Визуальное программирование. Событийно-управляемое программирование
- •3. Структура программы и иерархия классов в office
- •4. Интегрированная среда разработки vba
- •4.1. Окна интегрированной среды
- •4.2. Меню
- •4.2.1. Меню Файл
- •4.2.2. Меню Вид
- •4.2.3. Меню Вставка
- •4.2.4. Меню Формат
- •4.2.5. Меню Отладка
- •4.2.6. Меню Запуск (Run)
- •4.2.7. Меню Сервис (Tools)
- •4.2.8. Пример создания простейшей формы
- •5. Язык vba, написание программного кода
- •5.1. Общие элементы синтаксиса, операторы
- •5.1.2. Арифметические операторы
- •5.1.3. Оператор конкатенации &
- •5.1.4. Логические операторы
- •5.1.5. Комментарий
- •5.2. Функции, процедуры, макросы, обработчики событий
- •5.2.1. Процедуры
- •5.2.2. Функции
- •5.2.3. Функции MsgBox и DialogBox
- •InputBox (подсказка [, заглавие ] [, по_умолчанию ] [, х_поз][ , у_поз][ , help_file, контекст]).
- •5.2.4. Еще один способ вызова процедуры или функции
- •5.3. Объявление переменных, типы переменных
- •5.4. Преобразованиеданных и типов данных
- •5.5. Массивы
- •5.6. Константы
- •5.7. Область видимости и время жизни переменных, констант и процедур
- •5.7.1. Управление областью видимости
- •5.7.2. Пример создания программного кода формы
- •5.8. Инструкции vba
- •5.8.1. Инструкции присваивания Let и Set
- •5.8.2. Инструкции циклов
- •5.8.3. Инструкции принятия решений
- •6. Создание графического интерфейса с помощью стандартных элементов диалога
- •6.1. Создание формы и размещение в ней элементов управления
- •6.1.1. Объектная модель библиотеки ms Forms
- •6.1.2. События форм и элементов управления
- •6.2. Элементы управления
- •6.2.1.Label (Надпись)
- •6.2.2.TextBox (Поле)
- •6.2.3.RadioButton (Переключатели или радиокнопки)
- •6.2.4.CheckBox (Флажок) и Toggle Button (Выключатель)
- •6.2.5.Frame (Рамка)
- •6.2.6.ListBox (Список)
- •6.2.7.ComboBox (Поле со списком)
- •6.2.14.Свойства элементов управления
- •7. Создание приложений для ms excel
- •7.1. Структура проекта
- •7.2. ОбъектApplication
- •7.3. Работа с книгами
- •7.4. Работа с рабочими листами
- •7.5. Работа с ячейками
- •8. Создание приложений для ms word
- •8.1. Структура проекта
- •8.2. ОбъектApplication
- •8.3. Работа с документами
- •8.4. Работа с абзацами
- •8.5. Работа с текстом
- •8.5.1. Объект Range
- •8.5.2. Объект Selection
- •9. Задания для самостоятельной работы
- •9.1. Создание графического интерфейса
- •9.2. Написание программного кода
- •9.3. Создание приложения дляWord
- •9.4. Написание функции и процедуры
- •9.5. Создание приложения дляExcel
- •Библиографический список
5.5. Массивы
Массив – это группа однотипных переменных, объединенных одним общим именем. Их можно считать одной из разновидностей переменных, отличие же состоит в том, что в массивах можно хранить не одно, а несколько переменных. Доступ к заданному элементу массива осуществляется с помощью индекса. При объявлении массива требуется указать тип переменных, которые будут храниться в нем, его размер и границы изменения индексов. Синтаксис объявления массива приведен ниже.
Dim MyArray (5 To 10) As Integer
или
Dim MyArray (10) As Integer
В данном примере объявляется одномерный массив целых чисел с именем MyArray. Граница изменения индексов массива в первом случае задается в диапазоне от 5 до 10. Во втором случае значение начального индекса то, которое принято по умолчанию, т. е. 0. Можно изменить это значение (например, на единицу), вписав в начало инструкцию Option Base 1.
Для установки конкретных значений элементам массива используется следующая конструкция: MyArray (3) = 25. После проведения такой операции значение третьего элемента массива будет равно 25, остальных – ноль (при инициализации числового массива всем его элементам присваивается нулевое значение).
Если размерность массива невозможно определить заранее, то используются динамические массивы. В момент своего объявления такой массив не содержит ни одного элемента. Объявляется динамический массив так: Dim MyArray () As Integer.
Для того чтобы использовать массив и добавлять в него элементы, необходимо использовать конструкцию: ReDim MyArray (100). Следует помнить, что при использовании инструкции ReDim все значения массива обнуляются. Для того чтобы этого не происходило, используется инструкция, выглядящая как ReDim Preserve MyArray (1000). Очевидно, в этом случае можно только увеличивать размерность массива.
Массивы могут быть не только одномерными, но и многомерными. Это означает всего лишь, что для идентификации элемента потребуется не одно, а несколько чисел. Многомерный массив (не более 60 измерений) объявляется так: Dim NewMassif (20, 30) As Single. Значение элементу присваивается такой конструкцией вида NewMassif (4, 3) = 50.57
5.6. Константы
Для повышения наглядности при описании программ вместо какого-либо постоянного значения часто используют константы. Применение констант значительно облегчает восприятие текста программы, а также упрощает отладку программы. Константы объявляются с помощью инструкции Const. В момент объявления константам присваиваются значения, которые больше уже нельзя изменить, например, Const UserPi As Single = 3.14159.
В VBA также существует множество встроенных констант, которые можно просмотреть в окне просмотра объектов. К таковым, например, относятся константы с именами False и True.
5.7. Область видимости и время жизни переменных, констант и процедур
5.7.1. Управление областью видимости
Область видимости – это участок программного кода, в котором доступны для использования переменные, константы и процедуры. Язык VBA позволяет управлять областью видимости, используя специальные ключевые слова. При объявлении переменных инструкцией Dim имя As тип внутри процедуры они будут видны, т. е. могут быть использованы только внутри этой процедуры. При каждом новом входе в процедуру переменная вновь инициализируется, при выходе из процедуры – уничтожается, при этом ее значение теряется.
Можно изменить время жизни переменной, объявив ее как статическую: Static имя As тип. В этом случае переменная будет инициализирована всего один раз при первом вызове процедуры, при выходе из процедуры ее значение сохраняется, при повторном вызове процедуры переменная не обнуляется. Она теряет свое значение только после закрытия документа.
Напишем, например, функцию для Excel, выполняющуюся каждый раз при активации листа 1 и считающую число активаций листа. Таким образом, функция должна считать количество своих вызовов.
Function OPN()
Static i
i = i + 1
OPN = i
End Function
Для того чтобы функция выполнялась каждый раз при активации листа, ее необходимо включить в обработчик события Worksheet_Activate() для данного листа, например, так:
Private Sub Worksheet_Activate()
Range("A1").FormulaR1C1 = _
"Этот лист открывается уже " & OPN & "-й раз"
End Sub
Здесь нужно уточнить, что FormulaR1C1 – это свойство выделенного диапазона из одной ячейки Range(“A1”), которое хранит в себе значение этой ячейки, текстовые строки записываются в кавычках.
Однако, если мы попробуем обратиться к счетчику за пределами функции OPN, то корректного значения не получим – переменная не видна за ее пределами. Для устранения этого недостатка переменную можно описать в модуле вне всякой функции или процедуры, если же мы еще более хотим расширить область ее видимости, то ее нужно определить с ключевым словом Public, тогда она будет доступна не только в текущем модуле, но и во всех других модулях приложения: Public имя As тип.
Существует еще одно ключевое слово – Private, которое означает, по сути, то же самое, что и ключевое слово Dim, т. е. делает переменную доступной только в текущем модуле или текущей процедуре.
Заметим, что все вышеописанное в равной степени относится как для переменных, так и для констант. Для процедур же в этом случае есть одно отличие: по умолчанию все процедуры доступны во всех модулях, т. е. объявляются как Public, для ограничения области видимости используется Private:
Private Sub Имя_процедуры (Список формальных параметров) End Sub
или
Private Function Имя_процедуры (Список формальных параметров) End Function