2013-05-10 65 views
0

我剛剛寫了一個宏來查找包含數據的最後5列,然後複製並粘貼到最後一列前面。我建立了一個僞文檔在這個宏,這樣不會損壞我的當前文件,並得到了宏觀做工精細與下面的代碼:宏複製並粘貼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」,但是如果Im將選項卡名稱更改爲「NFG」並在上面的宏中將此全部替換爲「Sheet2」,則會出現「運行時錯誤」1004「Range類的Select方法失敗」。有點困惑。如果有人能幫助我,那會很棒。謝謝。

注 - 我忘了提及的其他事情是,我要將這個宏分配給工作簿的前面板上的按鈕。我認爲這可能會導致這個問題,因爲這是我可以在我測試過的文檔之間想到的唯一變量。

回答

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 
+0

感謝您的幫助。 – Mortend 2013-05-10 13:40:30

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 
+0

由於變壓器 - 這工作然而似乎只標題行1複製反正這可能複製並粘貼整列?儘管歡呼。 – Mortend 2013-05-10 11:03:22

+0

歡迎。它可以做...看到我的另一個答案相同。 – Transformer 2013-05-10 11:35:56