繁体   English   中英

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

[英]Macro to copy and paste 5 last columns problems

我刚刚编写了一个宏来查找带有数据的最后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

当我剪切并粘贴上面的if如果在我的实际工作文件中,如果数据选项卡名称是“Sheet2”,它可以正常工作,但是如果我将选项卡名称更改为“NFG”并在上面的宏中用此替换所有“Sheet2”我得到一个“运行时错误'1004'选择Range类的方法失败”。 有点困惑。 如果有人能帮助我,那就太好了。 谢谢。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM