Excel VBA需求:复制表格当前行并插入指定数量副本
Excel表格复制行并插入副本的VBA实现
需求与问题
- 需求:在当前活动工作表的表格中,复制当前单元格所在整行内容(限定表格A:K列范围),并在该行下方插入对应数量的内容副本。
- 问题:现有代码仅能插入指定行数的空行,无法自动填充原行内容;尝试其他代码时,要么仍插入空行,要么出现「粘贴空间不足」的错误。
- 预期效果:选中表格目标行(表头为A3:AK),若设置复制5次,该行下方会新增5个与原行内容完全一致的副本(总计6行)。
现有仅插入空行的代码
Sub INSERIR_LINHAS() Application.ScreenUpdating = False Dim Table As Object Dim Rows As Range Set Rows = Worksheets("CC").Range("B18") '要插入的行数 Dim rng As Range Set rng = ActiveCell If Rows = ("1") Then GoTo ErrHandler Set Table = ActiveSheet.ListObjects(1) With Table If Not Intersect(Selection, .DataBodyRange) Is Nothing Then rng.EntireRow.Offset(1).Resize(Rows.Value - 1).Insert Shift:=xlDown 'Rows需减1,因为当前行已存在 End If End With Exit Sub ErrHandler: Exit Sub Application.ScreenUpdating = True End Sub
优化后实现复制内容的代码
调整@Darren Bartrup-Cook的代码后,已实现需求,可在活动工作表和表格中正常运行:
Sub Test() Dim MyTable As Object Dim RowsToAdd As Long RowsToAdd = Worksheets("CC").Range("B18") '要插入的行数 Set MyTable = ActiveSheet.ListObjects(1) If RowsToAdd > 0 Then If Not Intersect(Selection, MyTable.DataBodyRange) Is Nothing Then Dim SelectedRow As Long SelectedRow = Intersect(Selection, MyTable.DataBodyRange).Row - MyTable.HeaderRowRange.Row Dim RowCounter As Long For RowCounter = SelectedRow To SelectedRow + RowsToAdd - 1 MyTable.ListRows.Add Position:=RowCounter + 1 MyTable.ListRows(RowCounter).Range.Copy Destination:=MyTable.ListRows(RowCounter + 1).Range Next RowCounter End If End If End Sub
内容的提问来源于stack exchange,提问作者Cooper
相关产品推荐
相关产品推荐

