2016-12-30 4 views
0

Я пытаюсь скопировать ряд ячеек в один столбец и перенести их выше в виде строки. Проблема, с которой я столкнулась, состоит в том, чтобы попытаться увеличить строки (45:45), где копируются каждая строка, иначе все строки будут перезаписаны. Когда я запускаю макрос я получаю ошибку синтаксиса на Destination: = Range линияExcel Macro Row increment

Range("A53:A63").Copy 
Range("A52").Select 
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ 
    , Transpose:=True 
Range("A53:A63").Select 
Application.CutCopyMode = False 
Selection.EntireRow.Delete 
Rows("52:52").Cut 
Rows("45:45").Select 
Destination:=Range("A" & Rows.Count).End(xlDown).Offset(1, 0) 
Selection.Insert 
+1

С Rows.Count вы начинаете снизу, поэтому нет места, где можно пойти с xlDown. Изменить 'End (xlDown)' на 'End (xlUp)' –

+1

Кроме того, я настоятельно рекомендую вам [избегать использования '.Select /' .Activate'] (https://stackoverflow.com/questions/10714251/how-to- избегать использования-select-in-excel-vba-macros), так как это может вызвать непредвиденные проблемы, но также может значительно сократить и подтянуть ваш код. – BruceWayne

+0

@ScottCraner - Даже с вашим предложением я все еще получаю синтаксическую ошибку в строке назначения – Tori

ответ

0

Хотя я не очень понимаю, что вы пытаетесь сделать, но, возможно, это помогает.

Sub test() 
Range("A53:A63").Copy 
Range("A52").Select 
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ 
    , Transpose:=True 
Range("A53:A63").Select 
Application.CutCopyMode = False 
Selection.ClearContents 
Rows("52:52").Copy 
    Range("A1").End(xlDown).Offset(1, 0).Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
End Sub