Excel 尝试复制和粘贴一些变量数据

Excel 尝试复制和粘贴一些变量数据,excel,vba,Excel,Vba,我正在处理一个包含大量宏的现有excel文件,希望在不复制空白单元格的情况下将变量数据从5个不同的工作表复制并粘贴到5个其他工作表。这是我到目前为止所做的,并给出运行时错误1004: Sub Macro1() Sheets("Hulp_IO").Select Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("IO").Selec

我正在处理一个包含大量宏的现有excel文件,希望在不复制空白单元格的情况下将变量数据从5个不同的工作表复制并粘贴到5个其他工作表。这是我到目前为止所做的,并给出运行时错误1004:

Sub Macro1()

    Sheets("Hulp_IO").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("IO").Select
    Range("B2").Select
    ActiveSheet.Paste

    Sheets("Hulp_Modbus_PMSX_Lees_Tags").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Modbus_Lees_Tags_PMSX").Select
    Range("A2").Select
    ActiveSheet.Paste

    Sheets("Hulp_Modbus_PMSX_Schrijf_Tags").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Modbus_Schrijf_Tags_PMSX").Select
    Range("A2").Select
    ActiveSheet.Paste

    Sheets("Hulp_Modbus_Pakscan_Lees_Tags").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Modbus_Lees_Tags_PackScan").Select
    Range("A2").Select
    ActiveSheet.Paste

    Sheets("Hulp_Modbus_Pakscan_Schrijf_Tag").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Modbus_Schrijf_Tags_PackScan").Select
    Range("A2").Select
    ActiveSheet.Paste
    Sheets("Start").Select

End Sub

下面是您的代码,主要是因为
.Select
命令非常贪婪,现在可读性更强

我不知道您的代码在哪一行出现错误,但这是一个重要信息,所以即使这解决了您的问题,也要添加它!;)

代码如下:

Sub Nito_Nascimento()
Dim WsFrom As Worksheet, _
    WsTo As Worksheet

    Set WsFrom = Sheets("Hulp_IO")
    Set WsTo = Sheets("IO")

    WsFrom.Range("A1", WsFrom.Range("A" & WsFrom.Rows.Count).End(xlUp)).Copy
    WsTo.Range("B2").PasteSpecial _
                        Paste:=xlPasteValues, _
                        Operation:=xlNone, _
                        SkipBlanks:=True, _
                        Transpose:=False

    Set WsFrom = Sheets("Hulp_Modbus_PMSX_Lees_Tags")
    Set WsTo = Sheets("Modbus_Lees_Tags_PMSX")
    Application.CutCopyMode = False
    WsFrom.Range("A1", WsFrom.Range("A" & WsFrom.Rows.Count).End(xlUp)).Copy
    WsTo.Range("A2").PasteSpecial _
                        Paste:=xlPasteValues, _
                        Operation:=xlNone, _
                        SkipBlanks:=True, _
                        Transpose:=False

    Set WsFrom = Sheets("Hulp_Modbus_PMSX_Schrijf_Tags")
    Set WsTo = Sheets("Modbus_Schrijf_Tags_PMSX")
    Application.CutCopyMode = False
    WsFrom.Range("A1", WsFrom.Range("A" & WsFrom.Rows.Count).End(xlUp)).Copy
    WsTo.Range("A2").PasteSpecial _
                        Paste:=xlPasteValues, _
                        Operation:=xlNone, _
                        SkipBlanks:=True, _
                        Transpose:=False

    Set WsFrom = Sheets("Hulp_Modbus_Pakscan_Lees_Tags")
    Set WsTo = Sheets("Modbus_Lees_Tags_PackScan")
    Application.CutCopyMode = False
    WsFrom.Range("A1", WsFrom.Range("A" & WsFrom.Rows.Count).End(xlUp)).Copy
    WsTo.Range("A2").PasteSpecial _
                        Paste:=xlPasteValues, _
                        Operation:=xlNone, _
                        SkipBlanks:=True, _
                        Transpose:=False

    Set WsFrom = Sheets("Hulp_Modbus_Pakscan_Schrijf_Tag")
    Set WsTo = Sheets("Modbus_Schrijf_Tags_PackScan")
    Application.CutCopyMode = False
    WsFrom.Range("A1", WsFrom.Range("A" & WsFrom.Rows.Count).End(xlUp)).Copy
    WsTo.Range("A2").PasteSpecial _
                        Paste:=xlPasteValues, _
                        Operation:=xlNone, _
                        SkipBlanks:=True, _
                        Transpose:=False

    Application.CutCopyMode = False
    Sheets("Start").Activate
    Set WsFrom = Nothing
    Set WsTo = Nothing

End Sub

除了“运行时错误”之外,它还会说什么吗?错误出现在哪一行代码上?嗨,R3uK,谢谢你的帮助,我再也没有错误了,它出现在第一个“ActiveSheet.Paste”上,但现在数据没有粘贴在一起,但每次都会跳21个单元格,你有什么想法吗?对不起,我的英语不好!它跳跃细胞。。。我不知道这是从哪里来的。。。因为我们每次都应该粘贴在不同的工作表上,但每次都是从
A2
开始,所以我看不出会发生什么,你能更精确地描述跳跃吗?或者做一个屏幕截图?抱歉,这是我的错误,第一个模块中的de代码与其他de代码有冲突,因此我创建了第二个模块,并添加了一个新的命令按钮来启动此宏。有没有办法更改代码以选择一些特定的项目,例如:项目1到10转到Sheet1,项目11到20转到Sheet2?如果按项目,您是指行,这是您需要修改的行:
WsFrom.Range(“A1”,WsFrom.Range(“A”&WsFrom.Rows.Count).End(xlUp)).Copy
但您必须复制它才能复制/粘贴第一部分,然后复制/粘贴第二部分