宏复制并粘贴5个最后一列问题

时间:2013-05-10 09:44:15

标签: excel-vba vba excel

我刚刚编写了一个宏来查找包含数据的最后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'选择Range类的方法失败”。有点困惑。如果有人能帮助我,那就太好了。感谢。

注意 - 我忘记提到的其他事情是我要将此宏指定给工作簿前面板上的按钮。我认为这可能会导致问题,因为这是我在宏测试的文档之间可以想到的唯一变量。

2 个答案:

答案 0 :(得分:1)

使用以下代码。希望它可以工作。

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

答案 1 :(得分:1)

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

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