通过按下宏按钮将行从一个工作表复制并插入另一个工作表

时间:2012-08-07 17:13:22

标签: excel-vba vba excel

我有这个工作簿: 我需要一个宏按钮,我的用户可以点击“点击这里复制”,然后我需要一个代码复制第5-25行的标题为“TC-Star Here”的表格,我需要复制的行到插入(我需要粘贴的行不自动删除以前的那些,所以插入的行必须将前面的行向下移动)到另一个名为“时间卡”的表中。插入的行,我需要从单元格A1开始代码插入它们。因此,每次单击宏按钮时,都会复制行,并插入前一个未修改/删除的数据。

到目前为止我有这个代码:

Sub CopyInfo()
On Error GoTo Err_Execute
    Sheet2.Range("A1:F11").Value = Sheet1.Range("A1:F11").Value
    Sheet1.Range("A1:F11").Copy
    Sheet2.Range("A1").InsertCopiedCells
Err_Execute:
    MsgBox "All have been copied!"

End Sub

但每次单击该按钮时,它都会将行粘贴到现有行上。

请帮助。

4 个答案:

答案 0 :(得分:5)

这是你在尝试的吗?

Sub CopyInfo()
    On Error GoTo Err_Execute

    Sheet1.Range("A1:F11").Copy
    Sheet2.Range("A1").Rows("1:1").Insert Shift:=xlDown

Err_Execute:
    If Err.Number = 0 Then MsgBox "All have been copied!" Else _
    MsgBox Err.Description
End Sub

答案 1 :(得分:1)

这一行

Sheet2.Range("A1:F11").Value = Sheet1.Range("A1:F11").Value

将Sheet2上的那些单元格的值设置为Sheet1上的值 - 也就是说,它将值复制并替换那里的值。那么,你正在进行复制插入操作。

删除/注释掉该行,看看会发生什么。

另外,我认为复制区域和粘贴区域的大小必须相同。尝试制作Sheet2.Range("A1:F11").InsertCopiedCells

答案 2 :(得分:1)

简单 - 使用循环(另外,关闭ScreenUpdating以大大加快处理时间) 以下内容将名为“Sheet2”的工作表中的所有行复制到名为“Sheet1”的工作表中的同一行

Sub CopyOver()
    Application.ScreenUpdating = False
    For j = 1 To 1560 'Or however many rows u have
        On Error GoTo Err_Execute
        Sheets("Sheet2").Rows(j).Copy
        Sheets("Sheet1").Rows(j).Insert Shift:=xlDown
    Next j
    Application.ScreenUpdating = True
    Err_Execute:
        If Err.Number = 0 Then MsgBox "All have been copied!" Else _
        MsgBox Err.Description
End Sub

答案 3 :(得分:0)

Sub Test()
    With ActiveSheet
    lastrow = .Cells(.rows.Count, "A").End(xlUp).Row
    lastrow = lastrow - 1
    MsgBox lastrow
    End With
End Sub