Excel VBA:如何用LastRow替代Ctrl+Shift+下箭头实现区域选择?
实现方法
核心需求是:先定位到B1并跳转到其下方连续非空区域的末尾,再选中该位置到B列真正最后非空行(即LastRow)的区域,替代依赖连续数据的Ctrl+Shift+下箭头操作。
步骤与代码示例
- 获取B列的LastRow:先拿到B列最后一个非空单元格的行号(不受中间空值影响):
LastRow = Cells(Rows.Count, "B").End(xlUp).Row - 模拟手动操作前半段:定位到B1并跳转到连续非空区域末尾:
Range("B1").Select Set currentCell = Selection.End(xlDown) - 用LastRow选中目标区域:直接从跳转后的单元格选到B列LastRow:
Range(currentCell, Cells(LastRow, "B")).Select
完整可用代码(含异常处理)
考虑到B1下方无数据的情况,加入判断避免错误:
Sub SelectTargetRange() Dim LastRow As Long Dim currentCell As Range ' 获取B列最后非空行的行号 LastRow = Cells(Rows.Count, "B").End(xlUp).Row ' 定位到B1 Range("B1").Select ' 处理B1下方无数据的情况 If Not IsEmpty(Range("B2")) Then Set currentCell = Selection.End(xlDown) Else Set currentCell = Range("B1") End If ' 确保跳转后的单元格不超过LastRow If currentCell.Row > LastRow Then Set currentCell = Cells(LastRow, "B") End If ' 选中目标区域 Range(currentCell, Cells(LastRow, "B")).Select End Sub
说明
- 原来的
Selection.End(xlDown)仅能跳转到连续非空数据的末尾,如果B列中间有空值,Ctrl+Shift+下箭头也只会选中到空值前一行;而用LastRow可以直接定位到B列真正的最后非空行,不管中间是否有空值,完全匹配需求。 - 异常处理部分避免了B1下方无数据时,
End(xlDown)跳到工作表最后一行的错误。
内容的提问来源于stack exchange,提问作者Ardi
相关产品推荐
相关产品推荐

