Која је разлика између БиРеф и БиВал аргумената? - Питање за ВБА интервју

Преглед садржаја:

Anonim

Ово је једно од најчешће постављаних питања у интервјуима за ВБА. У овом чланку ћемо сазнати која је разлика између БиВал и БиРеф аргумената у Екцелу ВБА.

Дефиниције:

БиРеф аргумент: То је дословно кратак облик референце. Када се аргумент пренесе као БиРеф аргумент на другу под -функцију или функцију, шаље се референца стварне променљиве. Све промене унете у копију променљиве ће се одразити у оригиналном аргументу.
Можемо рећи да се, уместо вредности, локација вредности шаље у функцију користећи БиРеф у функцију.
Ово је подразумевани аргумент у ВБА. Не морамо писати БиРеф пре аргумента.
Синтакса:

Суб к (а као варијанта)

‘Ор

Суб к (БиРеф а као варијанта)

БиВал аргумент: То је дословно кратак облик вредности. Када се аргумент пренесе као БиВал аргумент на другу под -функцију или функцију, шаље се само вредност аргумента. Оригинални аргумент остаје нетакнут. Све промене направљене у страној функцији или подменију неће се одразити у оригиналном аргументу.
Да бисте аргумент објавили као БиВал, морате користити кључну реч БиВал пре аргумента.
Синтакса:
Суб к (БиВал а као варијанта)
Сада знамо дефиниције. Погледајмо пример и завршимо с њим.

Пример БиРефа

Ево једноставног програма.

Суб Кс (БиРеф а Ас Вариант) а = 20 Дебуг.Принт "ин суб Кс валуе оф а =" & а Заврши суб под И () а = 10 Позовите Кс (а) Дебуг.Принт "у под И вредности а =" & а Енд Суб 

Дакле, овде имамо две подрутине. Прва подмена је Кс која узима варијантни аргумент као БиРеф.
(Можете изоставити кључну реч БиРеф. Она је подразумевана.)
Затим поставља вредност а = 20 енд тада штампа вредност а.

Суб И је главна потпрограм која позива потпрограм Икс. Он поставља вредност од а = 10 затим позива потпрограм Кс и пролазиа као аргумент. Затим штампа вредност од а у И.

Сада када покренете Суб И ово је излаз који добијате.
у под Кс вредност а = 20

у под И вредности а = 20

Закључак: Вриједност оригинала а се мијења под Кс и поставља на 20 за оба подсистема.
можете видети да када Суб И ради, почетна вредност а је била 10. И позива Кс (а). Кс поставља вредност а = 20. Штампа „у суб Кс вредности а = 20“. Контрола се враћа на и и штампа у под И вредности од а = 20.
Ово је ефекат БиРеф аргумента.

Пример БиВал -а:

Ово је пример БиВал -а

Суб Кс (БиВал а Ас Вариант) а = 20 Дебуг.Принт "ин суб Кс валуе оф а =" & а Заврши суб под И () а = 10 Позовите Кс (а) Дебуг.Принт "у под И вредности а =" & а Енд Суб

Оба примера су иста са једином разликом у преношењу аргумената. Овде у Кс, аргументи су декларисани као БиВал. Када овај пут покренете потпрограм И, излаз је:

у под Кс вредност а = 20
у под И вредности а = 10


Закључак: Вредност оригинала а се НЕ мења под Кс. Она је 20 за Кс и 10 за И.

Када И позове Кс са а, он шаље само вредност а, а не адресу а. Стога се свака промена направљена у а не одражава у оригиналној променљивој.

За пробу, ако је вредност штампе од а у Кс пре него што га поставите на 20, штампаће 10. Пошто се 10 преноси у а у Кс помоћу биВал. Користећи БиРеф који сте послали а од И до а од Кс.

Лако је питање, али многи од нас збуњују ово питање у интервјуу за вба. Разлог је тај што га не користимо много. Већину времена копирамо вредност у другу променљиву.

Па да, момци, ово је разлика између БиРеф и БиВал аргумената у Екцелу ВБА. Обавестите ме ако имате било каквих недоумица у вези ове теме или било које друге теме ВБА или Екцел. Одељак за коментаре је ваш.

Додајте и сачувајте нову радну свеску помоћу ВБА у програму Мицрософт Екцел 2016

Прикажите поруку на статусној траци програма Екцел ВБА

Искључите поруке упозорења помоћу ВБА у програму Мицрософт Екцел 2016

Популарни чланци:

Функција ВЛООКУП у Екцелу

ЦОУНТИФ у програму Екцел 2016

Како се користи функција СУМИФ у програму Екцел