2013-12-13 4 views
1

Я пытаюсь написать очень простой макрос, который копирует значения из одного листа и вставляет их в другой. Сначала макрос работает, затем начинает возвращать сообщение Runtime error '1004' Application-defined or object defined error. Код:Сообщение об ошибке «Ошибка выполнения» 1004 «Определенная приложением или объектная ошибка при запуске макроса копирования/вставки

Sub CopyPaste() 
' 
' CopyPaste Macro 

    Sheets("Data Input").Range("C2:C11").Copy 
    Sheets("Results").Range("A8").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=True 
    Application.CutCopyMode = False 
End Sub 
+0

Пытались ли вы с оставлением из '.END (xlDown) .offset (1, 0)'? – pnuts

+0

Возможный дубликат [Ошибка времени выполнения: 1004 Диапазон объекта '\ _Worksheet' не удалось] (http://stackoverflow.com/questions/16927378/run-time-error-1004-range-of-object-worksheet-failed) и http://stackoverflow.com/q/17980854/62576 –

+0

Привет, спасибо, я попробовал оставить «.End (xlDown) .Offset (1, 0)», но эта часть кода должна гарантировать, что данные вставляются в следующую пустую строку, а не вставляют прямо поверх старых данных, поэтому избавление от нее не является окончательным решением. Он работает, когда я удаляю это, затем работает, когда я возвращаю его обратно в код, а затем перестает работать снова. Очень расстраивает! – user3097891

ответ

1

Вместо начинать с верхнего ряда и спускаясь на дно, лучше это сделать наоборот - начать в нижней части листа и идти вверх, пока не найдете первые данные ряд. Иначе вы столкнетесь с проблемой, когда у вас будет только одна или нулевая строка данных (тогда будет возвращена последняя строка листа), или в случае пробелов в данных вы получите первый пробел.

Поэтому попробуйте этот код вместо:

Sub CopyPaste() 
    Sheets("Data Input").Range("C2:C11").Copy 
    Sheets("Results").Cells(Sheets("Results").Rows.count,1).End(xlUp) _ 
     .Offset(1).PasteSpecial Paste:=xlPasteValues Transpose:=True 
    Application.CutCopyMode = False 
End Sub 
Смежные вопросы