Какво е 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 () Край Sub 

Стъпка 3: Сега дефинирайте променлива, да речем, че е A като цяло число.

Код:

 Sub VBA_ByRef1 () Dim A As Integer End Sub 

Стъпка 4: Дайте произволно число на променлива А. Нека това число е 1000.

Код:

 Sub VBA_ByRef1 () Dim A като цяло число A = 1000 край Sub 

Стъпка 5: За да отпечатаме стойността, съхранена в променлива A, бихме използвали Msgbox.

Код:

 Sub VBA_ByRef1 () Dim A като цяло число A = 1000 MsgBox A End Sub 

Стъпка 6: Сега компилираме и изпълняваме този код, като щракнем върху бутона Възпроизвеждане, както е показано по-долу. Ще получим поле със съобщение със стойността, съхранена в променлива А като 1000 .

Сега приложете VBA ByRef, създайте друга подкатегория под първата и задайте определената променлива от първата подкатегория с ByRef.

Стъпка 7: С това ще позволим на втората подкатегория да използва стойностите, съхранени в променлива А.

Код:

 Sub VBA_ByRef1 () Dim A като цяло число A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A като цяло число) End Sub 

Стъпка 8: Сега отново извикайте променливата A и извадете всяка стойност от променлива A, за да получите изходната стойност в същата променлива. Нека извадим 100 от стойността на променлива А, така че да получим измеримо число.

Код:

 Sub VBA_ByRef1 () Dim A като цяло число A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A като цяло число) A = A - 100 край Sub 

Стъпка 9: Сега, ако компилираме всяка стъпка от кода, ще забележим, че когато курсорът достигне променлива А, ще видим, че в него има само 0.

Стъпка 10: Когато курсорът достигне End Sub, изходът ще получим като 1000 в полето за съобщение.

Стъпка 11: Причината е, че не сме присвоили ByRef на първата подкатегория. Сега ще присвоим името на подкатегорията преди функцията на полето за съобщения на първата подкатегория и да видим какво ще се случи.

Код:

 Под VBA_ByRef1 () Dim A като цяло число A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A като цяло число) A = A - 100 край Sub 

Стъпка 12: И сега, стартирайте пълния код отново. Ще видим, втората стойност, която се съхранява в променлива А, като 100 се изважда от първата стойност 1000. В резултат на това получихме изходното съобщение като 900.

Стъпка 13: Това е основното предимство на използването на ByRef. Не е необходимо да определяме множество променливи за една задача. Само една променлива е достатъчна за изпълнение на цялата задача по различни начини. Можем да използваме повече от един ByRef в един модул.

За да оправдаем това, което разбрахме, нека добавим още един ByRef в същия модул.

Код:

 Sub VBA_ByRef1 () Dim A като цяло число A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A като цяло число) A = A - 100 край Sub Sub VBA_ByRef3 (ByRef A като цяло число) End Sub 

Стъпка 14: В тази подкатегория нека използваме умножение.

Код:

 Под VBA_ByRef1 () Dim A като цяло число A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A като цяло число) A = A - 100 край Sub Sub VBA_ByRef3 (ByRef A като цяло число) A = A * 2 край Sub 

Стъпка 15: Отново компилирайте и стартирайте кода отново. Ще видим, че стойността, получена от горните стъпки, тъй като 900 сега се умножава по 2, за да се получи 1800 като изход.

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

В този пример ще видим как ByRef работи с друг вид цели числа.

Стъпка 1: Отворете модул и напишете подкатегорията, както е показано по-долу.

Код:

 Sub VBA_ByRef4 () Край Sub 

Стъпка 2: Сега определете променлива A като Double. Това ще ни позволи да използваме десетични стойности.

Код:

 Sub VBA_ByRef4 () Dim A като двоен край Sub 

Стъпка 3: Присвойте всяка десетична стойност на променлива А.

Код:

 Sub VBA_ByRef4 () Dim A като двойно A = 1, 23 край Sub 

Стъпка 4: Сега отново използвайте полето за съобщения, за да видите стойността, съхранена в променлива А.

Код:

 Sub VBA_ByRef4 () Dim A като двойно A = 1, 23 MsgBox A End Sub 

Сега ако стартираме кода, ще получим 1, 23 като изход.

Стъпка 5: По различен начин ще използваме Function, за да определим ByRef като Double с променлива A.

Код:

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

Стъпка 6: Сега добавете произволно число към променлива А. Да речем, че е 10.

Код:

 Под VBA_ByRef4 () Dim A като двойно A = 1, 23 MsgBox A End подфункция AddTwo (ByRef A като двойно) като двойно A = A + 10 крайна функция 

Стъпка 7: И отново използвайте тази дефинирана ByRef функция в първата подкатегория. Тук ще видим две полета за съобщения, едно за променлива А и друго за ByRef.

Код:

 Под VBA_ByRef4 () Dim A като двойно A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub функция AddTwo (ByRef A като двойно) като двойно A = A + 10 End функция 

Стъпка 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
  2. OFFSET Excel функция (пример, приложения)
  3. Създайте хипервръзка в Excel VBA
  4. Как да използвате Excel Fill Handle?

Категория: