我刚刚编写了一个宏来查找包含数据的最后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类的方法失败”。有点困惑。如果有人能帮助我,那就太好了。感谢。
注意 - 我忘记提到的其他事情是我要将此宏指定给工作簿前面板上的按钮。我认为这可能会导致问题,因为这是我在宏测试的文档之间可以想到的唯一变量。
答案 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