una ultima seleccionar recorrer otra hoja hasta fila encontrar datos copiar con columnas columna celda buscar excel vba excel-vba

ultima - Encontrar el número de columnas que no están en blanco en una hoja de Excel usando VBA



seleccionar hasta la ultima celda con datos vba (5)

El resultado se muestra en el siguiente código como número de columna (8,9, etc.):

Dim lastColumn As Long lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column MsgBox lastColumn

El resultado se muestra en el siguiente código como letra (H, I, etc.):

Dim lastColumn As Long lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column MsgBox Split(Sheet1.Cells(1, lastColumn).Address, "$")(1)

¿Cómo puedo encontrar el número de columnas usadas en una hoja de Excel usando VBA?

Dim lastRow As Long lastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row MsgBox lastRow

Usando el VBA anterior puedo encontrar el número de filas. Pero, ¿cómo encuentro el número de columnas en mi archivo de Excel dado?


Es posible que haya olvidado una sheet1 cada vez antes de la columns.count . columns.count , o contará las columnas de activesheet y no las sheet1 .

Además, ¿no debería ser xltoleft en lugar de xltoright? (Ok, es muy tarde aquí, pero creo que conozco mi derecha desde la izquierda) Lo revisé, debes escribir xltoleft.

lastColumn = Sheet1.Cells(1, sheet1.Columns.Count).End(xlToleft).Column



La respuesta de Jean-François Corbett es perfecta. Para ser exhaustivo, me gustaría agregar que con algunas restricciones también podría usar UsedRange.Columns.Count o UsedRange.Rows.Count .
El problema es que UsedRange no siempre se actualiza al eliminar filas / columnas (al menos hasta que vuelva a abrir el libro).


Su código de ejemplo obtiene el número de fila de la última celda que no está en blanco en la columna actual, y se puede volver a escribir de la siguiente manera:

Dim lastRow As Long lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row MsgBox lastRow

Entonces es fácil ver que el código equivalente para obtener el número de columna de la última celda que no está en blanco en la fila actual es:

Dim lastColumn As Long lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column MsgBox lastColumn

Esto también puede ser de utilidad para usted:

With Sheet1.UsedRange MsgBox .Rows.Count & " rows and " & .Columns.Count & " columns" End With

pero tenga en cuenta que si la columna A y / o la fila 1 están en blanco, esto no dará el mismo resultado que los otros ejemplos anteriores. Para más información, lea sobre la propiedad UsedRange .