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

如何在VBA中设置从活动行到最后数据行的遍历范围?

问题解决:VBA遍历活动行到最后行并复制匹配邮编的行

错误原因

你修改后的Range语句格式错误,Range()需要的是类似"J5:J15"这样的完整单元格区域地址,而你直接拼接行号得到的是类似"515"的无效字符串,导致循环范围完全错误。

修正后的完整代码

'需要用If循环复制所有匹配邮编的后续行
Dim r As Range
Dim j As Integer
Dim post_code_on_sheet As String
Dim startRow As Long '定义起始行变量,避免依赖ActiveCell

post_code_on_sheet = wb2.Worksheets("Sheet2").Cells(3, 2).Value
lastRow1 = wb.Worksheets("Sheet1").Range("J" & Rows.Count).End(xlUp).Row
j = 2
startRow = ActiveCell.Row '获取活动行号,存储到变量

'定义范围:从活动行到最后有数据的行(J列)
For Each r In wb.Worksheets("Sheet1").Range("J" & startRow & ":J" & lastRow1)
    If r.Value = post_code_on_sheet Then
        wb.Worksheets("Sheet1").Rows(r.Row).Copy wb2.Worksheets("Sheet1").Rows(j)
        j = j + 1
    End If
Next r

关键修改点

  • 修正Range区域格式:将错误的Range(ActiveCell.row & lastRow1)改为Range("J" & startRow & ":J" & lastRow1),生成合法的单元格区域地址
  • 新增起始行变量:用startRow存储活动行号,避免后续操作依赖ActiveCell,代码稳定性更强
  • 明确使用Value属性:判断时用r.Value替代r,逻辑更清晰(VBA中虽可省略,但显式书写可读性更强)

另外,原代码中Cells(row, 10).Activate里的row变量未定义,建议替换为ActiveCell或者先赋值,避免运行时错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:18:28