Ambito variabile VBA di Excel

Sommario:

Anonim

In tutti i linguaggi di programmazione, abbiamo identificatori di accesso alle variabili che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha identificatori di ambito. Questi identificatori di ambito possono essere utilizzati per impostare la visibilità/l'ambito di una variabile in Excel VBA.

In Excel VBA, abbiamo tre tipi di identificatori di ambito:

  1. Livello di procedura
  2. Privato - Livello modulo
  3. Pubblico - Livello di progetto

Ambito variabile livello procedura VBA

Le variabili che sono dichiarate all'interno di una subroutine, sono accessibili solo in quella procedura/funzione. Hanno un ambito a livello di procedura. Di solito sono dichiarati con la parola chiave Dim. Se il modulo è un'opzione implicita, allora la variabile potrebbe non essere stata dichiarata, ma semplicemente utilizzata direttamente.

Nell'esempio seguente, abbiamo un test dell'ambito della subroutine che ha variabili x e y. Quando eseguiamo la prima subroutine, questa funziona perfettamente e stampa la somma di X e Y

Opzione Explicit Sub scopeTest() Dim x, y come numero intero ' Variabile a livello di procedura in VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum() x = 5 y = 7 Debug.Print x + y End Sub

Ma quando esegui la somma della subroutine, genera un errore che la variabile non è dichiarata. Come mai? Poiché X e Y sono privati ​​della procedura scopeTest e la somma della subroutine non ha accesso ad essi. Quindi il sub si imbatte in un errore.

Variabile privata VBA - Ambito a livello di modulo

Quando vuoi dichiarare una variabile a cui è necessario accedere nell'intero modulo, allora dichiari quella variabile come privata nella parte superiore del modulo, prima di qualsiasi subroutine o funzione.

Le variabili dichiarate prima di ogni subroutine, nel modulo, sono di default Private. Anche se li dichiari con la parola chiave Dim. Ma per essere precisi, è consigliabile utilizzare la parola chiave Private.

Le due procedure seguenti sono nello stesso modulo, modulo 1.

Opzione esplicita 'Variabile a livello di modulo in VBA. Entrambe le variabili x e y sono private per questo modulo. e' possibile accedere da qualsiasi sub o funzione all'interno di questo modulo. Dim x As Integer Privato y As Integer Sub scopeTest() 'È possibile accedervi da qualsiasi modulo nel progetto x = 2 y = 3 Debug.Print x + y End Sub Sottosomma privata() ' Non è possibile accedervi da altri moduli x = 5 y = 7 Debug.Print x + y End Sub 

Le due funzioni precedenti funzioneranno perfettamente poiché le variabili x e y sono le variabili private di questo modulo.

Importante: Gli ultimi valori memorizzati in x e y vengono mantenuti fino all'intero modulo. Se eseguiamo prima il sub scopeTest e non inizializziamo i valori di xey in subsum e lo eseguiamo, il valore iniziale di xey rimarrà invariato.

La subroutine seguente è definita in un modulo separato, il modulo 2. Quando provo ad accedere alla variabile da un altro modulo, la procedura (o funzione) VBA si imbatte in un errore.

Ma se provo a chiamare la subroutine somma dal modulo 1 al modulo 2, funziona perfettamente. Per rendere la tua funzione e le tue subroutine private per il modulo, usa la parola chiave Private prima di sub e function.

Nota:- Le variabili dichiarate prima di qualsiasi subroutine o funzione, in un modulo sono private per il modulo per impostazione predefinita. Puoi usare il Privatoparola chiave. Ma le funzioni e le subroutine sono pubbliche per impostazione predefinita e sono accessibili da qualsiasi modulo in un progetto. Per rendere private le funzioni e le subroutine del modulo è necessario utilizzare la parola chiave Private.

Variabili pubbliche - Ambito a livello di progetto

Come abbiamo appreso negli esempi precedenti, la funzione e le subroutine sono pubbliche per impostazione predefinita e sono accessibili da qualsiasi modulo, ma non le variabili. Per rendere accessibile una variabile da qualsiasi modulo in Excel VBA,usiamo la parola chiave pubblica.

Per dichiarare una variabile pubblica in un progetto, le hai dichiarate nella parte superiore del modulo, prima di qualsiasi funzione o subroutine con la parola chiave public. Il codice seguente è scritto nel modulo 1.

Opzione esplicita 'Variabile a livello di progetto in VBA. Pubblico x come intero Pubblico y come intero Public Sub scopeTest() 'Accessibile da qualsiasi modulo del progetto x = 2 y = 3 End Sub Private Sub sum() 'Non accessibile da altri moduli x = 5 y = 7 Debug.Print x + y End Sub

E questa subroutine è in un altro modulo, il modulo 2.

Option Explicit Sub mul() Call scopeTest 'Call sum ' non funzionerà in quanto privato del modulo 1 Debug.Print x * y End Sub 

Questa volta funziona perfettamente.
Per prima cosa ho chiamato la subroutine scopeTest. Poiché scopeTest è pubblico, viene chiamato. Inizializza i valori di x e y. Successivamente, moltiplichiamo x e y. Poiché la subroutine scopeTest l'ha inizializzata con i valori 2 e 3, il risultato che otteniamo è 6.

Quindi sì ragazzi, ecco come è possibile utilizzare gli identificatori di ambito variabile in Excel per controllare la visibilità di variabili, funzioni e subroutine nei progetti VBA di Excel.

Ho provato a spiegare gli identificatori di accesso di VBA nel modo più semplice possibile. Spero di essere stato esplicativo. Se hai dei dubbi su questo articolo o su qualsiasi altro dubbio relativo a VBA, chiedimi nella sezione commenti qui sotto. Sarò felice di qui da voi.

ByRef e ByRef Arguments |Quando un argomento viene passato come argomento ByRef a un sub o a una funzione diversa, viene inviato il riferimento della variabile effettiva. Qualsiasi modifica apportata alla copia della variabile si rifletterà nell'argomento originale.

Elimina fogli senza richieste di conferma utilizzando VBA in Microsoft Excel|Poiché stai eliminando fogli utilizzando VBA, sai cosa stai facendo. Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.

Aggiungi e salva nuova cartella di lavoro utilizzando VBA In Microsoft Excel 2016|In questo codice, abbiamo prima creato un riferimento a un oggetto cartella di lavoro. E poi lo abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che puoi eseguire facilmente le operazioni su questa nuova cartella di lavoro. Come salvare, chiudere, eliminare, ecc

Visualizza un messaggio sulla barra di stato VBA di Excel La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il tuo codice VBA è lungo e svolgi diverse attività utilizzando VBA, spesso disabiliti l'aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo

Disattiva i messaggi di avviso utilizzando VBA in Microsoft Excel 2016|Questo codice non solo disabilita gli avvisi VBA, ma aumenta anche l'efficienza temporale del codice. Vediamo come.

Articoli popolari:

50 scorciatoie di Excel per aumentare la produttività | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.

La funzione CERCA.VERT in Excel | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare il valore da diversi intervalli e fogli.

CONTA.SE in Excel 2016 | Conta i valori con le condizioni usando questa fantastica funzione. Non è necessario filtrare i dati per contare un valore specifico. La funzione Countif è essenziale per preparare la tua dashboard.

Come utilizzare la funzione SOMMA.SE in Excel | Questa è un'altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.