Vba Range.End()混乱

Vba Range.End()混乱,vba,excel,Vba,Excel,我有一个关于VBA中Range.End()属性的一般性问题。我已经了解了这家酒店的情况 ,但我还是很困惑。例如: With ws lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row MsgBox ("Last row for xlUP is: " & lastRow) End With 为什么这个方向在上升?为什么它不停下来?是从最下面一排开始,然后往上走吗?我知道这是错误的,因为我在代码中使用了

我有一个关于VBA中Range.End()属性的一般性问题。我已经了解了这家酒店的情况 ,但我还是很困惑。例如:

    With ws
       lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
       MsgBox ("Last row for xlUP is: " & lastRow)
    End With
为什么这个方向在上升?为什么它不停下来?是从最下面一排开始,然后往上走吗?我知道这是错误的,因为我在代码中使用了它(并且因为每个人在查找最后使用的行时都使用xlUp),但我不知道为什么。有人能解释一下吗?

End(xlDown)从上到下搜索,在空白单元格之前找到最后使用的单元格。但如果数据中有空白单元格,则该单元格可能不是最后使用的单元格。自己手动操作:突出显示包含与空白混合的数据的列,然后按下ctrl键-它将转到第一个空白单元格之前的单元格


另一方面,End(xlUp)从范围的底部向上搜索空白单元格之前的第一个使用的单元格。这将始终是该范围内最后一个使用的单元格,因为我们从底部开始。

@pnuts:good point。取决于起始单元格是否为空。谢谢!我一直认为xlDirection是从范围内的第一个单元格开始的,但我发现这不是真的。