【问题标题】:VBA Paste Data After Last Row Issue最后一行问题后的VBA粘贴数据
【发布时间】:2017-03-28 06:59:10
【问题描述】:

我正在编译来自多个工作表的数据以放置在一张合并表上。第一张纸很容易,因为我可以粘贴整张纸,但是之后它变得很棘手,因为我只需要 A5-H###,因为我不再需要标题。然后我需要将此信息粘贴到之前粘贴的底部。对于“范围(lastRow).Select”,我得到一个对象范围“_Global”失败。问题是当我在调试器中查看它时,它会得出正确的行号。我究竟做错了什么?

Sheets(1).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Consolidation Sheet").Select
Range("A1").Select
ActiveSheet.Paste
Sheets(2).Select
Range("A5:A925").Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Consolidation Sheet").Select
Range("A5").Select
lastRow = ActiveSheet.Cells(Rows.Count, "E").End(xlUp).Row + 1
Range(lastRow).Select
ActiveSheet.Paste

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您需要以下形式的Range 声明(例如):

    Range("A1").Select 
    

    因此,既然您已经获得了行号 (lastRow),您只需添加列引用即可:

    Range("E" & lastRow).Select
    

    额外信息

    Avoid using Select 直接引用您要处理的工作表/范围

    Sheets(1).Cells.Copy Destination:=Sheets("Consolidation Sheet").Range("A1")
    
    With Sheets(2)
        .Range(.Range("A5:A925"),.Range("A5:A925").End(xlToRight)).Copy
    End With
    
    With Sheets("Consolidation Sheet")
        .Cells(.Rows.Count, "E").End(xlUp).Offset(1,0).PasteSpecial
    End With
    

    【讨论】:

    • 非常感谢。我最初尝试过 Range(lastrow, "A") 并且显然离成功很近,但也离成功很远。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多