Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_05_Процедуры и функции.doc
Скачиваний:
4
Добавлен:
15.08.2019
Размер:
147.97 Кб
Скачать

5.2. Передача параметров по ссылке и по значению

При вызове процедуры вы передаёте в неё некоторые параметры. В Visual Basic, по умолчанию при передаче переменных в качестве параметров, в процедуру передаются физические адреса переменных. То есть внутри процедуры этим параметрам могут быть присвоены некоторые значения, которые сохраняются в них после выхода из процедуры. Другим способом передачи данных является передача по значению, когда в оперативной памяти создаётся копия переменной, и в процедуру попадает её значение, оставляя, таким образом, значения параметров неизменными. Для обозначения передачи параметра по значению перед параметром указывается ключевое слово ByVal. Если одновременно с передачей по значению, передаются параметры по адресным ссылкам, они обозначаются словом ByRef. В следующем примере показано отличие передачи по ссылке от передачи по значению.

Sub Example(ByVal a, ByVal b, ByRef c)

a = a + 1

b = b + 1

c = c + 1

End Sub

Sub v()

Dim a As Single, b As Single, c As Single

a = 1: b = 10: c = 100

Example a, b, c

MsgBox a

MsgBox b

MsgBox c

End Sub

5.3. Процедуры с необязательными параметрами

Visual Basic допускает создание процедур с необязательными параметрами. Для указания необязательных параметров в списке аргументов используется слово Optional. Все необязательные параметры должны иметь тип Variant. Необязательный параметр применяется всегда с логической функцией IsMissing, возвращающей true, если соответствующий параметр не был передан в процедуру, и false – в противном случае.

Обратите внимание, во-первых, на то, что необязательным параметрам можно присваивать так называемые значения по умолчанию - если процедура будет вызвана без параметров, то внутри процедуры этим параметрам будут присвоены эти значения. Во-вторых, на первый вызов функции SN. В нём находится присваивание значений параметрам функции с помощью операции “:=” как в Паскале. При таком вызове можно не соблюдать соответствие расположения формальных параметров процедур при описании фактическим параметрам при вызове.

5.4. Неопределённое количество параметров

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

5.5. Использование отладчика

П одобно другим современным средам программирования VBA имеет так называемый отладчик – средство отладки программ. Режим отладки инициируется нажатием клавиши F8 или командой Debug – Step Into. Рассмотрим некоторые команды из меню Debug, используемые при отладке программ:

Compile Project – компиляция проекта с выявлением оши

бок

Step Into - режим пошаговой отладки, когда при

нажатии F8 выполняется следующий

оператор

Step Over - пропуск вызова процедуры, происходит

переход на следующий за ним оператор

Step Out - выход из процедуры в вызывающую

программу

Run to Cursor - программа выполняется в обычном, не

пошаговом режиме, до местоположения

курсора и переходит в режим отладки

Toggle Breakpoints – установить точку остановки. Про

грамма выполнится в обычном режиме

до этого места и перейдёт в режим от-

ладки. В программе их может быть не

сколько

Clear All Breakpoints – удалить все точки остановки

Кроме этих команд в режиме отладки используются следующие средства из меню View:

Immediate - окно вывода для оператора Debug.Print, который работает аналогично оператору Print из классического языка Basic

Locals Window – окно просмотра значений переменных

Call Stack – окно вызовов процедур. В нём выводится список всех процедур, которые вызваны программой в данный момент. Эта опция меню активна только в режиме отладки

На рисунке ниже показан режим отладки с этими окнами: