Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование с помощью процедур VBA.doc
Скачиваний:
1
Добавлен:
28.09.2019
Размер:
149.5 Кб
Скачать

Программирование с помощью процедур vba

VBA – это объектно-ориентированный язык программирования. В свое время он был разработан специально для записи макросов в Microsoft Excel 5.0. Затем он начал использоваться и другими приложениями Microsoft Office, в частности Access. Сейчас VBA стал стандартным языком макропрограммирования, что очень полезно, так как облегчает взаимодействие различных приложений.

Структура программы Модули

При разработке больших программ целесообразно часть подпрограмм, собирать вместе и компилировать отдельно от основной программы в виде библиотек ресурсов или модулей.

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

Создаваемая вами программа должна размещаться в МОДУЛЕ – специальный лист рабочей книги.

Для записи процедуры или функции нужно запустить редактор VBA (меню Сервис – Макросы – Редактор VBA).

В окне редактора VBA через меню Insert добавить Module.

В одной рабочей книге может быть несколько модулей, которые автоматически называются Модуль1, Модуль2 и т.д..

Функции и процедуры

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

Типы процедур и их элементы

Существует два типа процедур VBA – процедуры Sub и функции Function.

Описание процедуры и функции начинается с заголовка, в котором указывается тип процедуры (Sub или Function) и имя процедуры.

Упражнение. На лист модуля процедура добавляется с помощью меню Insert (Добавить). Далее открывается диалоговое окно, в котором определяется имя процедуры и с помощью переключателя выбирается тип процедуры. (Выбираем – Function, пишем новую функцию)

Нажимаем клавишу OK и на листе модуля появляются две строки программного кода: первая строка – заголовок процедуры, вторая строка – последняя команда процедуры.

Например, Function Площадь() заголовок функции

End Function последний оператор функции

Именовать процедуру можно и латиницей и кириллицей. Именем функции или переменной может быть любой идентификатор, определенный пользователем.

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

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

Обязательный синтаксис инструкции Function выглядит следующим образом:

Function имя [ (список аргументов) ] [As тип]

[Тело функции]

имя =выражение {возвращаемое значение функции}

End Function

Жирным шрифтом выделены слова, которые должны вводиться в точном соответствии с примером. Слова, набранные жирным курсивом, - это имена, определяемые пользователем. Слова, стоящие в квадратных скобках, являются необязательными (могут отсутствовать).

Если имени функции не присваивается значения, то она возвращает значение по умолчанию: 0 в случае числовой функции, строку нулевой длины в случае строковой функции.

Тело функции состоит из описательной части и блока операторов, выполняющихся один за другим. Новые строки в текст процедуры добавляются с помощь клавиши Enter.

Объявив функцию, ее можно использовать в рабочем листе. Использование (вызов) функции созданной пользователем происходит точно также как любой другой имеющейся в Excel функции.

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

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

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

Аргументы

В заголовке процедуры или функции описываются данные для обработки, которые процедура или функция получает из вызвавшей ее основной программы или подпрограммы. Эти данные называются аргументами.

Аргументы передаются из основной программы и используются процедурой или функцией в ходе выполнения.

Например: Function Площадь(One, Two, Tree),

Аргументы: One, Two, Tree – должны содержать значения длины сторон треугольника (предположим программируется пользовательская функция расчета площади треугольника по трем сторонам).

Если в функцию Function включается список аргументов, то он должен быть заключен в скобки, а аргументы – разделены запятыми.

Например

Function Площадь(One, Two, Tree)

П_периметр = (One + Two + Tree) / 2

Площадь = sqr ( (П_периметр - One)*( П_периметр - Two )* (П_периметр - Tree))

End Function

Этой функции передаются аргументы One, Two, Tree – длины сторон треугольника.

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

В следующей строке рассчитанный полупериметр используется в формуле Герона для расчета площади треугольника.

Символы sqr(…) означают вызов стандартной функции языка VBA для вычисления квадратного корня. Список некоторых стандартных функций языка приведен далее, полный список стандартных процедур можно найти в справке по языку VBA.

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

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

Например = Площадь(10, 5, 12)

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