Table of contents
我们在工作中遇到的最常见的问题之一是 在VBA中复制和粘贴 是指 运行时间错误1004 : 范围类的PasteSpecial方法失败了 在这篇文章中,我将告诉你这个错误背后可能的原因是什么,以及如何解决这些问题,并附有适当的例子和说明。
下载实践工作手册
下载这本练习手册,在阅读本文时进行练习。
PasteSpecial Method Failed.xlsm范围类的PasteSpecial方法失败了:原因和解决方案
不要再拖延了,让我们进入我们的主要讨论,那就是,这个错误背后可能的原因是什么,以及如何解决这些问题。
原因1:访问PasteSpecial方法而不复制任何东西
这是错误背后最常见的原因。 就是说,试图访问 粘贴专用 方法,而没有复制任何东西。
为了清楚地了解它,请检查以下内容 VBA 代码。
⧭ VBA代码。
Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
在这里,我们使用了 粘贴专用 的方法 VBA 所以Excel会显示一个 运行时错误1004 当你运行它时。
⧭解决方案。
要解决这个问题,首先,你需要复制一个单元格区域,然后访问 粘贴专用 方法。
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
当你运行这段代码时,它将粘贴该范围的公式 B3:B5 活动的工作表的数据到选定的范围。
阅读更多。 粘贴工作表类的特殊方法失败了(原因& 解决方案)
原因2:访问PasteSpecial方法时出现拼写错误
这是错误背后的另一个常见原因。 也就是说,要访问 粘贴专用 方法的任何参数中存在拼写错误。
请看以下内容 VBA 这里我们在论证中犯了一个拼写错误 xlPasteAll .
⧭ VBA代码。
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial 粘贴:=xlPaseAll End Sub
当你运行这段代码时,你会得到 运行时错误1004 .
⧭解决方案。
解决办法很简单,我相信你已经猜到了。 只要确保所有论据的拼写都是正确的。
而这个错误将自动消失。
阅读更多。 如何在Excel中使用粘贴特殊命令(5种合适的方法)
类似读物
- Excel VBA:复制范围到另一个工作簿
- 用Excel VBA复制和粘贴数值到下一个空行(3个例子)。
- 在Excel中应用VBA PasteSpecial并保持源格式化
- 如何在Excel的多个单元格中复制相同的值(4种方法)
- Excel VBA根据标准将行复制到另一个工作表的方法
原因3:复制后打开一个新的工作簿,取消了复制/粘贴模式
这是错误背后的另一个重要原因。 那就是在粘贴之前做一些取消复制/粘贴模式的事情。
请看下面的代码,以便清楚地理解。
⧭ VBA代码。
Sub PasteSpecial_Method_of_Range_Class_Failed() Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1") ... Range("B3:B5") ... Selection.PasteSpecial Paste:=xlPasteAll结束子程序
在这里,我们已经复制了范围 B3:B5 从 第1张 的一个工作簿,名为 工作手册1 .
然后我们创建了一个新的工作簿,名为 工作手册2 在同一文件夹中,并试图将复制的范围粘贴到范围的 B3:B5 的 第1张 该工作簿的。
但当我们运行这段代码时,它将显示一个 范围类的PasteSpecial方法失败了 错误,因为在我们创建新工作簿的时候, 复制/粘贴模式 将被取消。
⧭解决方案。
要解决这个问题,首先,写下几行代码,以创建名为 "A "的新工作簿。 工作手册2 .
然后插入这几行,以激活 工作手册1 并从中复制所需的范围。
最后,激活 工作手册2 并将复制的范围粘贴到那里。
Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Worksheets("Sheet1").Range("B3:B5") Selection.PasteSpecial Paste:=xlPasteAll End Sub
运行这段代码,它将复制范围 B3:B5 从 第1张 的 工作手册1。
并将其粘贴到 第1张 的新创建的工作簿称为 工作手册2 .
⧭ 预防措施。
很明显,不要忘记保持 工作手册1 在运行代码时打开。
阅读更多。 如何在没有Macros的情况下禁用Excel中的复制和粘贴(有2个标准)
原因4:将Application.CutCopyMode改为False,取消了复制/粘贴模式。
最后,可能还有另一个原因导致错误的发生。 我们可以关闭 Application.CutCopyMode 在访问之前,错误地将 粘贴专用 方法。
虽然这不是一个很常见的做法,但有时我们在工作中要处理长线的时候还是会这样做。
请看下面的代码来清楚地了解它。 这里我们复制了范围 B3:B5 ,但取消了 拷贝模式(CutCopyMode 在粘贴之前。
⧭ VBA代码。
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5") .PasteSpecial Paste:=xlPasteAll End Sub
当你运行该代码时,它将显示 范围类的PasteSpecial方法失败了 错误。
⧭解决方案。
我想现在你们都已经猜到了解决方案。 其实很简单。 只要从代码中删除那行把 剪切复制 模式关闭。
所以,正确的 VBA 代码将是。
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5") PasteSpecial Paste:=xlPasteAll End Sub
它将复制该范围 B3:B5 并将其粘贴在 D3:D5 没有任何麻烦。
阅读更多。 VBA粘贴特技在Excel中复制数值和格式(9个例子)
需要记住的事情
在这里,我只展示了你在工作中可能遇到的问题。 粘贴专用 方法在 VBA。 如果你想知道 粘贴专用 方法的详细情况,请访问 此链接 .
总结
因此,简而言之,这些是可能导致 运行时错误1004:PasteSpecial Method od Range Class Failed 我希望你已经清楚地理解了所有的要点,这些将对你今后的工作有很大的帮助。 你还知道其他的原因吗? 你有什么问题吗? 请随时问我们。 不要忘记访问我们的网站 ǞǞǞ 以了解更多帖子和更新。