【发布时间】: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 Long。DataLength也应声明为Long• 我建议始终激活Option Explicit:在 VBA 编辑器中转到 Tools › Options › @987654321 @。 • 请说出CopyData和DataLength的值吗? -
谢谢。顺便说一句 - 在我第一次运行 Clear / ClearContents 功能之前,这非常有效。
-
本例中的 DataLength 是 3713(但它可以达到最大 ~8000)。 CopyData 在此示例中为 10,但可以达到 ~3000。目的是删除不相关的数据,这些数据通常位于 csv 文件的第一部分。