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

如何修改Excel宏使其每次复制工作表最后31行而非固定区域?

修改VBA宏以复制工作表最后31行

需求概述

原宏固定复制A2:AJ30区域并粘贴到下方,现需要修改为每次运行时自动识别工作表中的最后31行进行复制粘贴。

修改后的完整代码

替换原宏中固定区域的复制逻辑,修改后的代码如下:

If .Range("C1").Value < 1 Then
        Application.ScreenUpdating = True
        MsgBox "请输入至少1的有效复制次数"
        Exit Sub
    End If
    
    copies = .Range("C1").Value
    
        For i = 1 To copies
            ' 获取当前数据的最后一行(以B列为准)
            Dim currentLastRow As Long
            currentLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
            
            ' 兼容行数不足31行的情况(可选)
            If currentLastRow < 31 Then
                Application.ScreenUpdating = True
                MsgBox "当前数据不足31行,无法执行复制操作"
                Exit Sub
            End If
            
            ' 定义要复制的最后31行区域
            Dim copyRange As Range
            Set copyRange = .Range("A" & (currentLastRow - 30) & ":AJ" & currentLastRow)
            
            ' 添加黑色分隔行
            Dim pasteStartRow As Long
            pasteStartRow = currentLastRow + 1
            .Range("A" & pasteStartRow & ":AJ" & pasteStartRow).Interior.ColorIndex = 1
            
            ' 复制并粘贴到分隔行下方
            copyRange.Copy Destination:=.Range("A" & pasteStartRow + 1)
    
        Next i
    
End With

Application.ScreenUpdating = True
MsgBox "模板已复制 " & copies & " 次。"

End Sub

关键修改点

  1. 动态获取目标区域:通过currentLastRow获取当前数据的最后一行,计算起始行currentLastRow - 30,从而得到最后31行的范围(从currentLastRow-30到currentLastRow,共31行),替代原固定的A2:AJ30。
  2. 粘贴位置更新:每次粘贴前先获取最新的最后一行,确保分隔行和复制内容都追加在当前数据的末尾。
  3. 可选兼容处理:添加了行数不足31行的判断,避免因数据量不够导致的运行错误。
  4. 提示文本汉化:将原英文提示改为中文,提升易用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:15:03