Что такое ByRef в VBA?

Byref в VBA означает «По ссылке». С помощью VBA Byref мы можем ориентироваться на исходное значение без изменения значения, хранящегося в переменных. Другими словами, мы будем напрямую передавать значение в процедуры Sub вместо использования обычных методов определения и присвоения значений переменным.

В VBA ByRef мы определяем подпроцедуру после того, как устанавливаем правило для ByRef. Это может быть сделано ниже подпроцедуры, где мы хотим написать код. В ByRef мы переопределяем переменную, которая используется в процедуре Sub. И это работает правильно только тогда, когда мы вызываем условие ByRef в нашей подпроцедуре.

Как использовать функцию ByRef в Excel VBA?

Ниже приведены различные примеры использования функции ByRef в Excel с использованием кода VBA.

Вы можете скачать этот шаблон VBA ByRef Excel здесь - Шаблон VBA ByRef Excel

Excel VBA ByRef - Пример № 1

Во-первых, давайте узнаем, как вставить ByRef в VBA, для этого выполните следующие шаги. В этом примере мы увидим, как использовать VBA ByRef для простой математической работы по вычитанию. Для этого нам понадобится модуль.

Шаг 1: Итак, перейдите в VBA и откройте модуль из меню « Вставка», как показано ниже.

Шаг 2: В недавно открытом модуле напишите подкатегорию VBA ByRef, как показано ниже.

Код:

 Sub VBA_ByRef1 () End Sub 

Шаг 3: Теперь определите переменную, скажем, это A как целое число.

Код:

 Sub VBA_ByRef1 () Dim A As Integer End Sub 

Шаг 4: Присвойте любое число переменной А. Пусть это число будет 1000.

Код:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 End Sub 

Шаг 5: Чтобы напечатать значение, хранящееся в переменной A, мы будем использовать Msgbox.

Код:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub 

Шаг 6: Теперь мы скомпилируем и запустим этот код, нажав кнопку Play, как показано ниже. Мы получим окно сообщения со значением, хранящимся в переменной A как 1000 .

Теперь примените VBA ByRef, создайте другую подкатегорию ниже первой и назначьте определенную переменную из первой подкатегории с помощью ByRef.

Шаг 7. Таким образом, мы позволим второй подкатегории использовать значения, хранящиеся в переменной A.

Код:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) End Sub 

Шаг 8: Теперь снова вызовите переменную A и вычтите любое значение из переменной A, чтобы получить выходное значение в той же переменной. Давайте вычтем 100 из значения переменной A, чтобы мы получили измеримое число.

Код:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Шаг 9: Теперь, если мы скомпилируем каждый шаг кода, мы заметим, что когда курсор достиг переменной A, мы увидим, что в нем хранится только 0.

Шаг 10: Когда курсор достиг End Sub, вывод мы получим как 1000 в окне сообщения.

Шаг 11: Это потому, что мы не присвоили ByRef первой подкатегории. Теперь мы назначим имя подкатегории перед функцией окна сообщения первой подкатегории и посмотрим, что произойдет.

Код:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Шаг 12: А теперь снова запустите полный код. Мы увидим, что второе значение, которое хранится в переменной A как 100, вычтено из первого значения 1000. В результате мы получили выходное сообщение как 900.

Шаг 13: Это главное преимущество использования ByRef. Нам не нужно определять несколько переменных для одной работы. Достаточно одной переменной для выполнения всей задачи разными способами. Мы можем использовать более одного ByRef в одном модуле.

Чтобы оправдать то, что мы поняли, давайте добавим еще один ByRef в тот же модуль.

Код:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) End Sub 

Шаг 14: В этой подкатегории, давайте использовать умножение.

Код:

 Sub VBA_ByRef1 () Dim A как целое число A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A как целое число) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A как целое число) A = A * 2 End Sub 

Шаг 15: Снова скомпилируйте и снова запустите код. Мы увидим, что значение, полученное на вышеуказанных этапах как 900, теперь умножается на 2, чтобы получить 1800 в качестве выходных данных.

Excel VBA ByRef - Пример № 2

В этом примере мы увидим, как ByRef работает с другими видами целых чисел.

Шаг 1: Откройте модуль и напишите подкатегорию, как показано ниже.

Код:

 Sub VBA_ByRef4 () End Sub 

Шаг 2: Теперь определите переменную A как Double. Это позволит нам использовать десятичные значения.

Код:

 Sub VBA_ByRef4 () Dim A As Double End Sub 

Шаг 3: Присвойте любое десятичное значение переменной A.

Код:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 End Sub 

Шаг 4: Теперь снова используйте окно сообщения, чтобы увидеть значение, хранящееся в переменной A.

Код:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 MsgBox A End Sub 

Теперь, если мы запустим код, мы получим 1.23 в качестве вывода.

Шаг 5: По-другому мы будем использовать функцию для определения ByRef как Double с переменной A.

Код:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Подфункция AddTwo (ByRef A As Double) в качестве функции двойного конца 

Шаг 6: Теперь добавьте любое число в переменную А. Скажем, это 10.

Код:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Шаг 7: И снова используйте эту определенную функцию ByRef в первой подкатегории. Здесь мы увидим два окна сообщения, одно для переменной A и другое для ByRef.

Код:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function AddTwo (ByRef A As Double) как Double A = A + 10 End Function 

Шаг 8: То же самое будет отражено и в окне сообщения.

Шаг 9: И в следующем запуске он добавит значение 10 к исходному значению переменной 1.23, как показано ниже.

Вот как VBA Byref берет ссылку на значение, определенное один раз, и затем заполняет вывод в соответствии с новым условием.

Плюсы и минусы VBA ByRef

  • При написании больших кодов это экономит много времени, учитывая уже определенную переменную, так что ее значение можно использовать снова и снова.
  • Нам не нужно определять много переменных согласно формуле, которую мы хотим применить.
  • Мы можем применить много условий ByRef в одном модуле, даже не нарушая процесс.
  • Мы не можем использовать VBA Byref в сложной структуре кода.

То, что нужно запомнить

  • При рассмотрении нескольких условий ByRef выходные данные будут основываться на последней определенной нами подпроцедуре ByRef, но также учитываются все ранее использованные условия ByRef.
  • Окончательный вывод будет иметь последовательный обработанный вывод. Не только последний.
  • Этот процесс не может быть выполнен путем записи макроса.
  • Мы можем увидеть значение, хранящееся на каждой стадии переменной, скомпилировав код.
  • После этого сохраните файл excel в формате Excel с поддержкой макросов, чтобы в будущем мы не потеряли код.

Рекомендуемые статьи

Это руководство по VBA ByRef. Здесь мы обсуждаем, как использовать функцию ByRef в Excel, используя код VBA, а также на практических примерах и загружаемом шаблоне Excel. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. Руководство по VBA UBound Function
  2. OFFSET функция Excel (пример, использование)
  3. Создать гиперссылку в Excel VBA
  4. Как использовать Excel Fill Handle?

Категория: