VBA ByRef - Proslijedite argument koristeći Excel VBA ByRef funkciju

Argument funkcije Excel VBA ByRef

ByRef u VBA je funkcija koja se naziva referencom, gdje pružamo referencu na bilo koji argument u našem kodu, kada izrađujemo prilagođene funkcije i želimo koristiti vrijednost bilo koje varijable koja je definirana ranije prije funkcije koju koristimo ByRef funkcija, sintaksa koja se koristi jednostavna je kao Naziv funkcije funkcije (varijabla ByRef kao tip podataka).

Korištenjem Byrefa možemo ukazati na izvornu vrijednost varijable bez mijenjanja vrijednosti varijable. To je poput prijenosa vrijednosti varijable izravno na VBA potprocesuru ili VBA funkciju.

Kako proslijediti argument koristeći VBA ByRef argument?

Primjer # 1

Na primjer, pogledajte donji VBA kod.

Šifra1:

Potprocedura1 () Dim k Kao cjelobrojno k = 50 Postupak2 k MsgBox k Kraj pod

Šifra2:

Potprocedura2 (ByRef k kao cjelina) k = k + 10 Kraj pod

U prvom sam postupku varijablu "k" proglasio Integer.

Tada sam ovoj varijabli dodijelio vrijednost 50.

Nakon toga, dodao sam novi redak tj

Postupak2 k

Ovo je drugo ime postupka. U ovom sam postupku proglasio varijablu unutar zagrade kao String u VBA-u, ali upotrijebio sam riječ "ByRef".

ByRef k Kao cjelovito

Ovdje sam vrijednost varijable "k" dodijelio kao

k = k + 10

Ok, sada ću pokrenuti kod korak po korak pritiskom na tipku F8.

Pritisnite tipku F8 još dva puta i postavite kursor na varijablu "k" da biste vidjeli vrijednost varijable "k".

Budući da smo dodijelili vrijednost 50, ona prikazuje vrijednost 50. Sada je istaknuo redak Procedure2 k, što je drugo ime postupka.

Ako sada pritisnem tipku F8, ona će iskočiti iz trenutnog postupka i preći u drugi postupak.

Budući da smo koristili riječ ByRef, ona je nosila vrijednost varijable "k" iz gornjeg postupka.

Pritisnite tipku F8 dva puta. Vratit će se na prethodni potpostupak. Ako primijetite u drugom postupku, primijenio sam formulu kao k = k + 10. tj., Vrijednost "k" je 50, a zatim tome doda 10 više, tj. Ukupno 60.

Sada je kôd pokrenut u prvom postupku, a u ovom postupku vrijednost varijable "k" je 50. Ali pritisnite tipku F8 i rezultat će se vidjeti u okviru za poruku.

Rezultat smo dobili kao 60 umjesto zadane vrijednosti 50 u ovom postupku.

Razlog zašto smo dobili 60 jer smo u drugom postupku primijenili "ByRef" tako da je na trenutni postupak donio rezultat jednadžbe (k = k + 10).

Ovdje je prva varijabla "k" vrijednost 50, a u drugom postupku vrijednost varijable "k" je k + 10, tj. 60, koja se prenosi u prvi postupak.

U prvom je postupku izvorna vrijednost varijable "k" iznosila 50, pa je By Ref promijenio izvornu vrijednost s 50 na 60 izvršavajući jednadžbu k = k + 10, tj. K = 50 +10 = 60.

Primjer # 2

Sada pogledajte još jedan primjer.

Šifra 1:

Sub P1 () Priguši moj broj dok je moj broj = 1 Poziv Promijeni_broj (Moj broj) 'MyNumber se mijenja postupkom Change_ByRef MsgBox "My Number is now:" & MyNumber End Sub


Šifra 2:

Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 Kraj Sub

Ovo djeluje potpuno isto kao i prethodni kod.

U početku je vrijednost varijable "MyNumber" jednaka 1. Zatim donji postupak nazivamo njegovim imenom

Nazovite Change_ByRef (Moj broj)

U tom je postupku vrijednost varijable 14.

Dakle, kad se vrati na prethodni postupak, dodijelit će novu vrijednost varijabli kao 14.

Zanimljivi članci...