В данной статье речь пойдёт про параметры ByVal и ByRef, которые позволяют передавать значения в процедуры и функции по значению или по ссылке.
ByVal — Передача параметра по значению
При передаче делается копия элемента. Все изменения, которые будут проводится над параметром, будут затрагивать только его.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Option Explicit ' Процедура, которая увеличивает переданный год на 1 Sub nextYear(ByVal year) year = year + 1 End Sub Dim year ' Объявляем переменную year = 2017 ' Инициализируем её nextYear(year) ' Вызываем процедуру MsgBox(year) ' year = 2017, так как была сделана копия значения |
ByRef — Передача параметра по ссылке
В данном случае передача параметра происходит по ссылке. Любые изменения будут отражены на исходном элементе.
Так же стоит знать, что ByRef используется по умолчанию при передаче параметров.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Option Explicit ' Процедура, которая увеличивает переданное значение на 1 Sub nextAge(ByRef year) age = age + 1 End Sub Dim age ' Объявляем переменную age = 18 ' Инициализируем её nextAge(age) ' Вызываем процедуру MsgBox(age) ' age = 19, так как параметр был передан по ссылке |
С вопросами обращайтесь в комментарии.