0

嗨,我需要 VBA 中这一行的帮助:

lastrow = wsTarget.Range("X65536").End(xlUp).Row
MsgBox lastrow

wsTarget是我正在处理的工作表,我想知道最后一行数据是什么。通过查看工作表,最后一行应该是 9;但是,它一直向我返回 1。难道我做错了什么?

4

3 回答 3

0

键入的时间有点长,但 Range.Find 方法可能对您有用:

lastrow = wsTarget.Columns("X").Find("*", wsTarget.Range("X1"), xlValues, SearchDirection:=xlPrevious).Row
MsgBox lastrow
于 2013-08-16T01:50:50.630 回答
0

将来,尽量避免通过从定义的单元格向上移动来确定最后一行。特别是 65536,这是 Excel 2003 可以处理的最大行(旧代码!)。我们应该使代码与版本无关!

对于您要查找的所有未来版本的office,您将很好地使用以下代码:

' Start going up from next row of last cell
lastrow = wsTarget.Cells.SpecialCells(xlLastCell).row + 1
lastrow = wsTarget.Range("X" & lastrow).End(xlUp).Row
于 2013-08-16T02:35:31.560 回答
0

基于“最后一行数据”不一定与 ColumnX 一致,也许以下礼貌会适合:

Sub Last_Real_Populated_Row()
    ActiveCell.SpecialCells(xlLastCell).Select
    LastR = ActiveCell.Row
    LastC = ActiveCell.Column
    LastRealC = 1
    For Counter = LastR To 1 Step -1
        Range(Cells(Counter, LastC), Cells(Counter, LastC)).Select
        Selection.End(xlToLeft).Select
        If Not IsEmpty(ActiveCell.Value) Then
            LastRealR = ActiveCell.Row
            Exit For
        End If
    Next
End Sub
于 2013-08-16T02:47:12.913 回答