Officina & Codice

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

  1. La colonna scelta ha buchi proprio in fondo ai dati: conviene usare una colonna sempre compilata, come un codice o una data.
  2. Ci sono righe nascoste da un filtro: End(xlUp) si ferma sulle righe visibili.
  3. Il foglio è completamente vuoto: la funzione restituisce 1, non 0.

Per il terzo caso basta un controllo esplicito prima di usare il risultato.