VBA ByVal - Kako uporabiti argument funkcije ByVal? (Primeri)

Argument funkcije Excel VBA ByVal

ByVal je izjava v VBA. ByVal pomeni By Value, tj. Ko se v postopku prikliče podproces, se vrednost spremenljivk ponastavi na novo vrednost iz novega vpoklicanega postopka.

V delu VBA pri delu s funkcijami, ki so poklicane v različnih funkcijah, obstajajo določene okoliščine, da se vrednost prvotnega argumenta spremeni med klicanjem funkcije; izjava byval prepoveduje postopek ali kodo, ki spreminja vrednost argumenta.

Vem, da z branjem razlage ni lahko razumeti, toda s praktičnimi primeri delovanja lahko dejansko razumemo bolje.

Kako uporabiti argument ByVal v VBA?

Primer # 1

Na primer, poglejte spodnje kode VBA.

Koda:

Sub Macro1 () Dim k As Integer k = 50 Macro2 k MsgBox k End Sub
Sub Macro2 (ByVal k kot celo število) k = k + 5 End Sub

V zgornjih dveh makroprocedurah imamo skupno spremenljivko "k" med postopki. Naj to podrobno razložim, preden bomo videli rezultat.

V prvem makroju smo spremenljivki "k" dodelili vrednost 50.

Dim k Kot celo število k = 50

Nato smo poklicali drugi postopek makra iz prvega makra.

Makro2 k

V Makro2 smo vrednost spremenljivke ponastavili na k = k + 5. V tem makru smo uporabili argument ByVal za dodelitev vrednosti spremenljivki »k«.

Zdaj, da razumemo "ByVal", zaženimo kodo VBA vrstico za vrstico s pritiskom na tipko F8.

# 1 - Ob prvem pritisku na tipko F8 bo označila prvo vrstico Macro1.

V tem trenutku postavite kurzor na spremenljivko "k" in ta naj prikaže vrednost spremenljivke "k".

Trenutno je vrednost "k" enaka nič.

# 2 - Še enkrat pritisnite tipko F8 in skočila bo v tretjo vrstico.

Tudi zdaj je vrednost "k" še vedno enaka nič.

# 3 - Pritisnite tipko F8 zdaj in si oglejte vrednost k.

Ker je vrednost "k" nastavljena na 50 in je koda izvedena, je vrednost prikazana kot 50.

# 4 - Zdaj je označena vrstica »Macro2 k«, tj. S pritiskom na tipko F8 bo preskočila na drugi postopek, Macro2.

# 5 - Tudi zdaj je vrednost spremenljivke "k" v tem postopku prikazana tudi kot 50. Toda znotraj tega makra ponastavimo vrednost spremenljivke "k" kot k = k + 5, tj. 55. Zdaj pritisnite Tipka F8 še dvakrat.

Kot lahko vidite zgoraj je vrednost "k" zdaj 55.

# 6 - Pritisnite tipko F8 in vrnila se bo v postopek Macro1.

Ko je makro skočil nazaj na prvotni postopek Macro1, naša spremenljivka "k" ni več 55, temveč prvotna vrednost v tem postopku, tj. 50.

Ko pritisnete tipko F8, lahko v polju za sporočila v VBA vidimo le 50.

Torej, kot smo povedali na začetku članka, argument »ByVal« ne prenaša vrednosti iz enega postopka v drugega, čeprav ima vrednost spremenljivke od prvega makra do sekunde do trenutka, ko naleti na vrstico. ByVal «, ko se vrne na prvotni makro, ponastavi vrednost na prvotno vrednost samo v postopku.

2. primer

Zdaj pa si oglejte spodnja dva makra.

Koda:

Sub P1 () Dim k Kot celo število: k = 10 Pokliči P2 (k) MsgBox k End Sub
Sub P2 (ByVal k kot celo število) k = 15 Konec Sub
  • To je podobno kot prvi primer. V makro »P1« smo spremenljivki »k« dodelili vrednost 10, v istem makro »P1« pa smo drugi makro poimenovali »P2« s spremenljivko »k«.
  • V drugem makroju »P2« smo uporabili argument ByVal, tokrat pa je vrednost spremenljivke »k« 15.

Ta makro prenaša vrednost spremenljivke "k" kot deset iz makra "P1" v makro "P2" in v tem makru bo vrednost ponastavljena na 15, toda v trenutku, ko se vrne, da makro konča na prvi makro "P1" vrednost "k" nazaj na 10, ne na 15.

Stvari, ki si jih je treba zapomniti

Argument ByVal ne vpliva na vrednost spremenljivke tudi po zagonu makra, vendar lahko z argumentom By Ref prenesemo vrednost spremenljivke iz enega makra v drugega.

Zanimive Članki...