Ciao a tutti e benvenuti sul sito Excel Espresso, oggi vedremo alcuni metodi su come selezionare le celle o un intervallo sfruttando il codice VBA.
Vi chiedo di scaricare il file d’esempio che trovate in questo link: Le tabelline questo file vi servirà come base di partenza per creare la macro.
Prima di vedere quali sono i comandi che ci permettono di selezionare una cella o più celle iniziamo facendo un elenco dei vari oggetti che tratteremo perché è importante sapere che nel foglio di Excel c’è una gerarchia, partiamo dal più piccolo per arrivare alla cartella di lavoro.
L’oggetto Cells rappresenta la singola cella e viene contraddistinto dal numero di riga e colonna.
L’oggetto Range può rappresentare una singola cella, un intervallo di celle, una riga o una colonna.
Worksheet rappresenta il foglio di lavoro che comprende gli oggetti Range e Cells
Workbook rappresenta la cartella di lavoro di Excel che ovviamente comprende tutti gli oggetti visti prima
Nell’area di sviluppo ho già creato una nuova macro che ho chiamato SELEZIONE, in cui ci sono tutti gli oggetti precedentemente elencati.
Partiamo col comando Cells, se volessimo selezionare la cella B5 tramite il comando CELLS dovremo indicare all’interno della parentesi il numero di riga ed il numero di colonna della cella B5, di conseguenza scriviamo:
Cells(5 , 2).Select
Tramite il comando F8, di cui abbiamo in precedenza, eseguiamo l’istruzione appena vista.
Passiamo ora al comando Range, se volessimo selezionare la D2 non farò nient’altro che scrivere:
Range(“D2”).Select
Come fatto prima premiamo F8, ed eseguiamo l’istruzione appena vista
I due metodi appena visti ci portano allo stesso risultato, cioè selezionare una cella, ma con una differenza sostanziale, nel primo caso che forse può essere meno intuitivo, utilizziamo dei numeri e questi ci torneranno molto comodi nel caso in cui volessimo usare dei riferimenti dinamici o istruzioni all’interno di un ciclo, mentre il secondo caso è si più immediato perché scriviamo il riferimento che vediamo in Excel, ma è pur sempre un testo e questo è il motivo perché lo scriviamo tra apici.
Supponiamo ora di volere selezionare l’intervallo C2:L2, tramite il comando Range l’operazione sarà molto semplice ed intuitiva, infatti scriveremo:
Range(“C2:L2”).Select
Sfruttiamo ancora una volta il comando F8 ed ecco selezionato l’intervallo C2:L2
Se volessimo fare la selezione di un intervallo con il comando Cells dovremo nidificarlo all’interno di un comando Range, perché con la prima coordinata daremo il riferimento della cella di partenza e con la seconda la cella di arrivo.
Nel caso specifico se volessimo selezionare l’intervallo B3:B2 scriveremo:
Range(Cells(3, 2), Cells(12, 2)).Select
dove i numeri 3 e 12 rappresentano le righe ed il numero 2 la colonna B
Premiamo F8 e verifichiamo la selezione.
Adesso complichiamo un pochino le cose, fino ad ora abbiamo selezionato dei riferimenti contenuti all’interno del Foglio1 che è il foglio attivo, ma se volessimo spostarci in un altro foglio? Come fare?
Per selezionare la cella A1 del Foglio2 dovremo prima attivare il foglio in cui vogliamo andare e successivamente selezionare la cella o l’intervallo con le operazioni che abbiamo visto poco fa.
Il comando di attivazione sarà
Worksheets(“Foglio2”).Activate
Range(“A1”).Select
Verifichiamo col comando F8, e come potete vedere la prima riga attiva il Foglio2 e la seconda riga seleziona la cella A1
Se volessimo selezionare la cella B2 del Foglio2 usando il comando Cells potremo scrivere:
Sheets(“Foglio2”).Activate
Cells(2, 2).Select
Come avrete potuto notare nel primo caso abbiamo sfruttato l’oggetto Worksheets mentre nel secondo abbiamo usato l’oggetto Sheets, il risultato è il medesimo non facciamo nient’altro che dire ad Excel di attivare un determinato foglio.
Diamo un F8 di controllo e vediamo che viene selezionata la cella B2
Se fino ad ora abbiamo nominato il Foglio1 o il Foglio2 tramite il comando Workbook, possiamo indicare ad Excel il nome della cartella di lavoro, questo più tornare utile quando andiamo a lavorare su più file di Excel.
Guardiamone la sintassi:
Application.Workbooks(“Le tabelline – Excel Espresso.xlsm”).Sheets(“Foglio1”).Activate
Così facendo attiveremo il foglio1 e successivamente con:
Range(“A5”).Select
Selezioneremo la cella A5
Facciamo un ultimo sforzo, prima vi ho detto che se vogliamo spostarci da un foglio all’altro, prima dobbiamo attivarlo, in realtà con il comando Goto possiamo andare direttamente alla cella voluta dando ovviamente il percorso preciso.
Il nostro obiettivo è quello di selezionare la cella E5 del Foglio2 vediamo come scrivere il tutto:
Application.Goto Workbooks(“Le tabelline – Excel Espresso.xlsm”).Sheets(“Foglio2”).Cells(5, 5)
Il significato è: vai nella cartella di lavoro Le tabelline – Excel Espresso.xlsm, al Foglio2 e seleziona la cella della riga 5 colonna 5.
Vi faccio notare come nel nostro caso l’oggetto Workbooks sia ridondante nel caso specifico, infatti potremmo ridurre il tutto semplicemente indicando il nome del foglio e la cella da selezionare.
Se volessimo selezionare la cella E4 del Foglio1 basterà scrivere:
Application.Goto ActiveWorkbook.Sheets(“foglio1”).Range(“E4”)
Come fatto prima premiamo F8, ed ecco che arriviamo subito a destinazione: la cella E4
Nel video qui sotto trovate tutti i passaggi appena illustrati, buona visione.
4 commenti su “02 – Le MACRO – Selezionare le celle”
Salve Pierobon, Ho 2 file esempio archivio1 il secondo archivio2. In archivio2 ho una formula in cella(3,3) somma(archivio1! T:T). Quando apro il file Archivio2 non necessariamente devo aprire archivio1. Quindi la formula in archivio2 deve funzionare o leggere nel file chiuso archivio1.Grazie Giorgio
Ciao Giorgio, il tutto funziona dando i riferimenti corretti.
Scrivendo =somma(archivio1!T:T) “archivio1” è il foglio di lavoro, ma tu stai usando 2 cartelle di lavoro differenti, quindi devi usare: =SOMMA([arcchivio1.xlsx]Foglio1!$T:$T) dove “archivio1.xlsx” è il nome della cartella di lavoro e “Foglio1” è il nome del foglio.
Excel Espresso
Salve Pierobon, i dati di colonna C iniziano da C3 finiscono C99, ponendomi a rigo C101 vorrei conoscere in C101 l’ultimo dato della colonna che i dati potrebbe essere stati ottenuti da una formula (con copia e incolla valori) oppure da una riga di codice in macro. Grazie della risposta
Ciao Giorgio, ti consiglio di guardare i post o i video sulle funzioni INDIRIZZO, INDIRETTO e CONTA.VALORI.
La soluzione a quanto richiesto potrebbe essere la formula che ti indico qua sotto da posizionare nella cella C101.
=INDIRETTO(INDIRIZZO(CONTA.VALORI(C3:C99)+2;3))
Excel Espresso