Аргументы

Аргументы

EasyPeasy VBA

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

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

Используются два способа передачи аргументов процедуре:

  • ByRef – передача аргументов по ссылке. При передаче аргумента по ссылке процедуре передается адрес ячейки памяти, в которой хранится переменная. После выхода из процедуры все сделанные с аргументом изменения будут сохранены в переменной, которая была передана.
Sub Adding(ByRef i As Integer)
...
End Sub
  • ByVal – передача аргументов по значению. Передача аргумента по значению фактически означает передачу процедуре копии исходной переменной. Следовательно, после выхода из процедуры все сделанные с аргументом изменения будут утрачены.
Sub Adding(ByVal i As Integer)
...
End Sub
Аргументы в VBA по умолчанию передаются по ссылке. Иначе говоря, если не использованы ключевые слова ByVal или ByRef, то аргумент будет передан по ссылке.

Easy Peasy пример

В следующем примере аргумент процедуры SecondPr передается по ссылке (по умолчанию). После того как процедура FirstPr присваивает переменной MyVar значение 15, она вызывает процедуру SecondPr и передает MyVar в качестве аргумента. Процедура SecondPr умножает значение своего аргумента (с названием Var2) на 100. По окончании процедуры SecondPr возобновляется выполнение процедуры FirstPr, а функция MsgBox отображает строку MyVar: 1500.

Sub FirstPr()
Dim MyVar As Integer
MyVar = 15
Call SecondPr(MyVar)
MsgBox MyVar
End Sub

Sub SecondPr (Var2)
Var2 = Var2 * 100
End Sub 

Run by Step/Выполнение кода пошагово

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

Для Windows. Устанавливаете курсор в любом месте внутри кода и нажимаете клавишу F8 (либо выбрать в меню Degub-Step Into). Теперь при каждом нажатии клавиши F8 код будет выполнять одну строку кода за другой в той очередности. Также есть опция выполнения процедуры до строки, в которой на данный момент установлен курсор, используйте Ctrl+F8.

Для Mac. Устанавливаете курсор в любом месте внутри кода и нажимаете cmd+shift+i, либо кнопка "Step Info", как на видео сверху.

Также имееются другие способы отладки кода, о которых мы скоро вам расскажем! 😊


Присоединяйтесь к нашему чату в Telegram!

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

Добро пожаловать в EasyPeasy VBA Chat 😊

Report Page