he ampliado en mi comentario anterior para proporcionar soluciones que
- no utilizan
Select
- atender a la última celda de la fila 1 siendo utilizado
- atender a toda la fila está vacía
- abastecer toda la fila siendo completa
El método Find
en el seco nd código es un método mucho más directa de establecer la primera celda no esté en blanco
Esta línea Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlValues, , xlByColumns, xlPrevious)
dice, se inicia en la celda A1 de la hoja "CTD" y luego mirar hacia atrás (es decir, desde la última celda de la fila 1) en fila1 por columna buscando cualquier cosa (*
). Este método ya sea encontrar la última en blanco o no regresa 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
recomienda
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
@ExcelDevelopers: luego votar para cerrar como duplicado de la pregunta SO más antigua que pregunta lo mismo. Las respuestas en otras páginas que no sean SO pueden desaparecer en cualquier momento. –
Posible duplicado de [Error al buscar la última celda utilizada en VBA] (https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba) – Masoud