Excel 用于复制和粘贴最后5列的宏问题

Excel 用于复制和粘贴最后5列的宏问题,excel,vba,Excel,Vba,我刚刚写了一个宏来查找最后5列的数据,然后在最后一列之前复制并粘贴它。为了不损坏当前文件,我在一个虚拟文档中构建了此宏,并使用以下代码使宏正常工作: Sub CopyLastFiveRows() LastColumn = Sheets("Sheet2").Cells.Find("*", [a1], , , xlByColumns, xlPrevious).Column On Error GoTo 0 Sheets("Sheet2").Columns(LastColumn - 4).Resiz

我刚刚写了一个宏来查找最后5列的数据,然后在最后一列之前复制并粘贴它。为了不损坏当前文件,我在一个虚拟文档中构建了此宏,并使用以下代码使宏正常工作:

Sub CopyLastFiveRows()

LastColumn = Sheets("Sheet2").Cells.Find("*", [a1], , , xlByColumns, xlPrevious).Column
On Error GoTo 0

Sheets("Sheet2").Columns(LastColumn - 4).Resize(, 5).Select
Selection.Copy

'   Enter the rest of your paste code here

Sheets("Sheet2").Columns(LastColumn + 1).Select
ActiveSheet.Paste

End Sub
当我在实际工作文件中剪切并粘贴上述内容时,如果数据选项卡名称为“Sheet2”,则效果良好。但是,如果我要将选项卡名称更改为“NFG”,并在上面的宏中将所有“Sheet2”替换为该名称,则会出现“运行时错误'1004'范围类的选择方法失败”。有点困惑。如果有人能帮我,那就太好了。谢谢


注意-我忘了提到的另一件事是,我将把这个宏分配给工作簿前页上的一个按钮。我认为这可能是造成问题的原因,因为这是我在测试宏的文档之间唯一能想到的变量。

使用以下代码。希望它能起作用

Sub CopyLastFiveColumns()

        With ThisWorkbook.Worksheets("NFG")                 
             .Range(.Cells(1, .Columns.Count).End(xlToLeft), .Cells(1, .Columns.Count).End(xlToLeft).Offset(, -4)).Copy .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1)
        End With

 End Sub

使用以下代码复制最后五列的所有行

Sub CopyLastFiveColumns()

    Dim lngLastRow     As Long

    With ThisWorkbook.Worksheets("NFG")
         lngLastRow = .Range("A" & .Rows.Count).End(xlUp).Row
         .Cells(1, .Columns.Count).End(xlToLeft).Offset(, -4).Resize(lngLastRow, 5).Copy .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1)
    End With

End Sub

感谢Transformer-这很有效,但是它似乎只复制了第1行中的标题。无论如何,这可以复制并粘贴整个列吗?再次干杯。欢迎。是的,可以做到……请看我的另一个答案。