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 – окно вызовов процедур. В нём выводится список всех процедур, которые вызваны программой в данный момент. Эта опция меню активна только в режиме отладки
На рисунке ниже показан режим отладки с этими окнами: