VBA ByRef | Passa l'argument mitjançant la funció ByRef d'Excel VBA

Argument de la funció ByRef d'Excel VBA

ByRef a VBA és una funció anomenada com per referència on proporcionem una referència a qualsevol argument del nostre codi, quan fem funcions personalitzades i volem utilitzar el valor de qualsevol variable que es defineixi abans abans de la funció que utilitzem la funció ByRef, la sintaxi que hem d’utilitzar és simple com a Funció Funció-Nom (Variable ByRef com a tipus de dades).

Mitjançant l’ús de Byref podem assenyalar el valor de la variable original sense alterar-lo. Això és com passar el valor de la variable directament al subprocediment VBA o a la funció VBA.

Com passar l'argument mitjançant l'argument VBA ByRef?

Podeu descarregar aquesta plantilla VBA ByRef Excel aquí: plantilla VBA ByRef Excel

Exemple 1

Per obtenir un exemple, mireu el codi VBA següent.

Codi1:

 Sub Procediment1 () Dim k Com Enter k = 50 Procediment2 k MsgBox k Final Sub 

Codi2:

 Subprocediment2 (ByRef k com a enter) k = k + 10 Final Sub 

En el primer procediment, he declarat la variable "k" com a enter.

Després he assignat el valor a aquesta variable com a 50.

Després d'això, he afegit una nova línia, és a dir,

Procediment2 k

Aquest és el segon nom del procediment. En aquest procediment, he declarat la variable del parèntesi com a Cadena a VBA, però he utilitzat la paraula "ByRef".

 ByRef k com a enter 

Aquí he assignat el valor de la variable "k" com

k = k + 10

D’acord, ara executaré el codi pas a pas prement la tecla F8.

Premeu la tecla F8 dues vegades més i col·loqueu un cursor a la variable "k" per veure el valor de la variable "k".

Com que hem assignat el valor com a 50, mostra el valor com a 50. Ara ha ressaltat la línia Procediment2 k que és el segon nom del procediment.

Si premo la tecla F8 ara sortirà del procediment actual i passarà al segon procediment.

Ara, ja que hem utilitzat la paraula ByRef, portava la variable "k" del procediment anterior.

Premeu la tecla F8 dues vegades per tornar al subprocediment anterior. Si observeu en el segon procediment, he aplicat la fórmula com a k = k + 10. És a dir, el valor de "k" és 50 i afegeix 10 més a 60, en total.

Ara el codi s’executa en el primer procediment i en aquest procediment el valor de la variable “k” és 50. Però premeu la tecla F8 i veureu el resultat en un quadre de missatges.

En aquest procediment hem obtingut el resultat 60 en lloc del valor predeterminat de 50.

La raó per la qual en vam obtenir 60 perquè al segon procediment hem aplicat "ByRef", de manera que va portar el resultat de l'equació (k = k + 10) al procediment actual.

Aquí el primer valor de la variable "k" és 50 i en el segon procediment el valor de la variable "k" és k + 10, és a dir, 60 que es porta al primer procediment.

En el primer procediment, el valor original de la variable "k" era 50, de manera que By Ref ha canviat el valor original de 50 a 60 executant l'equació k = k + 10, és a dir, k = 50 +10 = 60.

Exemple 2

Vegeu ara un exemple més.

Codi 1:

 Sub P1 () Disminueix el meu número com a llarg MyNumber = 1 Truca Change_ByRef (MyNumber) 'El meu número es canvia mitjançant el procediment Change_ByRef MsgBox "El meu número és ara:" & MyNumber End Sub 

Codi 2:

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

Funciona exactament igual que el codi anterior.

Inicialment, el valor de la variable "El meu número" és 1. A continuació, anomenem el procediment següent pel seu nom

 Truca a Change_ByRef (MyNumber)

En aquest procediment, el valor de la variable és 14.

Per tant, quan es torni al procediment anterior, assignarà el nou valor a la variable com a 14.