Передача аргументов по ссылке

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

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

Если запустить Процедуру7 в окне Immediate, вы увидите результат ее выполнения — число 12. Это происходит потому, что фактическая переменная с именем i передается в Процедуру8 по ссылке, а в последней ее значение изменяется, и после возвращения в Процедуру7 значение этой переменной остается измененным.

Передача аргументов по значению

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

Если теперь запустить Процедуру9 в окне Immediate, на печать будет выведено число 5. Изменения, выполняемые в вызываемой Процедуре10, влияют только на копию переменной, но не на ее оригинал.

Функциям можно присваивать тип данных.

 

Обработка ошибок

Во многих ситуациях использование инструкции On Error GoTo указывает интерпретатору на выполнение при возникновении ошибок определенного фрагмента программы. Вот пример использования такой обработки ошибок.

Инструкция On Error GoTo Метка1 указывает интерпретатору VBA на то, что при возникновении ошибки выполнение программы следует продолжить со строки, имеющей метку Метка2.

Инструкция Exit Function указывает интерпретатору VBA на то, что следует завершить выполнение функции в данном месте и не рассматривать дальнейшие ее строки.

Err.Description— специальная переменная, содержащая описание последней ошибки.

Resume Метка2 — инструкция по очистке ошибок и продолжению выполнения программы с места, обозначенного меткой Метка2.

Если в данной функции не происходит ошибок, она выводит на печать значение, равное аргументу, умноженному на 10, и переходит к метке Exit Function. Если же возникает внештатная ситуация, происходит переход к метке Метка1, на печать выводится информация об ошибке, после чего производится выход из функции.

 

Отладка программы

1 Пошаговое выполнение

Нажмите <F8> или выберите в меню команду Debugs Step Into. После этого в редакторе будет выделена первая строка программы. В любой момент пошагового процесса вы можете получить информацию о значениях переменных, поместив указатель мыши над названием этой переменной в тексте программы. Текущее значение будет отображено редактором.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: