Вызов процедуры
Вызов процедуры Sub из другой процедуры можно произвести несколькими способами.
Первый способ вызова процедуры Sub:
ИмяПроцедуры СписокФактическихПараметров
ИмяПроцедуры | Имя вызываемой процедуры |
СписокФактическихПараметров | Список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в процедуре по количеству и типу. |
Если требуется использовать несколько процедур с одинаковыми названиями; при их вызове после имени процедуры через точку надо указывать имя модуля, на котором они расположены. А именно,
ИмяМодуля . ИмяПроцедуры СписокФактическихПараметров
Второй способ вызова процедуры sub производится с помощью инструкции Call.
ИмяПроцедуры (СписокФактическихПараметров )
Обратите внимание, что в этом случае список фактических параметров заключается в скобки. В первом способе скобки не использовались.
VBA позволяет вводить фактические параметры через имена аргументов в любом порядке и опускать необязательные (optional). При этом после имени аргумента ставятся двоеточие и знак равенства, после которого помещается значение аргумента (фактический параметр).
Приведенный ниже пример показывает основные способы передачи параметров в процедуры.
Dim с As Double
‘
' с - глобальный параметр
‘
Function F(ByVal x As Integer) As Integer
F = x^2
End Function
‘
Sub Assistant (ByVal a As Integer, ByVal b As Integer)
‘
‘Процедура, находящая сумму двух чисел и выводящая результат в диалоговом окне
‘
с = а + b
‘
MsgBoxCStr(c)
‘
End Sub
‘
Sub Main()
‘
‘Процедура, находящая сумму двух чисел и выводящая результат в диалоговом окне
‘
Dim x, у As Double
‘
‘ x, у - переменные, используемые в качестве фактических параметров
' Вызов процедуры с конкретными числами как фактическими параметрами
‘
Assistant 1, 3
‘
' Первоначальное присвоение переменным значений, с последующим вызовом процедуры
‘
х = 1: у = 1
Assistant x, у + 2
‘
' Использование функции как фактического параметра
‘ I
х = 1: у = 3
Assistant F(x), у
'
‘Вызов процедуры с указанием фактических параметров по имени
‘
Assistant a:=l, b:=3
End Sub
Приведем пример процедуры с необязательными параметрами. Процедура сторонатреугольника позволяет найти длину недостающей стороны прямоугольного треугольника, где переменные A и B отведены под длины катетов, а переменная С — под гипотенузу. Например, формула =СторонаТреугольника(;В2;С2)
вычисляет катет А по введенным в ячейки В2 и С2 длинам катета В и гипотенузы С. При работе с необязательными переменными необходимо использовать функцию IsMissing,
возвращающую значение True, если соответствующий аргумент не был передан в процедуру, и False в противном случае.
Function СторонаТреугольника (Optional A, Optional В, Optional С)
If Not (IsMissing(A)) And Not (IsMissing(В)) Then
СторонаТреугольника = Sqr(А^2 + В^2)
End If
If Not (IsMissing(A)) And Not (IsMissing(C)) Then
СторонаTреугольника = Sqr(С^2 – A^2)
End If
If Not (IsMissing(B)) And Not (IsMissing(C)} Then
Сторонатреугольника = Sqr (C^2 – B^2)
End If
EndFunction
Назначение значений по умолчанию необязательным параметрам
Для необязательного параметра можно определить значение по умолчанию. В следующем примере, если значение параметра ь не передано в функцию, то ему присваивается указанное по умолчанию значение 8.
Function Сумма (a As Double, Optional b As Double = 8)
Сумма = a + b
End Function
Использование неопределенного количества параметров как правило, количество передаваемых параметров в процедуру совпадает с количеством определенных у этой процедуры параметров. Однако ключевое слово ParamArray предоставляет возможность ввода в процедуру произвольного, заранее не указанного числа параметров (например, как это происходит при использовании функции рабочего листа СУММ (sum)). В качестве примера приведем процедуру, которая выполняет то же действие, что и функция рабочего листа СУММ. Отличием функции суммапользователя от сумм является то, что в ней в каждое поле ввода диалогового окна мастера функций можно вводить только либо число, либо ссылку на ячейку, а не на Диапазон, как при работе с функцией СУММ.
Function СуммаПользователя (ParamArray Массив ())
s = 0
For Each a In Массив
s = s + a
Next а
CуммаПользователя = s
End Function
- 3 Семестр
- Оглавление
- Язык программирования Visual Basic for Application Основные средства и возможности vba Основные элементы vba
- Основы программирования на vba Типы данных
- Описание переменных
- Допустимые имена
- Инструкция Def Тип
- Массивы
- Динамические массивы
- Функции и процедуры для работы с массивами
- Константы
- Тип данных, определенный пользователем
- Операции vba
- Приоритеты операций
- Встроенные функции vba
- Математические функции
- Функции проверки типов
- Функции преобразования форматов
- Функции обработки строк
- Функции времени и даты
- Функции выбора
- Функции, возвращающие строки
- Встроенные диалоговые окна
- Инструкции vba
- Оператор присвоения
- Перенос строки
- Комментарии
- Расположение нескольких операторов на одной строке
- Операторы перехода и выбора
- Операторы повтора
- Условная компиляция
- Процедура
- Переход в подпрограмму и возвращение из подпрограммы
- Вызов процедуры
- Рекурсивные процедуры
- Область определения переменной
- Время жизни переменной
- Процедуры обработки ошибок и отладка программ Разработка процедур, предотвращающих появление ошибок
- Перехват и обработка ошибок
- Свойства объекта Err
- Методы объекта Err
- Отладка программ
- Ошибки компиляции
- Ошибки выполнения
- Логические ошибки
- Инструкция Option Explicit
- Пошаговое выполнение программ
- Точка останова
- Вывод значений свойств и переменных
- Работа с файлами Типы файлов в vba
- Открытие и закрытие файла
- Ввод данных в файл последовательного доступа
- Вывод данных из файла последовательного доступа
- Работа с файлом произвольного доступа
- Наиболее употребляемые инструкции и функции при работе с файлами
- Объект FileSearch
- Элементы управления и пользовательская форма Элементы управления
- Режим конструктора
- Установка свойств элемента управления
- Редактор кода
- Пользовательская форма UserForm
- Семейство Controls
- Создание пользовательской формы
- Общие свойства элементов управления
- Соглашения об именах
- Общие методы и события элементов управления
- Объект DataObject
- Надпись
- Заполнение списка
- Выбор нескольких элементов из списка
- Поле со списком
- Полоса прокрутки и счетчик
- Переключатель
- Флажок и выключатель
- Ссылки на ячейки и диапазоны
- Набор страниц
- Набор вкладок
- Дополнительные элементы управления
- Последовательность выбора элементов управления
- Инициализация и отображение диалогового окна
- Закрытие диалогового окна
- Отображение встроенных диалоговых окон
- Открытие документа
- Объект Application
- Свойства объекта Application
- Методы объекта Application
- События объекта Application
- Объект Workbook и семейство Workbooks
- Свойства объекта Workbook и семейства Workbooks
- Методы объекта Workbook и семейства Workbooks
- События объекта Workbook и семейства Workbooks
- Объект Worksheet и семейство Worksheets
- Свойства объекта Worksheet и семейства Worksheets
- Методы объекта Worksheet и семейства Worksheet
- События объекта Worksheet
- Объекты Range и Selection
- Адресация ячеек
- Задание групп строк и столбцов с помощью объекта Range
- Связь объекта Range и свойства Cells
- Свойства и методы объекта Range
- Программирование панели инструментов
- Объект CommandBar и семейство CommandBars
- Семейство CommandBarControls и объект CommandBarControl
- Пример создания панели инструментов пользователя
- Пример создания строки меню пользователя
- Создание пользовательской панели инструментов вручную
- Удаление элемента управления из панели инструментов вручную
- Удаление пользовательской панели инструментов вручную
- Назначение вручную макроса кнопке
- Изменение и создание вручную изображения на кнопке
- Программирование средств для работы со справочной информацией
- Структура помощника
- Типы помощника
- Свойства объекта Assistant
- Объект Balloon