Trovare l’ultima cella utilizzata in una macro (Microsoft Excel)
Se stai lavorando in un foglio di lavoro, sai che puoi premere Ctrl + Fine per passare all’ultima cella del foglio di lavoro. Quello che fa il collegamento è scegliere la cella che rappresenta l’intersezione dell’ultima colonna contenente i dati e l’ultima riga contenente i dati. Pertanto, se l’ultima colonna in cui sono presenti dati è la colonna F e l’ultima riga in cui sono presenti dati è la riga 27, Ctrl + Fine selezionerà la cella F27.
Per fare la stessa operazione da una macro, usi un comando molto semplice, come mostrato qui:
Sub FindLast1() ActiveCell.SpecialCells(xlLastCell).Select End Sub
Funzionalmente equivale a premere Ctrl + Fine. Tuttavia (e questo è un grosso problema), Excel non tiene traccia dinamicamente di quali righe e colonne sono le ultime utilizzate in un foglio di lavoro. Ad esempio, supponiamo di aprire una cartella di lavoro, premere Ctrl + Fine e vieni portato alla cella F27. Se quindi elimini 3 righe e una colonna, ti aspetteresti che Ctrl + Fine ti porti alla cella E24. Non è così; ti porta ancora alla cella F27, finché non salvi la cartella di lavoro e la riapri.
Questo stesso problema riguarda il codice macro mostrato nella macro FindLast1; ti porterà alla cella “più alta”, indipendentemente da quali colonne o righe hai eliminato durante la sessione corrente.
Ciò che serve è un modo per ripristinare l’indicatore “ultima cella”, proprio come se avessi salvato e riaperto la cartella di lavoro. Non esiste un comando macro intrinseco che lo faccia, ma esiste un modo per forzare Excel a eseguire il ripristino. Tutto quello che devi fare è regolare la macro come segue:
Sub FindLast2() x = ActiveSheet.UsedRange.Rows.Count ActiveCell.SpecialCells(xlLastCell).Select End Sub
Questa macro ti porta sempre nella cella corretta: funziona come ti aspetteresti che Ctrl + Fine funzioni sempre. Funziona perché a quanto pare Excel, quando calcola la proprietà Count per il numero di righe nel foglio di lavoro, reimposta sempre l’indicatore “ultima cella”.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2271) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: