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

如何将Long变量Last定义为Range区域SortRng的最后已用行号?

VBA代码问题排查与修复

问题核心分析

你当前代码获取SortRng最后行号的语句存在逻辑冗余与语法问题,同时代码中错误的End语句会直接终止程序运行,导致功能失效:

  • SortRng是固定26行的区域(通过Resize(26,2)定义),End(xlDown)会直接定位到该区域最后一行,但后续的Resize(, .Columns.Count)完全多余,既不改变行号还可能引发语法报错
  • 两处End语句会强制终止程序,使得GameRng的遍历循环无法完整执行

修复后的完整代码

For Each thisCellInGame In GameRng
    If thisCellInGame.Value = "Game On!" Then
        Set SortRng = thisCellInGame.Offset(2, 3).Resize(26, 2)
        ' 直接计算SortRng的最后一行行号
        Last = SortRng.Row + SortRng.Rows.Count - 1
        first = Last - 25
        ' 倒序遍历避免删除行后索引混乱
        For i = Last To first Step -1
            If Cells(i, "E").Value = "" And Cells(i, "I").Value = "" And Cells(i, "M").Value = "" Then
                Cells(i, "A").EntireRow.Delete
            End If
        Next i
    End If
Next thisCellInGame

关键修改说明

  • 移除冗余的With SortRng块,通过SortRng.Row + SortRng.Rows.Count -1直接计算固定区域的最后行号,这是可靠且高效的方式
  • 删除两处错误的End语句,确保遍历循环能完整执行所有符合条件的单元格
  • 统一变量名大小写(first),避免VBA变量名混淆(VBA不区分大小写,但统一风格提升可读性)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:15:40