【问题标题】:Macro to copy and paste 5 last columns problems复制和粘贴最后 5 列问题的宏
【发布时间】:2016-08-24 16:06:45
【问题描述】:

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

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

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      使用下面的代码。希望它能工作。

      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
      

      【讨论】:

      • 感谢 Transformer - 这可行,但它似乎只复制第 1 行中的标题。无论如何这可以复制和粘贴整个列?不过再次欢呼。
      • Welcome.yes 它可以做到...请参阅我的另一个答案。
      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多