Che cos'è ByRef in VBA?

Byref in VBA sta per "Per riferimento". Con l'aiuto di VBA Byref, possiamo scegliere come target il valore originale senza modificare il valore memorizzato nelle variabili. In altre parole, passeremo direttamente il valore alle procedure Sub invece di passare attraverso i metodi regolari di definizione e assegnazione dei valori alle variabili.

In VBA ByRef, definiamo la sotto-procedura dopo aver impostato la regola per ByRef. Questo potrebbe essere fatto sotto la sotto-procedura in cui vogliamo scrivere il codice. In ByRef, ridefiniamo la variabile utilizzata nella procedura secondaria. E funziona correttamente solo quando chiamiamo la condizione ByRef nella nostra sottoprocedura.

Come utilizzare la funzione ByRef in Excel VBA?

Di seguito sono riportati i diversi esempi per utilizzare la funzione ByRef in Excel utilizzando il codice VBA.

Puoi scaricare questo modello Excel VBA ByRef qui - Modello Excel VBA ByRef

Excel VBA ByRef - Esempio n. 1

Innanzitutto, impariamo come inserire un ByRef in VBA, per questo seguire i passaggi seguenti. In questo esempio, vedremo come utilizzare VBA ByRef per un semplice lavoro di sottrazione matematica. Per questo, avremmo bisogno di un modulo.

Passo 1: Quindi, vai su VBA e apri un modulo dall'opzione di menu Inserisci come mostrato di seguito.

Passaggio 2: nel modulo appena aperto, scrivere la sottocategoria di VBA ByRef come mostrato di seguito.

Codice:

 Sottotitolo VBA_ByRef1 () End Sub 

Passaggio 3: ora definisci una variabile diciamo che è una A come numero intero.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A come numero intero finale 

Passaggio 4: assegnare qualsiasi numero alla variabile A. Lascia che quel numero sia 1000.

Codice:

 Sottotitoli VBA_ByRef1 () Dim A come intero A = 1000 End Sub 

Passaggio 5: per stampare il valore memorizzato nella variabile A, utilizzare Msgbox.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A come intero A = 1000 MsgBox A Sottotitolo secondario 

Passaggio 6: ora compiliamo ed eseguiamo questo codice facendo clic sul pulsante Riproduci come mostrato di seguito. Otterremo una finestra di messaggio con il valore memorizzato nella variabile A come 1000 .

Ora applica VBA ByRef, crea un'altra sottocategoria sotto la prima e assegna la variabile definita dalla prima sottocategoria con ByRef.

Passaggio 7: in questo modo consentiremo alla seconda sottocategoria di utilizzare i valori memorizzati nella variabile A.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A come intero A = 1000 MsgBox A End Sottotitolo secondario VBA_ByRef2 (ByRef A come numero intero) Sottotitolo 

Passaggio 8: Ora chiama di nuovo la variabile A e sottrai qualsiasi valore dalla variabile A, per ottenere il valore di output nella stessa variabile. Sottraggiamo 100 dal valore della variabile A in modo da ottenere un numero misurabile.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A come intero A = 1000 MsgBox A End Sottotitolo secondario VBA_ByRef2 (ByRef A come numero intero) A = A - 100 Sottotitolo finale 

Passaggio 9: Ora se compiliamo ogni passaggio del codice, noteremo che quando il cursore ha raggiunto la variabile A, vedremo che ha solo 0 memorizzati in esso.

Passaggio 10: quando il cursore ha raggiunto End Sub, l'output verrà visualizzato come 1000 nella finestra di messaggio.

Passaggio 11: è perché non abbiamo assegnato ByRef alla prima sottocategoria. Ora assegneremo il nome della sottocategoria prima della funzione della finestra di messaggio della prima sottocategoria e vedremo cosa accadrà.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A come intero A = 1000 VBA_ByRef2 A MsgBox A End Sottotitolo VBA_ByRef2 (ByRef A come numero intero) A = A - 100 Sottotitolo finale 

Step 12: E ora, esegui di nuovo il codice completo. Vedremo, il secondo valore che è memorizzato nella variabile A come 100 è stato sottratto dal primo valore 1000. Di conseguenza, abbiamo ottenuto il messaggio di output come 900.

Passaggio 13: questo è il vantaggio principale dell'utilizzo di ByRef. Non è necessario definire più variabili per un singolo lavoro. È sufficiente una sola variabile per eseguire l'intera attività in diversi modi. Possiamo usare più di un ByRef in un singolo modulo.

Per giustificare ciò che abbiamo capito, aggiungiamo un altro ByRef nello stesso modulo.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A come numero intero A = 1000 VBA_ByRef2 A MsgBox A End Sottotitolo VBA_ByRef2 (ByRef A come numero intero) A = A - 100 Terminato Sottotitolo VBA_ByRef3 (ByRef A come numero intero) Sottotitolo 

Passaggio 14: in questa sottocategoria, utilizziamo la moltiplicazione.

Codice:

 Sottotitolo VBA_ByRef1 () Dim A As Intero A = 1000 VBA_ByRef2 A MsgBox A End Sottotitolo VBA_ByRef2 (ByRef A As Intero) A = A - 100 Fine Sottotitolo VBA_ByRef3 (ByRef A Come intero) A = A * 2 Sottotitolo 

Passaggio 15: compilare nuovamente ed eseguire nuovamente il codice. Vedremo quel valore ottenuto dai passaggi precedenti poiché 900 viene ora moltiplicato per 2 per ottenere 1800 come output.

Excel VBA ByRef - Esempio n. 2

In questo esempio, vedremo come ByRef funziona con altri tipi di numeri interi.

Passaggio 1: aprire un modulo e scrivere la sottocategoria come mostrato di seguito.

Codice:

 Sottotitolo VBA_ByRef4 () End Sub 

Passaggio 2: ora definire una variabile A come doppia. Questo ci permetterà di usare valori decimali.

Codice:

 Sottotitoli VBA_ByRef4 () Dim A As Double End 

Passaggio 3: assegnare qualsiasi valore decimale alla variabile A.

Codice:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 End Sub 

Passaggio 4: utilizzare nuovamente la finestra di messaggio per visualizzare il valore memorizzato nella variabile A.

Codice:

 Sottotitoli VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub 

Ora se eseguiamo il codice, otterremmo 1, 23 come output.

Passaggio 5: In un modo diverso, useremo Function per definire ByRef come Double con la variabile A.

Codice:

 Sottotitolo VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sottofunzione AddTwo (ByRef A As Double) Come Double End Function 

Passaggio 6: ora aggiungi qualsiasi numero alla variabile A. Supponiamo che sia 10.

Codice:

 Sottotitolo VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Passaggio 7: utilizzare nuovamente questa funzione ByRef definita nella prima sottocategoria. Qui vedremo due finestre di messaggio, una per la variabile A e l'altra per ByRef.

Codice:

 Sottotitoli VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Passaggio 8: lo stesso si rifletterà anche nella finestra di messaggio.

Step 9: E nella prossima esecuzione fornirà il valore aggiunto di 10 nel valore della variabile originale di 1, 23 come mostrato di seguito.

Ecco come VBA Byref prende il riferimento del valore definito una volta e quindi popola l'output secondo la nuova condizione.

Pro e contro di VBA ByRef

  • Quando si scrivono grandi codici, si risparmia molto tempo considerando la variabile già definita, in modo che il suo valore possa essere utilizzato ancora e ancora.
  • Non dobbiamo definire molte variabili secondo la formula che vogliamo applicare.
  • Possiamo applicare molte condizioni ByRef in un singolo modulo senza disturbare il processo.
  • Non possiamo usare VBA Byref in una struttura di codice complessa.

Cose da ricordare

  • Quando si considerano più condizioni ByRef, l'output si baserà sull'ultima procedura secondaria ByRef definita, ma considera anche tutte le condizioni ByRef utilizzate in precedenza.
  • L'output finale avrà un output elaborato sequenziale. Non solo l'ultimo.
  • Questo processo non può essere eseguito registrando la macro.
  • Possiamo vedere il valore memorizzato in ogni fase della variabile compilando il codice.
  • Una volta fatto, salva il file Excel come formato Excel abilitato per Macro, in modo da non perdere il codice in futuro.

Articoli consigliati

Questa è una guida a VBA ByRef. Qui discutiamo come usare la funzione ByRef in Excel usando il codice VBA insieme ad esempi pratici e template Excel scaricabili. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Guida alla funzione VBA UBound
  2. OFFSET Funzione Excel (esempio, usi)
  3. Crea collegamento ipertestuale in Excel VBA
  4. Come utilizzare la maniglia di riempimento Excel?

Categoria: