VBA ByRef - Passa argomento utilizzando la funzione ByRef VBA di Excel

Argomento della funzione ByRef VBA di Excel

ByRef in VBA è una funzione chiamata per riferimento in cui forniamo un riferimento a qualsiasi argomento nel nostro codice, quando creiamo funzioni personalizzate e vogliamo utilizzare il valore di qualsiasi variabile definita in precedenza prima della funzione che usiamo la funzione ByRef, la la sintassi da usare è semplice come Function Function-Name (ByRef Variable as Data Type).

Utilizzando Byref, possiamo puntare al valore della variabile originale senza alterare il valore della variabile. È come passare il valore della variabile direttamente alla sottoprocedura VBA o alla funzione VBA.

Come passare l'argomento utilizzando VBA ByRef Argument?

Esempio 1

Ad esempio, guarda il codice VBA sottostante.

Codice1:

Sub Procedure1 () Dim k As Integer k = 50 Procedure2 k MsgBox k End Sub

Codice2:

Sub Procedura2 (ByRef k As Integer) k = k + 10 End Sub

Nella prima procedura, ho dichiarato la variabile "k" come Integer.

Quindi ho assegnato il valore a questa variabile come 50.

Successivamente, ho aggiunto una nuova riga, ad es

Procedura2 k

Questo è il secondo nome della procedura. In questa procedura, ho dichiarato la variabile tra parentesi come String in VBA, ma ho usato la parola "ByRef".

ByRef k As Integer

Qui ho assegnato il valore della variabile “k” as

k = k + 10

Ok, ora eseguirò il codice passo dopo passo premendo il tasto F8.

Premere altre due volte il tasto F8 e posizionare un cursore sulla variabile "k" per vedere il valore della variabile "k".

Poiché abbiamo assegnato il valore come 50, mostra il valore come 50. Ora ha evidenziato la riga Procedura2 k, che è il secondo nome della procedura.

Se premo ora il tasto F8, salterà fuori dalla procedura corrente e passerà alla seconda procedura.

Ora poiché abbiamo usato la parola ByRef, ha portato il valore della variabile "k" dalla procedura precedente.

Premere due volte il tasto F8. Tornerà alla sottoprocedura precedente. Se noti nella seconda procedura, ho applicato la formula come k = k + 10. cioè, il valore "k" è 50 quindi aggiunge 10 in più a quello, cioè 60 in totale.

Ora il codice è in esecuzione nella prima procedura, e in questa procedura, il valore della variabile "k" è 50. Ma premere il tasto F8 e vedere il risultato in una finestra di messaggio.

Abbiamo ottenuto il risultato come 60 invece del valore predefinito di 50 in questa procedura.

Il motivo per cui abbiamo ottenuto 60 perché, nella seconda procedura, abbiamo applicato "ByRef" quindi ha portato il risultato dell'equazione (k = k + 10) alla procedura corrente.

Qui il valore della prima variabile "k" è 50, e nella seconda procedura il valore della variabile "k" è k + 10, cioè 60, che viene portato alla prima procedura.

Nella prima procedura il valore originale della variabile "k" era 50, quindi By Ref ha modificato il valore originale da 50 a 60 eseguendo l'equazione k = k + 10, ovvero k = 50 +10 = 60.

Esempio n. 2

Ora dai un'occhiata a un altro esempio.

Codice 1:

Sub P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber viene modificato dalla procedura Change_ByRef MsgBox "My Number is now:" & MyNumber End Sub


Codice 2:

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

Funziona esattamente come il codice precedente.

Inizialmente, il valore della variabile "MyNumber" è 1. Quindi chiamiamo la procedura seguente con il suo nome

Chiama Change_ByRef (MyNumber)

In quella procedura, il valore della variabile è 14.

Quindi, quando torna alla procedura precedente, assegnerà il nuovo valore alla variabile come 14.

Articoli interessanti...