VBA:粘贴范围清除后粘贴功能导致1004错误

Posted

技术标签:

【中文标题】VBA:粘贴范围清除后粘贴功能导致1004错误【英文标题】:VBA: Paste function causes 1004 error after the paste range is cleared 【发布时间】:2019-02-20 07:04:54 【问题描述】:

当我尝试将一些数据从一张表(“导入”)复制到另一张表(“TIs”)时,我的代码有问题。第二张表中有一个范围,在复制数据之前将其清除。当我尝试粘贴它时,我得到一个

错误 1004“应用程序定义或对象定义错误”

Sub Data()
Sheets("Import").Cells.ClearContents
Sheets("TIs").Range("A2:F10000").ClearContents

Dim sPath As String 'Input file path
Dim k As Integer
Dim CopyData

CopyData = 10

For k = 1 To 1 'For now k=1
    sPath = ThisWorkbook.Path & "\InputData\Data (" & k & ").csv"                           'defines a path to csv file
    copyDataFromCsvFileToSheet sPath, ",", "Import"                                         'imports data from csv file to "Import" Sheet (this is another functions, it works perfectly)
    DataLength = Application.WorksheetFunction.CountA(Sheets("Import").Range("B:B"))        'defines last row where are imported data
    Sheets("Import").Range(Cells(CopyData + 1, 2), Cells(DataLength, 7)).Copy Sheets("TIs").Range("A2")     'copies it from one sheet to another
Next k

End Sub

在我第一次运行 Clear / ClearContents 功能之前,这非常有效。在第一个版本中,这个范围没有被清除并且工作正常。然后我第一次运行带有 Clear 功能的宏,从那时起“粘贴”功能根本不起作用 - 无论 Clear / ClearContents 功能是否被注释。

你知道问题是什么吗? 感谢您的支持。

【问题讨论】:

当您运行它时,哪个工作表处于活动状态? 第一个——“导入” 始终参考Cells 的工作表,例如Sheets("Import").Cells,否则可能会失败。还有Dim CopyData As LongDataLength 也应声明为 Long • 我建议始终激活 Option Explicit:在 VBA 编辑器中转到 ToolsOptions@987654321 @。 • 请说出CopyDataDataLength 的值吗? 谢谢。顺便说一句 - 在我第一次运行 Clear / ClearContents 功能之前,这非常有效。 本例中的 DataLength 是 3713(但它可以达到最大 ~8000)。 CopyData 在此示例中为 10,但可以达到 ~3000。目的是删除不相关的数据,这些数据通常位于 csv 文件的第一部分。 【参考方案1】:

用户 PEH 解决了这个问题。问题出在带行的工作表上

Sheets("Import").Range(Cells(CopyData + 1, 2), Cells(DataLength, 7)).Copy Sheets("TIs").Range("A2")     'copies it from one sheet to another

正确的版本是:

Sheets("Import").Range(Sheets("Import").Cells(CopyData + 1, 2), Sheets("Import").Cells(DataLength, 7)).Copy Sheets("TIs").Range("A2")     'copies it from one sheet to another

【讨论】:

以上是关于VBA:粘贴范围清除后粘贴功能导致1004错误的主要内容,如果未能解决你的问题,请参考以下文章

无法粘贴 - Excel VBA

在vba中粘贴特殊

vba粘贴不起作用

错误处理中的 Excel VBA 运行时错误 1004

使用 Range 类在 VBA 中创建宏时出现运行时错误 1004

用于将数据粘贴到新表行中的 VBA 宏 - Excel