2013-05-10 9 views
0

Я только что написал макрос, чтобы найти последние 5 столбцов с данными, а затем скопируйте и вставьте его в предыдущий столбец. Я построил этот макрос в фиктивный документ, чтобы не коррумпированной моего текущего файла и получил макрос работает отлично на код ниже:Macro для копирования и вставки 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 не удалось ». Немного смущен. Если бы кто-нибудь мог мне помочь, это было бы здорово. Благодарю.

ПРИМЕЧАНИЕ. Другое дело, что я забыл упомянуть, что я собираюсь назначить этот макрос кнопке на переднем листе книги. Я думаю, что это может вызвать проблему, поскольку это единственная переменная, о которой я могу думать между документами, на которых я тестировал макрос.

ответ

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

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

Благодаря Transformer - это работает, однако, кажется, только скопировать заголовки в строке 1. В любом случае это может скопировать и вставить весь столбец ? Еще раз приветствует. – Mortend

+0

Welcome.yes это может быть сделано ... См. Мой другой ответ за то же самое. – Transformer

Смежные вопросы