You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA查找列最后一行:现有代码异常及优化方案咨询

解决VBA中Range.End(xlDown)的边界报错问题

原代码:

Range("C31").Select
Selection.End(xlDown).Offset(1, 0).Select

该代码在C31区域有2行及以上数据时运行正常,但当C31仅含1行数据时,End(xlDown)会定位到工作表底部,执行Offset(1,0)会因超出范围报错。以下是符合需求的简洁IF判断替代代码:

方案一:直接判断相邻单元格状态

If Range("C32").Value = "" Then
    Range("C31").Offset(1, 0).Select
Else
    Range("C31").End(xlDown).Offset(1, 0).Select
End If

方案二:用With语句简化代码(更严谨)

With Range("C31")
    ' 检查C31下一行是否为空,判断是否仅1行数据
    If .Offset(1, 0).Value = "" Then
        .Offset(1, 0).Select
    Else
        .End(xlDown).Offset(1, 0).Select
    End If
End With

逻辑说明:

  • 当C31仅1行数据时,其下一行(C32)为空,直接选中C32;
  • 当C31下方有连续数据时,用End(xlDown)定位到数据最后一行,再选中其下一行。

内容的提问来源于stack exchange,提问作者Gurenn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:12:10