martes, 14 de marzo de 2017

VBA: Localizar la Última Fila de nuestra Hoja

Recordaremos hoy una pregunta bastante recurrente en las cuestiones que se me plantean.
¿Cómo localizo o encuentro la última fila usada en mi rango de trabajo?.

Tiempo atrás resolvimos la cuestión mediante funciones, sin necesidad de programación...
ver post
pero en este caso daremos uso a técnicas habituales de VBA.


Nuestra macro la creamos en un módulo estándar de nuestro libro de trabajo.

Sub EncontrarUltimaFila()
Dim sh As Worksheet
Dim UltFila1 As Long, UltFila21 As Long, UltFila22 As Long, UltFila3 As Long, UltFila4 As Long

Set sh = ThisWorkbook.ActiveSheet
'Tres métodos fáciles de emplear... y uno diferente

'Método 1: Ctrl + Shift + Down (El rango de trabajo debe comenzar en la celda A1)
UltFila1 = sh.Range("A1").CurrentRegion.Rows.Count

'Método 2.1: Ctrl + Shift + End (Deben existir celda ocupadas en la columna A)
UltFila21 = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row

'Método 2.2: Ctrl + Shift + End (Deben existir celda ocupadas en la columna A)
UltFila22 = sh.Range("A" & Rows.Count).End(xlUp).Row

'Método 3: Empleando UsedRange
UltFila3 = sh.UsedRange.Rows(sh.UsedRange.Rows.Count).Row

'Método 4: Empleando el método Find
UltFila4 = sh.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

MsgBox "Método 1: " & vbTab & UltFila1 & vbCrLf & _
    "Método 2.1: " & vbTab & UltFila21 & vbCrLf & _
    "Método 2.2: " & vbTab & UltFila22 & vbCrLf & _
    "Método 3: " & vbTab & UltFila3 & vbCrLf & _
    "Método 4: " & vbTab & UltFila4 & vbCrLf

End Sub



Si ejecutamos nuestra macro vemos el resultado en el MsgBox:

VBA: Localizar la Última Fila de nuestra Hoja



Son técnicas muy extendidas, pero no por eso dejan de ser prácticas y fáciles de aplicar.
El objetivo de encontrar esta última fila es siempre el mismo, delimitar nuestros rangos de trabajo de una manera dinámica.


Adicionalmente, y de manera muy similar, podemos obtener el último número de columna empleada.
Nuestra macro la creamos en un módulo estándar de nuestro libro de trabajo.

Sub EncontrarUltimaColumna()
Dim sh As Worksheet
Dim UltCol1 As Long, UltCol21 As Long, UltCol22 As Long, UltCol3 As Long, UltCol4 As Long

Set sh = ThisWorkbook.ActiveSheet

'Método 1: Ctrl + Shift + Right (El rango de trabajo debe comenzar en la celda A1)
UltCol1 = sh.Range("A1").CurrentRegion.Columns.Count

'Método 2.1:Ctrl + Shift + End
UltCol21 = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column

'Método 2.2:Ctrl + Shift + End
UltCol22 = sh.Range("XFD1").End(xlToLeft).Column

'Método 3: Empleando UsedRange
UltCol3 = sh.UsedRange.Columns(sh.UsedRange.Columns.Count).Column

'Método 4: Empleando el método Find
UltCol4 = sh.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

MsgBox "Método 1: " & vbTab & UltCol1 & vbCrLf & _
    "Método 2.1: " & vbTab & UltCol21 & vbCrLf & _
    "Método 2.2: " & vbTab & UltCol22 & vbCrLf & _
    "Método 3: " & vbTab & UltCol3 & vbCrLf & _
    "Método 4: " & vbTab & UltCol4 & vbCrLf

End Sub


El resultado:

VBA: Localizar la Última Fila de nuestra Hoja

No hay comentarios:

Publicar un comentario