嗨,我需要 VBA 中这一行的帮助:
lastrow = wsTarget.Range("X65536").End(xlUp).Row
MsgBox lastrow
wsTarget
是我正在处理的工作表,我想知道最后一行数据是什么。通过查看工作表,最后一行应该是 9;但是,它一直向我返回 1。难道我做错了什么?
键入的时间有点长,但 Range.Find 方法可能对您有用:
lastrow = wsTarget.Columns("X").Find("*", wsTarget.Range("X1"), xlValues, SearchDirection:=xlPrevious).Row
MsgBox lastrow
将来,尽量避免通过从定义的单元格向上移动来确定最后一行。特别是 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
基于“最后一行数据”不一定与 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