Encuentra la última fila y columna en VBA

Glen Alfaro 30 enero 2023
  1. Sintaxis de código
  2. Obtenga la última fila/columna con datos en la hoja de trabajo actual en VBA
  3. Obtenga la última fila/columna con datos de otra hoja de trabajo en VBA
  4. Obtener la última fila/columna de una hoja de cálculo mediante una función
Encuentra la última fila y columna en VBA

Cuando se trata de datos en una hoja de cálculo, necesitamos conocer la última fila y la última columna con datos. Es útil establecer un límite donde nuestro cursor puede iterar.

VBA no tiene una función integrada para devolver la última fila/columna utilizada en una hoja de cálculo. Pero con el uso de soluciones simples de VBA, podemos diseñar nuestra función definida por el usuario para devolver el valor de la última fila/columna utilizada en una hoja de cálculo.

Este artículo demostrará cómo encontrar la última fila y columna utilizada en una hoja de cálculo usando Excel VBA.

Sintaxis de código

Código para obtener la última fila:

Cells(Rows.Count,[colNum]).End(xlUp).Row

código para obtener la última columna:

Cells(Rows.Count,[rowNum]).End(xlUp).Row

Donde,

[colNum] Valor entero de la columna donde está la última fila
[rowNum] Valor entero de la fila donde está la última columna

Obtenga la última fila/columna con datos en la hoja de trabajo actual en VBA

El bloque de código a continuación debe escribirse en la hoja de trabajo de destino en Microsoft Excel.

Sub GetLastRowCol()

'Declare lastRow and Last Col as Long datatype as we need to presume the values will be _
assigned with these variables are very high numbers.
Dim lastRow as Long
Dim lastCol as Long

'Assigning lastRow and lastCol variable
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Debug.Print "The last Row is: " & lastRow & vbNewline & "The last Column is :" & lastCol 
End Sub

Producción :

The last Row is :1
The last Column is :1

Obtenga la última fila/columna con datos de otra hoja de trabajo en VBA

Cuando se trata de varias hojas de trabajo, debemos asignar explícitamente en qué hoja de trabajo nos encontramos actualmente.

El bloque de código a continuación demostrará cómo obtener la última fila/columna utilizada de una hoja de trabajo diferente.

Sub GetLastRowCol()

'Declare lastRow and Last Col as Long datatype as we need to presume the values will be _
assigned with these variables are very high numbers.
Dim lastRow as Long
Dim lastCol as Long

'Declaring workbook and worksheets
Dim wb as Workbook
Dim s1, s2 as Worksheet

'Initializing the wb, s1, and s2 objects.
Set wb = ThisWorkBook
Set s1 = wb.Sheets("Sheet1")
Set s2 = wb.Sheets("Sheet2")

'Will return the row number of the last row in Column A on Sheet1
lastRow = s1.Cells(s1.Rows.Count, 1).End(xlUp).Row
'Will return the row number of the last row in Row 1 on Sheet1
lastCol = s1.Cells(1, s1.Columns.Count).End(xlToLeft).Column

Debug.print "The last row in Sheet1:" & lastRow & vbNewline & "The last column in Sheet 1:" & lastCol

'Will return the row number of the last row in Column A on Sheet2
lastRow = s2.Cells(s2.Rows.Count, 1).End(xlUp).Row
'Will return the row number of the last row in Column A on Sheet2
lastCol = s2.Cells(1, s2.Columns.Count).End(xlToLeft).Column

Debug.print "The last row in Sheet2:" & lastRow & vbNewline & "The last column in Sheet 2:" & lastCol

End Sub

Producción :

The last row in Sheet1: 1
The last column in Sheet1: 1
The last row in Sheet2: 1
The last column in Sheet2: 1

Obtener la última fila/columna de una hoja de cálculo mediante una función

La siguiente función devolverá la última fila o la última columna según el argumento de la hoja de trabajo.

Function GetLastRow(s As Worksheet) As Long
GetLastRow = s.Cells(s.Rows.Count, 1).End(xlUp).Row
End Function
Function GetLastCol(s As Worksheet) As Long
GetLastCol = s.Cells(1, s.Columns.Count).End(xlToLeft).Column
End Function

Sub testRow()
Dim wb As Workbook
Dim s1 As Worksheet

Set wb = ThisWorkbook
Set s1 = wb.Sheets("Sheet1")
Debug.Print GetLastRow(s1)
End Sub

Sub testCol()
Dim wb As Workbook
Dim s1 As Worksheet

Set wb = ThisWorkbook
Set s1 = wb.Sheets("Sheet1")
Debug.Print GetLastCol(s1)
End Sub

Salida testRow:

1

Salida testCol:

1

Artículo relacionado - VBA Row

Artículo relacionado - VBA Column