将范围从一张纸复制到另一张纸时1004错误

时间:2019-03-26 10:18:41

标签: excel vba

我可以使用belwo代码将CopyFrom.xlsx中的范围复制到CopyTo.xlsx中:

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 个答案:

答案 0 :(得分:5)

因为.Clear退出剪切/复制模式并设置Application.CutCopyMode = False。如果您尝试.Paste,则.Clear之后没有要复制的内容,这会导致您得到错误。

只需避免使用.Copy.Paste之间的任何代码来避免任何迭代。

答案 1 :(得分:4)

如果手动执行此操作,则在复制范围然后清除另一个范围时,副本将丢失。

因此,您要在复制和粘贴之后或之前清除。另一种方法可能是Range.Value = Range.Value,这是一个一步的过程,所以无论您做什么都无所谓。

答案 2 :(得分:0)

首先清除范围:

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

代码运行速度更快