我有这个工作簿: 我需要一个宏按钮,我的用户可以点击“点击这里复制”,然后我需要一个代码复制第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
但每次单击该按钮时,它都会将行粘贴到现有行上。
请帮助。
答案 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