VBA粘贴至新工作表宏报错:参数数量错误或属性赋值无效
VBA代码编译错误修复方案
错误原因
编译报错wrong number of arguments or invalid property assignment的核心问题在于**Range.Copy方法的语法使用错误**:
Copy方法若指定Destination参数,只能传递目标区域,无法同时附加粘贴类型参数(如xlPasteValues);- 要实现仅粘贴值的需求,需拆分复制与粘贴操作,使用
PasteSpecial方法指定粘贴类型。
修正后的完整代码
Sub PasteContent() ' 源工作表名称:"PasteHere" Dim sourceSheet As Worksheet Set sourceSheet = ThisWorkbook.Sheets("PasteHere") ' 创建新工作表并命名为"Results",放在源工作表之前 Dim destinationSheet As Worksheet Set destinationSheet = Worksheets.Add(Before:=sourceSheet) destinationSheet.Name = "Results" ' 复制源表C:E列的值到新表A:C列 sourceSheet.Range("C:E").Copy destinationSheet.Range("A:C").PasteSpecial Paste:=xlPasteValues ' 清除剪贴板状态,避免弹窗提示 Application.CutCopyMode = False ' 按新表A列(原C列)升序排序,包含表头 destinationSheet.Range("A:C").Sort Key1:=destinationSheet.Range("A:A"), Order1:=xlAscending, Header:=xlYes End Sub
关键修改点说明
- 将原错误的
Copy合并调用拆分为两步:先执行Copy复制源区域,再用PasteSpecial Paste:=xlPasteValues指定仅粘贴值; - 添加
Application.CutCopyMode = False,清除剪贴板的复制状态,避免Excel弹出"是否保留剪贴板内容"的提示; - 确认源工作表名称为
"PasteHere"(代码中与注释一致,若实际工作表名是"Paste Here"(带空格),需修改Sheets("PasteHere")为Sheets("Paste Here"))。
内容的提问来源于stack exchange,提问作者ndg0029
相关产品推荐
相关产品推荐

