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