Способы передачи аргументов VBA

Способы передачи аргументов в процедуру. Урок №35

Аргумент в процедуру можно передавать как ссылку, указав адрес его размещения в памяти, или как значение.

Если аргумент передан по ссылке, то процедура получает непосредственный доступ к нему и при выполнении может изменять значение переданного аргумента.

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

Sub myArg(a)
    a = a * 10
End Sub
Sub myCode()
Dim b
    b = 5
    Call myArg(b)
    MsgBox b
End Sub

Если аргумент передаётся как значение, то процедура получает копию передаваемого аргумента, и поэтому изменение аргумента внутри этой процедуры уже не оказывает никакого влияния на исходную переменную. То есть, значение аргумента, который передаётся вызываемой процедуре по значению, всегда остаётся неизменным в вызывающей процедуре, независимо от того какие действия выполняются в вызываемой процедуре.

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

Пример передачи аргумента как значения

Sub myArg(ByVal a)
    a = a * 10
End Sub
Sub myCode()
Dim b
    b = 5
    Call myArg(b)
    MsgBox b
End Sub

Main Menu