Trovare l'ultima riga piena in VBA, senza sorprese
Questo è un post di prova per vedere come rende il codice dentro il testo lungo. L’argomento però è reale: trovare l’ultima riga piena di un foglio Excel è una delle prime cose che si scrivono in VBA, e anche una delle più facili da sbagliare.
Il metodo che funziona quasi sempre
Si parte dal fondo del foglio e si risale, come farebbe Ctrl+↑:
Function UltimaRiga(ws As Worksheet, Optional colonna As Long = 1) As Long
UltimaRiga = ws.Cells(ws.Rows.Count, colonna).End(xlUp).Row
End Function
Il vantaggio rispetto a UsedRange è che non si lascia ingannare dalle celle formattate ma vuote.
I casi in cui sbaglia
- La colonna scelta ha buchi proprio in fondo ai dati: conviene usare una colonna sempre compilata, come un codice o una data.
- Ci sono righe nascoste da un filtro:
End(xlUp)si ferma sulle righe visibili. - Il foglio è completamente vuoto: la funzione restituisce
1, non0.
Per il terzo caso basta un controllo esplicito prima di usare il risultato.