将数据从工作表复制到另一个工作表的下一行

问题描述 投票:0回答:2

我是 VBA 新手,我正在尝试编写一个宏来将数据从 Product File 复制到 FileMaster。我的问题是我希望将数据复制到 FileMaster 中的下一个空行。 例如,FileMaster 填充了单元格 C50 之前的数据,我希望从单元格 C51 复制我的数据,但正在努力解决这个问题。

我的代码如下,但它不断从单元格 C2 复制数据

Dim LastRow As String
        FileMaster.Activate
        LastRow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Workbooks("Product File.xlsx").Worksheets("data").Range("A2:N" & Range("A" & Rows.Count).End(xlUp).Row).Copy Workbooks("FileMaster.xlsx").Worksheets("new_template").Range("C2:N" & LastRow)
        Application.CutCopyMode = False   

非常感谢对此的任何帮助。非常感谢。

excel vba outlook copy-paste
2个回答
0
投票
Range("C2:N" & LastRow) 

始终从 C2 开始

你必须使用

Range("C" & LastRow) 

但是您最好不要依赖任何“活动”对象(无论是工作表还是工作簿)并使用对象直接引用

Dim LastRow As String
    With FileMaster.Worksheets("new_template")
        LastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
    End With
    With Workbooks("Product File.xlsx").Worksheets("data")
        .Range("A2:N" & .Range("A" & Rows.Count).End(xlUp).Row).Copy FileMaster.Worksheets("new_template").Range("C" & LastRow)
        Application.CutCopyMode = False
    End With

0
投票

哦,我找到了解决方案=))))对于任何遇到同样问题的人,您可以参考我的答案,如下

Dim LastRow As String
    FileMaster.Activate
    LastRow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    Workbooks("Product File.xlsx").Worksheets("data").Range("A2:N" & Range("A" & Rows.Count).End(xlUp).Row).Copy Workbooks("FileMaster.xlsx").Worksheets("new_template").Range("C" & LastRow + 1)
    Application.CutCopyMode = False    'cancel the copy mode
© www.soinside.com 2019 - 2024. All rights reserved.