如何确定VBA中使用的最后一行,包括中间的空格

Jon*_*pez 34 excel vba

如何确定Excel工作表中的最后一行,包括中间的一些空行?

有了这个功能:

Function ultimaFilaBlanco(col As String) As Long        
        Dim lastRow As Long
        With ActiveSheet
            lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, col).End(xlUp).row
        End With            
        ultimaFilaBlanco = lastRow          
End Function
Run Code Online (Sandbox Code Playgroud)

这个数据:

Row 1 : Value
Row 2 : Value
Row 3 : Value
Row 4 : Value
Row 5 : Value
Row 6 : White
Row 7 : Value
Row 8 : Value
Row 9 : Value
Row 10  : White
Row 11  : White
Row 12  : White
Row 13  : Value
Row 14  : White
Run Code Online (Sandbox Code Playgroud)

该函数返回5,我需要13.任何想法怎么做?

Abd*_*oud 59

获取最后一行使用次数的最佳方法是:

ActiveSheet.UsedRange.Rows.Count对于当前表.

Worksheets("Sheet name").UsedRange.Rows.Count对于特定的表格.

要获取最后一列的编号:

ActiveSheet.UsedRange.Columns.Count对于当前表.

Worksheets("Sheet name").UsedRange.Columns.Count对于特定的表格.

我希望这有帮助.

阿卜杜

  • 仅当第一个非空行为第1行时才有效. (5认同)

小智 19

ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Rows(1).Row -1
Run Code Online (Sandbox Code Playgroud)

短.安全.快速.即使工作表顶部或其他任何地方有空行,也会返回最后一个非空行.也适用于空工作表(Excel在空工作表上报告1个用过的行,因此表达式为1).测试并使用Excel 2002和Excel 2010.


Sid*_*and 17

我使用以下内容:

lastrow = ActiveSheet.Columns("A").Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
Run Code Online (Sandbox Code Playgroud)

它会找到特定列中的最后一行.如果您想要任何列的最后一行,那么:

lastrow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row
Run Code Online (Sandbox Code Playgroud)


fbo*_*tti 14

你真的很亲密 尝试使用大行号End(xlUp)

Function ultimaFilaBlanco(col As String) As Long

        Dim lastRow As Long
        With ActiveSheet
            lastRow = ActiveSheet.Cells(1048576, col).End(xlUp).row
        End With

        ultimaFilaBlanco = lastRow

End Function
Run Code Online (Sandbox Code Playgroud)