Excel 复制/粘贴到最后一行VBA代码不存在';当列中填充的行数少于2行时,将无法工作

Excel 复制/粘贴到最后一行VBA代码不存在';当列中填充的行数少于2行时,将无法工作,excel,vba,copy-paste,Excel,Vba,Copy Paste,我是VBA的新手,所以请容忍我 我正在尝试编写一个VBA代码,帮助我将数据从多列复制并粘贴到不同工作表上的一列中 我当前的代码能够将数据复制到最后一个填充的行,并在每次迭代的最后一个填充的条目之后粘贴它。但是,当后续列为空或只有一行已填充时,代码将完全停止运行。有人能帮我弄清楚为什么会这样吗 Sub FirstVBA() Dim Criteria As Integer Criteria = Range("G1").Value If Criteria <> 0

我是VBA的新手,所以请容忍我

我正在尝试编写一个VBA代码,帮助我将数据从多列复制并粘贴到不同工作表上的一列中

我当前的代码能够将数据复制到最后一个填充的行,并在每次迭代的最后一个填充的条目之后粘贴它。但是,当后续列为空或只有一行已填充时,代码将完全停止运行。有人能帮我弄清楚为什么会这样吗

Sub FirstVBA()
    Dim Criteria As Integer
    Criteria = Range("G1").Value

    If Criteria <> 0 Then
        Worksheets("Sheet2").Range("A2:A" & Rows.Count).Clear

        Worksheets("Sheet1").Range("B4", Range("B4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("C4", Range("C4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("D4", Range("D4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("E4", Range("E4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("F4", Range("F4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("G4", Range("G4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("H4", Range("H4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

        Worksheets("Sheet1").Range("I4", Range("I4").End(xlDown)).Copy
        Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

    End If
End Sub
Sub-FirstVBA()
将标准设置为整数
标准=范围(“G1”)。值
如果条件为0,则
工作表(“Sheet2”)。范围(“A2:A”和行数)。清除
工作表(“表1”)。范围(“B4”,范围(“B4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“C4”,范围(“C4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“D4”,范围(“D4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“E4”,范围(“E4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“F4”,范围(“F4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“G4”,范围(“G4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“H4”,范围(“H4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
工作表(“表1”)。范围(“I4”,范围(“I4”)。结束(xlDown))。副本
工作表(“Sheet2”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(1,0)。粘贴特殊xlpasteValue
如果结束
端接头

该问题是由于复制时xlDown导致的。看,如果你从上面的链接中得到了答案,问题其实是怎么做而不是怎么做。因为很多人都问过这个问题,我敢肯定,这将是一个重复。我想你可以删除这个问题。