Vba 运行时错误-438

Vba 运行时错误-438,vba,excel,Vba,Excel,我有以下代码,在其中我试图将数据从同一工作簿中的一张工作表复制到另一张工作表。当我运行代码时,我得到运行时错误-438 Sub Copy() Sheets("Sheet1").Range("A1:D20").Copy Sheets("Sheet2").Activate Range("E1").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub 请尝试以下代码。您不应该依赖于激活和选择 Sub ZCopy(

我有以下代码,在其中我试图将数据从同一工作簿中的一张工作表复制到另一张工作表。当我运行代码时,我得到运行时错误-438

Sub Copy()

Sheets("Sheet1").Range("A1:D20").Copy

Sheets("Sheet2").Activate

Range("E1").Select

ActiveSheet.Paste

Application.CutCopyMode = False

End Sub

请尝试以下代码。您不应该依赖于激活和选择

Sub ZCopy()
    Sheets("Sheet1").Range("A1:D20").Copy
    Sheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Range("E1")
    Application.CutCopyMode = False
End Sub
有趣的读物


  • 您是否特别需要复制和粘贴?这可能是缓慢和低效的。如果只是将数据从一张图纸复制到另一张图纸,可以将一个范围的值设置为另一个范围的值,从而避免整个操作

    Sheets("Sheet2").Range("E1:H20").Value = Sheets("Sheet1").Range("A1:D20").Value
    
    这会将Sheet2上单元格E1:H20的范围设置为与Sheet1上单元格A1:D20的范围相同的值,这实际上是一种复制和粘贴。我应该补充一点,这只适用于价值观本身


    如果需要复制和粘贴特定格式(或公式),此方法将不起作用。

    它会出现错误,提示“成员已存在于此对象模块派生的对象模块中”。您的项目中似乎已经存在同名的子对象。您无法声明函数,隐藏文档类型模块的成员的。这就是为什么在工作表模块中添加时,
    Copy
    会导致错误。工作表已具有
    Copy
    方法。您需要为函数选择不同的名称,或者在标准模块中声明函数。@ThunderFrame-True。更新。如果OP不需要格式或公式引用,这是一个更简单的解决方案