È possibile passare argomenti a una procedura (funzione o sub) per riferimento o per valore. Per impostazione predefinita, Excel VBA passa gli argomenti per riferimento. Come sempre, useremo un esempio semplice per rendere le cose più chiare.

Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:

Dim x As Integer

x = 10

MsgBox Triple(x)

MsgBox x

Il codice chiama la funzione Triple. E ‘il risultato della seconda MsgBox che ci interessa. Le funzioni devono essere collocati in un modulo.

  1. Aprire l’editor di Visual Basic e fare clic su Inserisci, Modulo.

  2. Aggiungere le seguenti righe di codice:

Function Triple(ByRef x As Integer) As Integer

x = x  3

Triple = x

End Function

Risultato quando si fa clic sul pulsante di comando sul foglio:

ByRef Result

ByRef Result

  1. Sostituire ByRef con ByVal.

Function Triple(ByVal x As Integer) As Integer

x = x  3

Triple = x

End Function

Risultato quando si fa clic sul pulsante di comando sul foglio:

ByVal Result

ByVal Result

Spiegazione: Quando il passaggio di argomenti per riferimento stiamo riferimento al valore originale. Il valore di x (valore iniziale) viene modificato nella funzione. Come risultato il secondo MsgBox visualizza un valore di 30. Quando passaggio di argomenti per valore stiamo passando una copia alla funzione. Il valore originario non viene modificato. Come risultato il secondo MsgBox visualizza un valore di 10 (il valore originale).