0

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

注意 - 我忘记提到的另一件事是,我要将此宏分配给工作簿封面上的一个按钮。我认为这可能会导致问题,因为这是我在我测试过宏的文档之间能想到的唯一变量。

4

2 回答 2

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
于 2013-05-10T10:55:14.543 回答
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
于 2013-05-10T11:35:10.310 回答