复制命名范围并将其粘贴到另一个工作表中,而不会覆盖数据

时间:2019-08-08 15:07:28

标签: excel vba

我正在尝试将范围从sheet1的特定单元格复制到sheet2中的特定单元格。

但是,当我仅使用.PasteSpecial数据时,就会被覆盖。这是因为sheet1的范围并不总是相同的大小,并且可能导致它覆盖sheet2上的数据。我想将工作表1中的数据粘贴到工作表2上,但是如果工作表1上的范围大于工作表2上的范围,则必须先在工作表2上插入行,这样它才不会覆盖其他数据。

以下是我尝试过的一些示例代码(我在VBA中没有经验,所以请您输入任何奇怪的代码):

Sub ResizeNamedRange()
    Dim xWb As Workbook
    Dim xNameString As String
    Dim xName As Name
    Dim row_count As Integer


    Set xWb = Application.ActiveWorkbook

    xNameString = "Destination_A"
    Set xName = xWb.Names.Item(xNameString)
    Set row_count = xWb.Names.Item(xNameString).Rows.Count


    If row_count <= 1 Then
        Sheets("Hours").range("A9:E14").PasteSpecial xlPasteValues
    End If

End Sub

但是,我不断收到诸如Object required之类的错误。有谁知道如何做到这一点?我感谢我能获得的所有帮助!

1 个答案:

答案 0 :(得分:0)

两个初始提示-仅在将值分配给变量或属性时使用Set语句。参见:

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/set-statement

此外,您不能在Rows.Count上使用Names.Item。相反,您可以将其替换为:

xNameString = "Destination_A"
Set xName = xWb.Names.Item(xNameString)
row_count = Range(xName.RefersTo).Rows.Count