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
Esta es la respuesta:
numCols = objSheet.UsedRange.Columns.count
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
.