我如何使用pasteSpecial

时间:2019-07-16 14:28:51

标签: excel vba

我似乎无法使用PasteSpecial /知道在哪里添加它。我想将作业输入表中的某些日期(日期,名称,工作完成等)剪切并粘贴到其他表中(按下提交按钮后该字段将清除),我希望目标表每个向下移动一行时间,因此它将所有信息收集在一张纸上。我的宏确实可以正常工作,我已经将其分配给了提交按钮,但是它也移动了单元格格式,任何人都可以建议我需要做什么吗? PS我是一个完整的VBA初学者..!

下面是我当前的代码,我也尝试使用范围而不是复制粘贴来解决格式随数据移动的问题,但是我无法使其在目标表上向下移动,范围是一个更好的选择解决复制和粘贴的问题? 在此先感谢任何可以提供帮助的人

Sub submit()
'
' Submit Macro
'

'
    Dim wsCopy As Worksheet
    Dim wsDest As Worksheet
    Dim lCopyLastRow As Long
    Dim lDestLastRow As Long

    Set wsCopy = Workbooks("HEATHER.xlsx").Worksheets("JOB")
    Set wsDest = Workbooks("HEATHER.xlsx").Worksheets("2019")
    Range("C5:G5").Select
    Selection.Cut
    Sheets("2019").Select
    CopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "B").End(xlUp).Row
    Selection.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveWorkbook.Worksheets(1).Activate
End Sub

1 个答案:

答案 0 :(得分:1)

一些注意事项。尽量避免使用.Select.Activate。您也无法在代码中设置lDestLastRow。也不确定如何/为什么拥有lCopyLastRow

请参阅以下代码(未经测试)。应该是您要寻找的。

Sub submit()

    Dim wsCopy As Worksheet
    Dim wsDest As Worksheet
    Dim lCopyLastRow As Long
    Dim lDestLastRow As Long

    Set wsCopy = Workbooks("HEATHER.xlsx").Worksheets("JOB")
    Set wsDest = Workbooks("HEATHER.xlsx").Worksheets("2019")

    lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "B").End(xlUp).Row
    lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row + 1

    wsCopy.Range("C5:G5").Copy
    wsDest.Range("A" & lDestLastRow).PasteSpecial xlValues

    wsCopy.Range("C5:G5").ClearContents
    Application.CutCopyMode = False

    ActiveWorkbook.Worksheets(1).Activate

End Sub