fbpx
.st0{fill:#FFFFFF;}

Excel Esperto, Macro e VBA

VBA Excel: riferimento agli oggetti VBA

 Dicembre 6, 2019

By  Damiano Causale

  • Home
  • VBA Excel: riferimento agli oggetti VBA

In questo articolo ti illustro come è possibile iniziare a fare riferimento agli oggetti in VBA con il linguaggio VBA Excel. Scopri come far riferimento agli oggetti VBA Excel.

Introduzione ai riferimenti agli oggetti VBA

Come è possibile far riferimento a un oggetto in VBA?

Sapere come fare riferimento agli oggetti durante la scrittura del codice VBA è essenziale!

Questo perché, se vuoi lavorare con un particolare oggetto in VBA, devi prima identificarlo.

È possibile identificare gli oggetti in due modi.

  • Riferimento completamente qualificato
  • Riferimento semplificato

VBA Excel: riferimenti completamente qualificati e collegamenti di oggetti VBA

Iniziamo dando un’occhiata a come fare riferimento a un oggetto passando attraverso l’intera gerarchia di oggetti VBA Excel. Questo è noto come riferimento completo in quanto si comunica a Excel esattamente con quale oggetto VBA si vuol lavorare facendo riferimento a tutti i suoi oggetti “genitori” (in inglese parent).

Di solito è possibile semplificare i riferimenti completi. Tuttavia, prima è importante imparare a conoscere come funzionano i riferimenti completi.

I riferimenti completi sono la base dei riferimenti agli oggetti VBA e, in pratica, li userai la maggior parte del tempo. Inoltre, sono utili per capire meglio il codice VBA contenuto nelle tue macro Excel.

L’oggetto che si trova al vertice della gerarchia degli oggetti VBA Excel è l’oggetto Application.

Fare riferimento a questo oggetto è molto semplice.

Nell’Editor VB, si fa riferimento ad esso digitando il seguente codice:

excel vba | oggetto application

Da quel momento in poi, è necessario iniziare a spostarsi lungo la gerarchia utilizzando l’operatore punto (.).

In altre parole, puoi collegare ogni oggetto VBA a quello precedente (l’oggetto principale) usando un punto (.).

I punti (.) vengono utilizzati per collegare e fare riferimento ai membri del modello di oggetti VBA di Exceldall’alto verso il basso“.

Passiamo alla pratica.

Riprendiamo l’esempio della gerarchia di oggetti VBA di Excel.

Supponiamo di voler fare riferimento a un oggetto Range.

Come mostrato nell’immagine, questo oggetto si trova nella parte inferiore della gerarchia utilizzata nell’esempio. Ci sono 2 oggetti VBA e 3 passaggi tra l’oggetto Application e l’oggetto Range.

gerarchia modello a oggetti visual basic for application

 

Ora sai come connettere i diversi oggetti tra loro. Semplicemente utilizzando con un punto (.).

Pertanto puoi fare riferimento a un oggetto Range usando la seguente struttura di base:

macro di excel | linguaggio vba

Possiamo rappresentare graficamente quanto appena spiegato.

gerarchia oggetti visual basic excel

Facile, non ti pare?

Questo è, tuttavia, solo un esempio generale. Noterai che questa struttura di base NON sta identificando un singolo oggetto VBA. È infatti necessario fare riferimento ad un oggetto particolare all’interno di una collezione. Ecco un esempio:

vba excel macro | codici vba | riferimento completo oggetti vba

VBA Excel: come fare riferimento ad un oggetto VBA di una collezione

Il più delle volte, lavorerai con un particolare oggetto VBA di una collezione.

Nota che puoi anche lavorare con una collezione nel suo insieme. In effetti, la capacità di farlo è uno dei vantaggi delle collezioni.

Tuttavia, ora concentriamoci su come fare riferimento a un oggetto di una collezione.

Abbiamo a disposizione le seguenti opzioni:

  1. Utilizzare il nome dell’oggetto VBA
  2. Utilizzare un numero indice

1 | Utilizzare il nome dell’oggetto VBA

In questo caso, la sintassi che è necessario utilizzare per fare riferimento a un oggetto è la seguente:

excel visual basic | sintassi riferimento oggetto vba

NOTA
nota

Non dimenticare le virgolette quando utilizzi questo metodo di riferimento agli oggetti VBA.

Se non inserisci le virgolette, Excel capisce che il nome dell’oggetto VBA è un nome di variabile.

Pertanto, non sarà in grado di identificare l’oggetto che desideri.

 

 

Ad esempio, se stai lavorando con una cartella di lavoro di Excel che contiene tre fogli di lavoro e vuoi lavorare con il Foglio1, puoi utilizzare uno dei seguenti metodi:

programmare con excel | riferimento foglio di lavoro in vba

o in alternativa …

programmare excel | riferimento foglio di lavoro in vba

2 | Utilizzare un numero indice

Se scegli di utilizzare questa opzione, per far riferimento a un oggetto VBA, la sintassi da utilizzare è la seguente:

creare macro excel | linguaggio vba

Questa struttura è sostanzialmente la stessa di quella precedente con due differenze:

  1. Invece di usare il nome dell’oggetto VBA, ci si riferisce ad esso usando il suo numero di indice.
  2. Non si usano le virgolette all’interno delle parentesi, solo un numero.

Riprendendo l’esempio precedente, per lavorare con il Foglio1, puoi utilizzare una delle due seguenti opzioni:

creare macro excel | linguaggio vba

o in alternativa …

creare macro excel | linguaggio vba

Ora che sai come fare riferimento a un singolo oggetto VBA all’interno di una collezione, torniamo al riferimento completo utilizzato in precedenza:

macro di excel | linguaggio vba

Supponiamo ora che l’oggetto con cui vogliamo lavorare sia la cella A1 del foglio di lavoro Foglio1 all’interno della cartella di lavoro chiamata Cartel1. Come possiamo scrivere il riferimento completo in questo caso?

Vediamo i due casi.

Se utilizzi il nome dell’oggetto per fare riferimento a ciascuno dei singoli oggetti VBA, il riferimento completo per questa cella è il seguente:

vba excel | creare macro excel

In alternativa, se utilizzi il numero indice, il riferimento completo è il seguente:

vba excel | creare macro excel

Come puoi ben immaginare, se dovessi fare riferimento a ogni singolo oggetto usando un riferimento completo, il tuo codice VBA diventerebbe piuttosto lungo molto rapidamente. Dal punto di vista della digitazione, questo potrebbe risultare un po’ fastidioso. Inoltre, e forse ancora più importante, questi lunghissimi pezzi di codice VBA possono risultare difficili da leggere.

Esistono alcuni modi con cui è possibile semplificare i riferimenti agli oggetti, rendendo il codice VBA molto più breve.

Diamo un’occhiata ad alcuni di questi metodi.

VBA Excel: semplificare i riferimenti agli oggetti

La possibilità di semplificare un riferimento a un oggetto VBA presenta diversi vantaggi. I vantaggi principali son due:

  • puoi abbreviare il tuo codice VBA
  • il tuo codice è più facile da leggere

Il motivo principale per cui è possibile semplificare i riferimenti agli oggetti completi è che il modello di oggetti VBA di Excel ha alcuni oggetti predefiniti.

Infatti, Excel, a meno che non si immetta qualcosa di diverso, fa riferimento per impostazione predefinita a questi oggetti predefiniti.

Diamo ora un’occhiata ai metodi che è possibile utilizzare per semplificare i riferimenti agli oggetti completi.

1 | Oggetto Application

L’oggetto VBA predefinito principale è l’oggetto Application. Excel assume come predefinito questo oggetto a prescindere da dove si trova effettivamente il tuo codice VBA.

Quando crei le macro, si presume che lavorerai con Excel. In altre parole, Excel presume che tu stia lavorando con l’oggetto Application. Pertanto, come ci si può aspettare, in genere si può omettere questo oggetto VBA di Excel dai riferimenti dell’oggetto. Specificare l’oggetto Application ha senso solo in alcuni casi.

Ora il codice precedentemente utilizzato nel nostro esempio diventa così:

macro excel vba

2 | Cartella di lavoro e foglio di lavoro attivi

Il secondo gruppo di oggetti predefiniti che è possibile utilizzare per semplificare i riferimenti agli oggetti completi si applica quando si lavora all’interno di un modulo standard. All’interno dell’Editor VB, in genere è possibile trovare i moduli standard nella finestra del progetto sotto Moduli.

In questi casi, oltre a presupporre che si sta lavorando con l’oggetto Application, Excel presume che si stia lavorando con la cartella di lavoro attiva.

Pertanto, la cartella di lavoro Excel su cui si desidera lavorare è la cartella di lavoro attiva, è possibile omettere quella parte del riferimento all’oggetto VBA. Continuando con l’esempio precedente, il nostro codice può essere abbreviato come segue:

macro vba excel

Infine, se sei sicuro che il foglio di lavoro di Excel con cui vuoi lavorare è il foglio di lavoro attivo corrente, puoi anche omettere quella parte del riferimento all’oggetto VBA. La dichiarazione può quindi essere abbreviata ulteriormente:

macro per excel | vba excel

VBA Excel: i pericoli della semplificazione

Sulla base di quanto appena illustrato ne derivano alcune considerazioni.

vba excel

In particolare, il secondo metodo di semplificazione descritto in precedenza si basa sull’identificazione corretta della cartella di lavoro attiva e del foglio di lavoro attivo. Se commetti un errore, ad esempio, pensando che il Foglio di lavoro attivo sia il Foglio1 quando in realtà è il Foglio2, dovrai affrontare dei problemi.

I problemi più probabili che incontrerai in questi casi sono che Excel:

  • restituisce un messaggio di errore.
  • restituisce un risultato errato.
  • esegue un’azione errata che non è possibile annullare.

Un altro possibile svantaggio della semplificazione dei riferimenti agli oggetti completi è legato alla velocità di esecuzione. Ciò accade, ad esempio, se stai lavorando con una particolare macro che funziona con diversi fogli di lavoro di Excel. In tal caso, devi passare attraverso tutti loro per attivarli. Inutile dire che non è molto efficiente.

Considerando quanto detto sopra, assicurati di utilizzare questi metodi di semplificazione solo quando è appropriato. Cosa ancora più importante, ricorda che non devi semplificare i riferimenti pienamente qualificati in ogni momento. Infatti, spesso è meglio qualificare pienamente i riferimenti agli oggetti VBA.

Alcuni esperti di Excel, sostengono di NON poter fare a meno di utilizzare alcuni degli oggetti VBA predefiniti tranne alcune eccezioni. Una delle principali eccezioni, fa riferimento all’oggetto predefinito Application. Questo particolare oggetto VBA è raramente incluso nel codice VBA, anche se ci sono alcuni casi in cui è necessario fare riferimento all’applicazione.

In altre parole, avere una profonda conoscenza del modello di oggetti VBA di Excel e l’utilizzo di riferimenti completi ha due vantaggi principali:

  • Affidabilità
  • Precisione

Un’alternativa ai riferimenti pienamente qualificanti o alla loro semplificazione, è l’uso dell’istruzione With … End With. Questa istruzione semplifica la sintassi delle tue macro eseguendo diverse istruzioni che fanno riferimento allo stesso oggetto VBA.

Allo stesso tempo, grazie alla sua struttura, questa istruzione ti permette di mantenere i riferimenti agli oggetti completamente qualificati.

Osserviamo un semplice esempio con l’utilizzo dell’istruzione With … End With.

macro in excel | vba excel esempi

istruzione with end with | macro vba

Oltre ai pericoli dell’utilizzo di questa semplificazione, precedentemente illustrati, c’è un ulteriore aspetto da considerare.

I due presupposti che ho elencato nel secondo metodo di semplificazione sono validi solo finché ci si trova in un modulo standard.

vba | modulo standard

Pertanto, è necessario evitare di basarsi su questi presupposti quando si lavora in un altro tipo di modulo.

vba excel | modulo thisworkbook

Ad esempio, se si sta lavorando nel modulo ThisWorkbook e si omette il riferimento all’oggetto Workbook, Excel presuppone che vuoi fare riferimento alla cartella di lavoro di Excel in cui si trova il codice.

vba | modulo di foglio

Se ti trovi all’interno di un modulo di foglio, ad esempio il modulo Foglio1 e nel tuo codice non fai riferimento a un foglio specifico, il valore predefinito per Excel è il foglio che contiene il codice VBA.

Conclusioni

Conoscere il modello a oggetti VBA di Excel è essenziale ed estremamente importante. Non puoi ignorare questo argomento se desideri scrivere delle macro con Excel.

A causa della complessità e dell’estensione, il modello a oggetti VBA di Excel non è l’argomento più semplice da comprendere. Tuttavia, con un po’ di pratica e di studio, potrai padroneggiare l’argomento. Questo ti pone sulla buona strada per creare potenti macro Excel che ti consentiranno di aumentare la tua produttività e l’efficienza quando lavori con Excel e il VBA.

Ora, se sei hai letto questo articolo e quello precedente, non solo sai cosa è il modello a oggetti VBA di Excel, ma sei in grado di iniziare a creare riferimenti a oggetti in VBA.

Questa capacità di creare riferimenti agli oggetti VBA è ciò che consente di dire a Excel con quale oggetto si desidera lavorare e manipolare. Questa è un’abilità essenziale che ora potrai aggiungere alla tua cassetta degli strumenti di Excel.

Damiano Causale


Mi chiamo Damiano Causale, istruttore Microsoft certificato, per lavoro aiuto aziende e privati nell'utilizzo di Excel.

Damiano Causale

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}