Comprendere il Modello a Oggetti di Excel
Scorri per mostrare il menu
Ogni singola riga di VBA che scriverai in Excel è una frase sugli oggetti: qualcosa esiste (un Application, un Workbook, un Worksheet, un Range) e si legge una delle sue proprietà oppure si richiede l'esecuzione di uno dei suoi metodi. Una volta compresa questa gerarchia, il resto del linguaggio è principalmente vocabolario.
Lettura della gerarchia
- Application — l'intera istanza in esecuzione di Excel; il vertice di ogni gerarchia;
- Workbooks — la raccolta di tutti i file aperti; uno singolo è un Workbook, ad esempio
Section_1_VBA_Intro.xlsm; - Worksheets — la raccolta delle schede all'interno di un workbook; una singola è un Worksheet, ad esempio "Employees";
- Range — una cella, un blocco di celle, un'intera riga o un'intera colonna;
- Cells / Value — i dati effettivi presenti all'interno di un Range.
Raramente è necessario digitare l'intera catena da Application in giù — VBA presume che tu intenda il workbook e il foglio attivi a meno che tu non dica diversamente — ma nominare esplicitamente gli oggetti è ciò che distingue il codice fragile da quello affidabile. Confronta questi due modi di scrivere la stessa istruzione:
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
La seconda versione continuerà a funzionare anche se l'utente ha altri tre file di lavoro aperti e un foglio diverso selezionato — un'abitudine che diventa fondamentale quando le macro iniziano a superare poche righe. Utilizzerai ThisWorkbook.Worksheets("SheetName") in questo modo costantemente per il resto del corso.
Navigazione delle relazioni tra oggetti nella Finestra Immediata
La Finestra Immediata (Visualizza → Finestra Immediata oppure Ctrl+G all'interno del VBE; ^ ⌘ G su Mac) consente di testare una singola riga di codice senza inserirla in una Sub.


Digita una riga che inizi con un punto interrogativo e premi Invio per vedere immediatamente il risultato. Prova questi comandi su Section_1_VBA_Intro.xlsm:
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
La terza riga introduce CurrentRegion, una proprietà che si espande da una singola cella all'intero blocco contiguo di dati circostante.
Attività
- Nella Finestra Immediata, scrivere una riga che stampi la Posizione di
Olivia Brown(riga 4) senza selezionare prima la cella — fare riferimento direttamente tramite la gerarchia degli oggetti. - Scrivere una seconda riga che stampi quante righe ci sono nella tabella Employees utilizzando
CurrentRegion.Rows.Count.
Fare riferimento come ThisWorkbook.Worksheets("Employees").Range("D4").Value — la riga 4 è Olivia Brown, la colonna D è Position.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Comprendere il Modello a Oggetti di Excel
Ogni singola riga di VBA che scriverai in Excel è una frase sugli oggetti: qualcosa esiste (un Application, un Workbook, un Worksheet, un Range) e si legge una delle sue proprietà oppure si richiede l'esecuzione di uno dei suoi metodi. Una volta compresa questa gerarchia, il resto del linguaggio è principalmente vocabolario.
Lettura della gerarchia
- Application — l'intera istanza in esecuzione di Excel; il vertice di ogni gerarchia;
- Workbooks — la raccolta di tutti i file aperti; uno singolo è un Workbook, ad esempio
Section_1_VBA_Intro.xlsm; - Worksheets — la raccolta delle schede all'interno di un workbook; una singola è un Worksheet, ad esempio "Employees";
- Range — una cella, un blocco di celle, un'intera riga o un'intera colonna;
- Cells / Value — i dati effettivi presenti all'interno di un Range.
Raramente è necessario digitare l'intera catena da Application in giù — VBA presume che tu intenda il workbook e il foglio attivi a meno che tu non dica diversamente — ma nominare esplicitamente gli oggetti è ciò che distingue il codice fragile da quello affidabile. Confronta questi due modi di scrivere la stessa istruzione:
' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000
La seconda versione continuerà a funzionare anche se l'utente ha altri tre file di lavoro aperti e un foglio diverso selezionato — un'abitudine che diventa fondamentale quando le macro iniziano a superare poche righe. Utilizzerai ThisWorkbook.Worksheets("SheetName") in questo modo costantemente per il resto del corso.
Navigazione delle relazioni tra oggetti nella Finestra Immediata
La Finestra Immediata (Visualizza → Finestra Immediata oppure Ctrl+G all'interno del VBE; ^ ⌘ G su Mac) consente di testare una singola riga di codice senza inserirla in una Sub.


Digita una riga che inizi con un punto interrogativo e premi Invio per vedere immediatamente il risultato. Prova questi comandi su Section_1_VBA_Intro.xlsm:
?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count
La terza riga introduce CurrentRegion, una proprietà che si espande da una singola cella all'intero blocco contiguo di dati circostante.
Attività
- Nella Finestra Immediata, scrivere una riga che stampi la Posizione di
Olivia Brown(riga 4) senza selezionare prima la cella — fare riferimento direttamente tramite la gerarchia degli oggetti. - Scrivere una seconda riga che stampi quante righe ci sono nella tabella Employees utilizzando
CurrentRegion.Rows.Count.
Fare riferimento come ThisWorkbook.Worksheets("Employees").Range("D4").Value — la riga 4 è Olivia Brown, la colonna D è Position.
Grazie per i tuoi commenti!