vacia - obtener ultima fila con datos vba excel
La última celda no vacía en la fila; Excel VBA (2)
He ampliado mi comentario anterior para proporcionar soluciones que
- no use
Select
- abastecerse de la última celda en la fila 1 en uso
- atender a toda la fila estando vacía
- abastece toda la fila llena
El método Find
en el segundo código es un método mucho más directo para establecer la primera celda no en blanco
Esta línea Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlValues, , xlByColumns, xlPrevious)
dice, comience en la celda A1 de la Hoja "DTCa" y mire hacia atrás (es decir, desde el último celda en la fila 1) en la fila 1 por columna en busca de cualquier cosa (el *
). Este método encuentra el último en blanco o no devuelve Nothing
, es decir, una fila vacía
usando xltoLeft
con controles específicos
Sub Method1()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("DTCs")
If ws.Cells(1, Columns.Count) = vbNullString Then
Set rng1 = ws.Cells(1, Columns.Count).End(xlToLeft)
If rng1.Column <> 1 Then
''return last used cell
MsgBox "rng1 contains " & rng1.Address(0, 0)
Else
If ws.[a1] = vbNullString Then
MsgBox ws.Name & " row1 is completely empty", vbCritical
Else
''true last used cell is A1
MsgBox "rng1 contains " & rng1.Address(0, 0)
End If
End If
Else
''last cell is non-blank
MsgBox ws.Cells(1, Columns.Count) & " contains a value", vbCritical
End If
End Sub
recomendado
Sub Method2()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("DTCs")
Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlFormulas, , xlByColumns, xlPrevious)
If Not rng1 Is Nothing Then
MsgBox "rng1 contains " & rng1.Address(0, 0)
Else
MsgBox ws.Name & " row1 is completely empty", vbCritical
End If
End Sub
Tengo una hoja de Excel en la que necesito encontrar la última celda no vacía en una columna específica.
¿Cómo hago esto?
A continuación, seleccionaré esto para mí, pero seleccionará la primera celda no vacía, necesito la última celda no vacía en la fila.
Worksheets("DTCs").Range("A29").End(xlToRight).Select
Creo que podría funcionar simplemente buscar desde la otra dirección, así que algo así como:
Worksheets("DTCs").Range("IV29").End(xlToLeft).Select
Aunque tal vez el IV necesitaría ser cambiado a otra cosa dependiendo de la versión de Excel (esto parece funcionar en 2003).