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

Excel VBA按无下划线单元格分组行时遇1004错误求助

Excel VBA分组行报错(Runtime Error 1004)解决方法

错误原因

最后一行代码报错是因为循环结束后startr的值可能大于lr(最后一行行号):

  • 当表格最后一行本身是无下划线单元格时,startr会被设置为lr+1,此时构造的范围A[lr+1]:A[lr]是无效的单元格范围,触发1004错误。
  • 原代码未处理相邻无下划线单元格的情况,此时startr会大于endr,同样导致无效范围。

修正后的代码

Sub GroupCellsSameFormat()
    Dim r As Integer, lr As Integer, startr As Integer, endr As Integer
    lr = Cells(Rows.Count, "A").End(xlUp).Row
    
    startr = 0
    ' 从第1行开始遍历,避免遗漏首行的无下划线单元格
    For r = 1 To lr
        If Range("A" & r).Font.Underline = False Then
            If startr <> 0 Then
                endr = r - 1
                ' 确保起始行不大于结束行,避免无效范围
                If startr <= endr Then
                    Range("A" & startr & ":A" & endr).Rows.Group
                End If
            End If
            ' 更新分组起始行为当前行的下一行
            startr = r + 1
        End If
    Next r
    
    ' 处理最后一组,仅当起始行有效时执行分组
    If startr <= lr Then
        Range("A" & startr & ":A" & lr).Rows.Group
    End If
End Sub

关键修正点

  • 遍历范围调整:从第1行开始遍历,避免遗漏首行是无下划线单元格的情况。
  • 无效范围校验:每次分组前判断startr <= endr,避免相邻无下划线单元格导致的无效范围。
  • 最后一组判断:增加startr <= lr的校验,确保最后一次分组的范围合法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:35:00