Ășltimo variable valor vacia una ultimo ultima seleccionar renglon registro rango macro insertar hasta fila encontrar desde datos con celda buscar activa excel excel-vba vba

excel - valor - seleccionar rango variable vba



Excel VBA- Encontrar la Ășltima columna con datos (5)

Encontré este método para encontrar la última fila de datos que contiene una hoja:

ws.Range("A65536").End(xlUp).row

¿Hay algún método similar para encontrar la última columna que contenga datos en una hoja?

Gracias.


Aquí hay algo que podría ser útil. Seleccionando la columna completa en base a una fila que contiene datos, en este caso estoy usando la 5ª fila:

Dim lColumn As Long lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column MsgBox ("The last used column is: " & lColumn)


Creo que podemos modificar el código de Reafidy respuesta de Reafidy anterior para obtener la última columna utilizada, incluso si las columnas iniciales están en blanco o no.

Entonces este lColumn = ws.UsedRange.Columns.Count modificado para

esta lColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1 dará resultados confiables siempre

?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1

Above line Rinde 9 en la ventana inmediata.


Intente usar el código después de activar la hoja:

Dim J as integer J = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

Si usa Cells.SpecialCells(xlCellTypeLastCell).Row solamente, el problema será que la información de xlCellTypeLastCell no se actualizará a menos que se haga una acción de "Guardar archivo". Pero el uso de UsedRange siempre actualizará la información en tiempo real.


Muchas formas de hacer esto. El más confiable es encontrar.

Dim rLastCell As Range Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False) MsgBox ("The last used column is: " & rLastCell.Column)

Si desea encontrar la última columna utilizada en una fila en particular, puede usar:

Dim lColumn As Long lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column

Usando rango usado (menos confiable):

Dim lColumn As Long lColumn = ws.UsedRange.Columns.Count

Usar el rango utilizado no funcionará si no tiene datos en la columna A. Consulte aquí para otro problema con el rango utilizado:

Consulte Here para restablecer el rango utilizado.


Sé que esto es viejo, pero lo he probado de muchas maneras y aún no me ha fallado, a menos que alguien me diga lo contrario.

Numero de fila

Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

Carta de columna

ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)

Número de columna

ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column