- •Лекция 7. Процедуры и функции в vba
- •Процедуры, функции и макросы
- •Вставка процедур и функций
- •Процедуры
- •Определение процедуры
- •Вызов процедуры
- •Обработчики событий
- •Функции
- •Определение функции
- •Вызов функции
- •Функции, возвращающие массивы
- •Параметры
- •Необязательные параметры
- •Передача параметров по значению и по ссылке
Лекция 7. Процедуры и функции в vba
Процедуры, функции и макросы
Использование языка VBA отличается от использования других языков, в частности, языка Паскаль. На языке Паскаль обычно пишутся программы, которые преобразуются в исполняемый файл и запускаются по требованию пользователя. Программа на языке Паскаль соответствует приложению MicrosoftExcelв целом. Язык VBA (VisualBasicforApplication) предназначен для написания кода, работающего внутри приложенияMicrosoftExcel. Поэтому код на языке VBA оформляется не в виде самодостаточной программы, а в видеподпрограмм.
Подпрограмма– это записанный отдельно и поименованный алгоритм, решающий определённую задачу, которому можно передавать данные для обработки.
Можно также сказать, что подпрограмма – это логическиобъединённый набор действий, оформленный по правилам языка программирования.
Подпрограммы делятся на процедуры и функции.
Процедура– это подпрограмма, которая выполняет некоторые действия, но не возвращает никакого значения.
Функция– это подпрограмма, которая возвращает значение.
В офисных пакета используется также термин «макрос». Макрос– это процедура, записанная с помощью специального средства, встроенного в офисное приложение.
Вставка процедур и функций
Процедуры, функции и макросы хранятся в модулях. Модуль– это специальная часть рабочей книги, предназначенная для хранения процедур и функций. До написания процедур и функций в рабочую книгу необходимо вставить модуль с помощью пункта менюVBEInsert Module.
Затем можно вставить процедуру или функцию с помощью пункта меню VBEInsert Procedure…. В появившемся диалоговом окне необходимо указать имя подпрограммы и тип подпрограммы – процедура (Sub) или функция (Function). Остальные параметры можно оставить без изменения. Однако список параметров и тип результата функции придётся вписывать вручную. В принципе, использовать пункт меню вставки подпрограммы и соответствующий диалог совсем не обязательно. Можно просто набрать в тексте модуля строкуPublic Sub …илиPublic Function …, и после нажатия клавишиВводредактор VBA вставит завершающую строкуEnd SubилиEnd Functionи отделит новую подпрограмму чертой.
Процедуры
Определение процедуры
Как было сказано, процедура– это подпрограмма, которая выполняет некоторые действия, но не возвращает никакого значения. Процедура имеет следующий синтаксис:
Sub<имя> (<список параметров>)
<инструкции>
[Exit Sub]
<инструкции>
End Sub
Первая строка, содержащая имя процедуры и список параметров, называется заголовкомпроцедуры. Имя процедуры должно бытьидентификатором. Принято давать процедурам значимые имена – в идеальном случае имя процедуры должно описывать, что делает эта процедура.
Список параметров определяет параметры, которые надо передать в процедуру. Эти параметры будут управлять поведением процедуры. Список параметров может быть пустым.
Public Sub CountOfSheets()
MsgBox "Всего листов - " & Sheets.Count & vbNewLine & _
"Рабочих листов - " & Worksheets.Count & vbNewLine & _
"Листов диаграмм - " & Charts.Count
End Sub
Public Sub ChangeNegatives()
Dim cell As Range, n As Integer
n = 0
For Each cell In Selection
If cell.Value < 0 Then
cell.Value = -cell.Value
n = n + 1
End If
Next cell
MsgBox "Обработано ячеек - " & Selection.Count & vbNewLine & "Изменено ячеек - " & n
End Sub