2017-10-19 364 views
1

我想写一个宏,从一张名为“报告”(数字将明显改变)的工作表中复制同一行信息,并将其粘贴到工作表“数据”中在第一行有标题。我试图让值粘贴在下一个空行,我似乎无法让它正常工作。VBA复制和粘贴行到下一个空行

我试图将各种问题的代码拼凑在一起,但无法弄清楚。

这里是我的代码:

Sub Insert_Data() 
' 
' Insert_Data Macro 
Sheets("Report").Range("B9:F9").Copy 
Sheets("Data").Range("A1").PasteSpecial Paste:=xlPasteValues, 
Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End Sub 
Sub PSData_Transfer() 

Sheets("Report").Range("B9:F9").Copy 

Dim lastrow As Long 
lastrow = Sheets("Data").Range("A65536").End(xlUp).Row 

Sheets("Data").Activate 
Cells(lastrow + 1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 


End Sub 

再次感谢您的帮助!

+0

在你的第二个宏,它怎么不起作用?看起来没问题。 – SJR

+0

当它粘贴这些值时,它将它们粘贴到第59行而不是直接在标题下 – jh144

+0

@SJR它从第59行完全正常工作,但是我无法弄清楚为什么它的起始值已经下降 – jh144

回答

1

您可能需要对此进行一些修改才能使用您的代码,但可以随意使用我在当前工作表中使用的我的代码,它的工作原理非常完美!

Sub Insert_Data() 

    For R = LR To 2 Step -1 ' Change the 2 in "To 2" to the row just below your header, 
           ' but typically row 2 is the second cell under header anyways 
     Call CopyTo(Worksheets(2).Range("B" & R & ":C" & R), Worksheets(1)Range("A:B")) 
    Next R 

End Sub 

Private Function CopyTo(rngSource As Range, rngDest As Range) 

    LR = rngDest.cells(Rows.Count, 1).End(xlUp).row 

    rngDest.cells(LR + 1, 1).value = rngSource.cells(1, 1).value 
    rngDest.cells(LR + 1, 2).value = rngSource.cells(1, 2).value 

End Function 

我不喜欢用复制方法,它是缓慢的,它喜欢复制所有额外jargin,其中作为所获得的价值是更快,它仅检索值