End Sub
Передача по ссылке и по значению
Передача аргументов из одной программы в другую осуществляется двумя способами — по ссылке (by reference) и по значению (by value). В первом случае передается сама переменная, поэтому ее значение в подпрограмме можно изменить. Во втором случае — только значение переменной, а не она сама, и изменить ее в вызванной подпрограмме нельзя.
Выбор способа передачи осуществляется ключевыми словами ByRef и ByVal, которые в круглых скобках указываются в описании вызываемой подпрограммы.
Примечание При отсутствии в описании аргументов ключевых слов ByRef и ByVal передача осуществляется по ссылке.
В программе ПередачаАргументаПоСылке переменная UserName передается в подпрограмму ChangeName по ссылке.
Sub ПередачаАргументаПоСылке ()
Dim UserName As String
UserName = "Иван"
ChangeName UserName
MsgBox UserName
Sub ChangeName (ByRef UserName)
UserName = "Петр"
В первой строке подпрограммы ChangeName в круглых скобках набраны ключевое слово ByRef и имя переменной UserName, указывая, что аргумент UserName будет передан в подпрограмму по ссылке. Это означает, что в подпрограмме используется сама переданная в нее переменная. В частности, в ChangeName переменной UserName присваивается новое значение Петр, которое затем возвращается в процедуру
ПередачаАргументаПоСылке и выводится на экран. Обратите внимание, что в программах ПередачаАргументаПоСылке и в ChangeName использовано одно и то же имя переменной — UserName. Но делать так вовсе не обязательно. Дальше мы показываем, что к тем же результатам приводит применение разных имен.
|
|
Sub ПередачаАргументаПоСсылке_РазныеПеременные ()
Dim UserName As String
UserName = "Иван"
ChangeName2 UserName
MsgBox UserName