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

请求编写可重复执行的VBA代码:复制当前行插入至下方行

解决Excel宏动态复制新增行的需求

原录制的宏因硬编码固定行号,只能重复复制第10行到第11行,无法实现「首次复制第10行到11行、后续每次复制上一次新增行」的需求。以下是修改后的代码及说明:

修改后的VBA代码

Sub CopyDynamicRow()
    Dim ws As Worksheet
    Dim sourceRow As Integer
    Dim prop As DocumentProperty
    
    Set ws = ThisWorkbook.Worksheets("SUMMARY")
    
    ' 检查是否存在存储源行号的自定义属性
    On Error Resume Next
    Set prop = ThisWorkbook.CustomDocumentProperties("LastSourceRow")
    On Error GoTo 0
    
    If prop Is Nothing Then
        ' 首次执行:源行设为10,创建属性记录下次执行的源行
        sourceRow = 10
        ThisWorkbook.CustomDocumentProperties.Add _
            Name:="LastSourceRow", _
            LinkToContent:=False, _
            Type:=msoPropertyTypeNumber, _
            Value:=sourceRow + 1
    Else
        ' 非首次执行:读取记录的源行号,更新下次执行的源行
        sourceRow = prop.Value
        prop.Value = sourceRow + 1
    End If
    
    ' 执行插入与复制操作(避免使用Select提升效率)
    ws.Rows(sourceRow + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    ws.Rows(sourceRow).AutoFill Destination:=ws.Rows(sourceRow & ":" & sourceRow + 1), Type:=xlFillDefault
End Sub

代码核心逻辑

  • 状态记录:通过工作簿的CustomDocumentProperties存储每次执行后的源行号,避免宏每次执行时重置状态
  • 动态行号:首次执行默认源行为10,后续每次执行自动将源行号递增1
  • 高效操作:移除原代码中的Select操作,直接对工作表行对象进行操作,提升代码稳定性与执行速度

使用方法

  1. 打开Excel的VBA编辑器(按Alt+F11)
  2. 找到原宏所在的模块,替换为上述代码
  3. 将宏绑定到命令按钮,点击按钮即可按需求重复执行:
    • 首次点击:复制第10行插入到第11行
    • 后续点击:依次复制第11行→第12行、第12行→第13行,支持无限重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:29