1004 Ошибка при копировании диапазона с одного листа на другой лист - PullRequest
2 голосов
/ 26 марта 2019

Я могу скопировать диапазон из CopyFrom.xlsx в CopyTo.xlsx, используя код belwo:

Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").Clear
Workbooks("CopyFrom.xlsx").Worksheets("Sheet1").Range("A1:A10").Copy
Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").PasteSpecial Paste:=xlPasteValues

Однако, когда я помещаю оператор Clear на второе место, он выдает ошибку 1004

Workbooks("CopyFrom.xlsx").Worksheets("Sheet1").Range("A1:A10").Copy
Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").Clear
Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").PasteSpecial Paste:=xlPasteValues

Почему это происходит?

Ответы [ 3 ]

5 голосов
/ 26 марта 2019

Поскольку .Clear выходит из режима вырезания / копирования и устанавливает Application.CutCopyMode = False.Если вы попытаетесь набрать .Paste, то после .Clear ничего не будет выбрано для копирования, что приведет к полученной вами ошибке.

Просто избегайте любого кода между .Copy и .Paste, чтобы избежать любых ошибок.

4 голосов
/ 26 марта 2019

Если вы сделаете это вручную, при копировании диапазона и затем очистке другого диапазона, копия будет потеряна.

Итак, вы можете очистить после или до копирования и вставки.Другой способ может быть Range.Value = Range.Value - это одностадийный процесс, поэтому не имеет значения, что вы делаете.

0 голосов
/ 26 марта 2019

Сначала очистите диапазон:

Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").Clear

Затем скопируйте >> Вставить

Workbooks("CopyFrom.xlsx").Worksheets("Sheet1").Range("A1:A10").Copy
Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").PasteSpecial Paste:=xlPasteValues

Или вы можете напрямую использовать:

Workbooks("CopyTo.xlsx").Worksheets("Sheet1").Range("B3:B14").Value = Workbooks("CopyFrom.xlsx").Worksheets("Sheet1").Range("A1:A10"). Value

Что быстреево время выполнения кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...