Аргументы
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 😊