ВБА БиВал - Како се користи аргумент функције БиВал? (Примери)

Аргумент функције Екцел ВБА БиВал

БиВал је изјава у ВБА. БиВал је скраћеница од Би Валуе, тј. Када се потпроцедура позвана из процедуре вредност променљивих ресетује на нову вредност из нове позване процедуре.

У ВБА, када радимо са функцијама које се позивају у различитим функцијама, постоје одређене околности да се вредност изворног аргумента мења када се функција позива; изјава бивал забрањује процедуру или код који мења вредност аргумента.

Знам да није лако разумети читањем објашњења, али са практичним примерима функције заправо можемо боље разумети.

Како се користи БиВал аргумент у ВБА?

Пример # 1

На пример, погледајте доленаведене ВБА кодове.

Шифра:

Суб Макро1 () Дим к Као целобројно к = 50 Макро2 к МсгБок к Крај Суб
Суб Макро2 (БиВал к Као целобројни) к = к + 5 Крај Суб

У горња два макропроцедура имамо заједничку променљиву „к“ међу процедурама. Дозволите ми да ово детаљно објасним пре него што видимо резултат.

У првом макронаредби променљивој „к“ смо доделили вредност 50.

Дим к Ас Интегер к = 50

Даље, позвали смо другу макро процедуру из првог Макроа.

Макро2 к

У Макро2 смо ресетовали вредност променљиве на к = к + 5. У овом макроу смо користили аргумент БиВал да доделимо вредност променљивој „к“.

Сада да бисмо разумели „БиВал“, покренимо ВБА код ред по ред притиском на тастер Ф8.

# 1 - Првим притиском на тастер Ф8, означиће се први ред Мацро1.

У овом тренутку поставите курсор на променљиву „к“ и она треба да покаже вредност променљиве „к“.

Тренутно је вредност „к“ нула.

# 2 - Притисните тастер Ф8 још једном и скочиће на трећи ред.

Чак и сада, вредност „к“ је и даље нула.

# 3 - Притисните тастер Ф8 сада и погледајте вредност к.

Пошто је вредност „к“ постављена на 50, а код се извршава, па се вредност приказује као 50.

# 4 - Сада је истакнута линија „Мацро2 к“, тј. Притиском на тастер Ф8 прећи ће на други поступак, Мацро2.

# 5 - Чак и сада, вредност променљиве „к“ у овом поступку такође се приказује као 50. Али унутар овог макронаредбе ресетујемо вредност променљиве „к“ као к = к + 5, тј. 55. Сада притисните тастер Тастер Ф8 још два пута.

Као што видите изнад, вредност „к“ је сада 55.

# 6 - Притисните тастер Ф8 и он ће се вратити на поступак Мацро1.

Када се макро врати на првобитну процедуру Мацро1, наша променљива „к“ вредност више није 55, већ оригинална вредност у овом поступку, тј. 50.

Када притиснете тастер Ф8, у оквиру за поруке у ВБА можемо видети само 50.

Дакле, као што смо рекли на почетку чланка, аргумент „БиВал“ не преноси вредности из једне процедуре у другу, иако носи вредност променљиве из првог макроа у други до тренутка када наиђе на линију „ БиВал “када се врати на оригинални макро вредност ресетује на оригиналну вредност само у процедури.

Пример # 2

Сада погледајте доња два макронаредбе.

Шифра:

Суб П1 () Дим к Ас Интегер: к = 10 Позив П2 (к) МсгБок к Енд Суб
Суб П2 (БиВал к као целобројно) к = 15 Крај Суб
  • Ово је слично првом примеру. У макронаредби „П1“ променљивој „к смо доделили вредност 10, а у истом макронаредби „П1“ назвали смо други макронаредбу „П2“ са променљивом „к“.
  • У другом макроу „П2“ користили смо аргумент БиВал и овог пута вредност променљиве „к“ је 15.

Овај макро носи вредност променљиве „к“ као десет из макро „П1“ у макро „П2“, и у овом макроу вредност ће бити ресетована на 15, али оног тренутка када се врати да заврши макро на први макро „П1“ вредност „к“ врати на 10, а не на 15.

Ствари које треба запамтити

Аргумент БиВал не утиче на вредност променљиве чак и након покретања макронаредбе, али помоћу аргумента Би Реф можемо променљиву преносити из једног макроа у други.

Занимљиви Чланци...